Basta buscar AWS en el buscador para encontrar cientos de miles de artículos que hablen de sus bondades. Desde lo fácil que es desplegar recursos seleccionandolos desde su portal y avanzando entre sus menús. ¿Pero y si te digo que puedes automatizarlo todo desde PowerShell?
AWS tiene uno de los mejores ecosistemas de kits de herramientas de implementación de software (SDK) disponibles y eso significa que la capacidad de automatizar toda la plataforma en la nube con PowerShell posibilita realizar toda tarea imaginable. AWS PowerShell es una forma para que los desarrolladores y administradores ahorren tiempo evitando realizar repetitivas tareas que antes eran manuales para poder convertirlo todo en código listo para ser ejecutado.
AWS PowerShell es multiplataforma, podemos ejecutarlo en Windows, MacOS y Linux, lo que garantiza que podamos trabajar en cualquier entorno sin tener que portar nuestro código. ¿A qué suena bien?
Seguro que tras leer estas líneas ya estás corriendo a probar AWS PowerShell pero antes asegúrate de disponer de los siguientes requisitos:
Una cuenta de AWS. Si no tiene una, puede registrarse para obtener una cuenta de AWS de nivel gratuito.
Unas nociones básicas de PowerShell.
Comenzando por lo básico, el módulo AWS PowerShell fue creado por AWS en un esfuerzo por ayudar a los ingenieros a automatizar la creación, modificación y listado de servicios de AWS. Los cmdlets utilizan un flujo Verbo-Sustantivo estándar utilizado en PowerShell en otros de sus módulos.
Estos cmdlets hacen la “magia” de convertir nuestras instrucciones en las acciones backend necesarias para realizar consultas HTTP a los servicios de AWS usando llamadas a su API (GET, POST, etc.). El módulo de PowerShell se basa en la funcionalidad expuesta del AWS SDK para .NET Core, que es la forma en que el módulo de PowerShell es multiplataforma.
Ahora echemos un vistazo a un sencillo ejemplo de los cmdlets de PowerShell, por ejemplo de cómo iniciar una instancia EC2.
Start-EC2Instance -InstanceId i-12345678
Otro ejemplo; recibir un bucket de S3 en una cuenta de AWS:
Get-S3Bucket -BucketName testbucket
Como podemos ver, es fácil leer y entender qué estamos haciendo. Y esto que parece una tontería es muy de agradecer cuando pensemos en diseñar un script que realice complejas acciones por nosotros. Cuanto más fácil sea de leer y entender, más fácil será depurar nuestro código.
Para instalar el módulo PowerShell en Windows 10 o Windows 11, existen varios métodos pero el más común consiste en usar el cmdlet Install-Module:
Install-Module -Name AWS.Tools.Installer
Una vez instalado el módulo de herramientas de AWS, podemos ejecutar el siguiente cmdlet para instalar las herramientas específicas que deseamos utilizar en PowerShell.
Install-AWSToolsModule
Por ejemplo, si queremos instalar las herramientas de S3:
Install-AWSToolsModule AWS.Tools.S3
Ahora podemos proceder a identificar qué cmdlets están disponibles para administrar objetos y depósitos de AWS S3 (contenedores de almacenamiento). Podemos ver todos los cmdlets disponibles que proporciona Amazon. Además, desde PowerShell podemos ejecutar el siguiente comando para mostrar los cmdlets disponibles relacionados con el servicio S3:
Get-AWSCmdletName -Service S3
Ahora podemos agregar un nuevo perfil, pero antes necesitaremos una clave de acceso y una clave secreta para obtener acceso programático a AWS y autenticarnos. Desde el portal, accederemos a IAM Console y seleccionamos My Security Credentials para generar nuestras credenciales.
Es importante tomar nota de ambas partes de la clave de acceso de AWS: el ID de la clave de acceso y la clave de acceso secreta. ¡No podremos recuperar la información tras el cierre del cuadro de diálogo!
Ahora abrimos una ventana de PowerShell y ejecute el siguiente comando añadiendo nuestra clave de acceso y clave secreta:
Set-AWSCrednetial -AccessKey access_key_value -SecretKey -secret-key-value -StoreAs name_to_store_creds_as
Ahora que ya entendemos cómo instalar el módulo y autenticarnos en AWS mediante PowerShell, ya podemos comenzar a crear algunos recursos. Y a partir de aquí ya podemos echar a volar nuestra imaginación. Podemos crear recursos con una sola línea de PowerShell pero también podemos crear nuestras propias funciones avanzadas. En mi ejemplo vamos a ver cómo crear un Bucket S3 con AWS PowerShell:
New-S3Bucket -BucketName geeknewbucket -Region eu-west-2
Si abrimos un navegador web y vamos a AWS S3, ahora veremos el bucket S3 listado entre nuestros recursos. Pero seguro que te ha entrado el gusanillo y no quieres dejar de lado PowerShell. Para ello usaremos el siguiente comando:
Get-S3Bucket -BucketName geeknewbucket
Esto nos devolverá como resultado la descripción del recurso con sus características listadas.
Si te sigue picando el gusanillo en la web de AWS puedes encontrar una extensa documentación en donde poder consultar al detalle todas las posibilidades de AWS Powershell:
AWS Tools for PowerShell User Guide
AWS Tools for PowerShell Cmdlet Reference
AWS Tools for PowerShell User Guide [PDF]
La automatización de AWS con PowerShell puede ayudar a estandarizar el aprovisionamiento de nuevos recursos de AWS, apagar servidores durante períodos de inactividad conocidos, analizar su rendimiento, etc.
En este artículo hemos hecho una breve introducción para instalar y comenzar a usar el módulo AWS PowerShell para interactuar, crear y listar recursos en AWS. Esto es solo una muestra, las posibilidades son casi ilimitadas. Todo depende de hasta donde queramos llegar. Si te ha gustado este artículo no olvides dejar tu comentario y compartirlo en tus redes sociales. Más adelante iremos comentando detalles y trucos para utilizar a diario.