Cómo utilizar la AWS CLI para ejecutar sus servicios en la nube directamente desde su teclado, no se requiere GUI

Apuesto a que ya tiene algunas cosas ejecutándose en AWS y lo hizo posible usando la consola del navegador. Pero también apuesto a que ya sospecha que hacer clic en las capas y capas de las páginas de configuración no siempre será el mejor enfoque. De hecho, la AWS CLI es una forma mejor de realizar exactamente el mismo trabajo, pero con mucho menos esfuerzo.

Uso de contenido adaptado de mi curso Pluralsight: Automatización de operaciones de AWS con la AWS CLI , permítame demostrarlo rápidamente. Suponga que desea lanzar una instancia de Amazon Linux desde EC2. Para ponerlo en funcionamiento, necesitará ...

  • Cargar la página del panel de EC2
  • Haga clic en Iniciar instancia
  • Seleccione una AMI de la página AMI
  • Seleccione un tipo de instancia de la página Tipo de instancia
  • Establezca la configuración de red, IAM, comportamiento del ciclo de vida y datos de usuario en la página Configurar detalles de instancia
  • Seleccione uno o más volúmenes de almacenamiento en la página Agregar almacenamiento
  • Agregar etiquetas en la página Agregar etiquetas
  • Seleccione o configure un grupo de seguridad en la - espere - página Configurar grupo de seguridad
  • Y finalmente revise e inicie su instancia en la página denominada (¿qué más?) Revisión y lanzamiento

Y no olvide hacer clic en la ventana emergente donde confirmará su par de claves y luego volver al panel de instancias EC2 para obtener los datos de su instancia (como direcciones IP).

¿Te parece divertido? ¿Te parecerá divertido seguir trabajando con una conexión a Internet lenta? ¿Y si necesita realizar variaciones de este proceso media docena de veces por semana?

¿Quiere ver cómo activaría esa configuración utilizando la AWS CLI desde un shell Bash (que puede ejecutar en Linux, macOS y ahora incluso en Windows 10)? Tenga en cuenta cómo utilicé barras diagonales inversas para decirle a Bash que el comando aún no está completo. Al presionar Enter, todo el lío se pone en marcha.

aws ec2 run-instances --image-id ami-04681a1dbd79675a5 \ --count 1 \ --instance-type r5d.large \ --key-name MyKeyPair \ --security-group-ids sg-007e43f80a1758f29 \ --subnet-id subnet-970ec9f0 \ --user-data file://my_script.sh \ --tag-specifications \ ‘ResourceType=instance,Tags=[{Key=backend,Value=inventory1}]’

Ese comando preciso no funcionará para usted si simplemente lo pega en su terminal y lo ejecuta. El grupo de seguridad y los ID de subred son específicos de mi cuenta, y probablemente no tenga un par de claves llamado MyKeyPair o un archivo de script llamado my_script.sh. Pero eso le muestra que, una vez que haya realizado una investigación básica inicial para obtener todos los valores correctos y haya confirmado que funciona, podrá guardar el comando en un archivo de script que puede modificar y ejecutar cuando sea necesario. Esto puede reducir un proceso de cinco minutos a un par de segundos.

El mejor lugar para obtener instrucciones de instalación de CLI actualizadas para su sistema operativo es esta página de documentación de AWS. Normalmente, su mejor apuesta será el enfoque del administrador de paquetes de Python utilizando PIP.

Configurar su CLI para acceder de forma segura y administrar los recursos de su cuenta de AWS es bastante sencillo. Aunque primero deberá generar (y copiar / registrar) una clave de acceso para su usuario de AWS desde el enlace Mis credenciales de seguridad en el menú desplegable de la cuenta en la consola. Cuando termine, simplemente escriba "aws configure" en el símbolo del sistema e ingrese el ID de la clave de acceso y la Clave de acceso secreta que obtuvo de My Security Credentials. Opcionalmente, puede elegir la región predeterminada y los valores de formato de salida.

[email protected]:~$ aws configure AWS Access Key ID [****************KB2Q]: AWS Secret Access Key [****************W/Cu]: Default region name [us-east-1]: Default output format [text]: [email protected]:~$

Patrones de sintaxis de la AWS CLI

Ahora está todo listo para comenzar. Comencemos por dividir la sintaxis del comando en sus partes componentes e ilustrar cómo funciona todo usando ejemplos prácticos. Después del prefijo del comando aws, un comando CLI se compone de opciones (que, como sugiere el nombre, son opcionales), comandos , subcomandos y parámetros .

aws [options]   [parameters]

Este ejemplo devolverá todas las imágenes de EC2 AMI mantenidas oficialmente por Amazon que ejecutan el sistema operativo CentOS Linux.

aws --output table ec2 describe-images \ --filters “Name=description,Values=*CentOS*” \ “Name=owner-alias,Values=amazon”

Utiliza la opción de salida , dándole el valor de " tabla " para mostrar la salida de texto en tablas. El comando de nivel superior aquí es ec2. La mayoría, si no todos, los comandos de nivel superior invocarán servicios de AWS específicos. s3, iam y dynamodb son otros ejemplos.

El subcomando es describe-images , que devolverá datos relacionados con todas las imágenes de máquinas de Amazon disponibles actualmente para usar en sus instancias EC2. Eso devolvería una gran cantidad de datos, ya que hay muchos cientos de AMI y cada uno de ellos está representado por una gran cantidad de metadatos. Por lo tanto, querrá limitar la búsqueda un poco. Para eso, proporcioné dos valores para el parámetro - filtros: la descripción de la imagen debe contener la palabra CentOS  , en mayúsculas las c, oys, ya que esto distingue entre mayúsculas y minúsculas, y el valor del alias del propietario debe ser igual a amazon .

A menudo, ejecutará subcomandos basados ​​en descripciones para obtener ID de recursos importantes que luego podrá conectar a sus comandos de acción reales. Esa ID de imagen de CentOS normalmente se usaría como parte de un comando de ejecución de instancias de ec2 para lanzar realmente una instancia.

Además de describir y ejecutar, otros subcomandos comunes comenzarán con verbos como crear, eliminar, habilitar, deshabilitar, modificar, solicitar, detener y terminar.

Las opciones incluyen región , salida y perfil  , que ya ha visto, además de ejecución en seco , que no hará nada, sino que mostrará la salida que generaría su comando si realmente se ejecutara. Esto puede resultar muy útil cuando no está seguro de tener la sintaxis correcta. Intentemos ejecutar el comando de instancias de ejecución ec2 desde arriba, pero esta vez agregando ejecución en seco .

Ejemplo de S3

Es hora de un poco de magia S3. Tengo una empresa que necesita un sitio web simple sin ningún acceso a la base de datos o javascript. Solo un poco de bondad HTML5 normal y corriente. Así que voy a crear, configurar cuidadosamente y poblar mi depósito para que funcione como un sitio web estático o, en otras palabras, para que el tráfico entrante se dirija automáticamente al archivo index.html que he creado. .

Aunque no jugará ningún papel en esta demostración, eventualmente querré configurar un nombre de dominio .com en la Ruta 53 de Amazon que apunte al sitio, así que necesitaré crear un bucket de S3 con exactamente eso. nombre - .com y todo. Hago un cubo usando mb y un nombre de cubo único a nivel mundial.

aws s3 mb s3://mysite548.com

El depósito deberá poder leerse públicamente, por lo que usaré s3api put-bucket-acl , junto con los parámetros bucket y acl . El último de ellos tomará el valor de lectura pública .

aws s3api put-bucket-acl --bucket mysite548.com --acl public-read

A continuación, usaré la sincronización s3 para mover todo el contenido de mi directorio local actual a mi depósito. He creado tres archivos: index.html es la página web predeterminada y error.html será la página que se cargará cuando se solicite un recurso inexistente. También hay una pequeña imagen para ayudar a embellecer la demostración. El parámetro acl public-read otorgará a los archivos los mismos permisos que el depósito.

aws s3 sync . s3://mysite548.com --acl public-read

Finally, I’ll define the purpose of those html files for S3 using “s3 website”. The index-document and error-document parameters simply point to the relevant files. You don’t need to use those specific filenames, by the way, that’s just me. I’ll confirm that operation using s3api get-bucket-website.

aws s3 website s3://mysite548.com/ --index-document index.html --error-document error.html aws s3api get-bucket-website --bucket mysite548.com

What’s Next?

The command syntax of the AWS CLI is fairly intuitive. Nevertheless, you will often need help getting it exactly right. As I show in the Pluralsight course, you can get excellent guidance from the help system at the command line, or from the AWS online documentation. My Learn Amazon Web Services in a Month of Lunches book also contains useful guidance and examples.

This article is an excerpt adapted from my new Pluralsight course, Automating AWS Operations with the AWS CLI.