Cómo administrar instancias EC2 de AWS a través de la interfaz de línea de comandos de AWS
AWS proporciona una cómoda interfaz web llamada Consola de administración de AWS. Puede utilizar esta consola para realizar todas las operaciones necesarias en la nube de AWS. Sin embargo, realizar muchas operaciones idénticas en la interfaz web puede resultar repetitivo y llevar mucho tiempo. En este caso, puede utilizar la CLI de AWS para automatizar las tareas de administración de AWS y realizar operaciones masivas. Esta entrada de blog cubre la instalación de AWS CLI y los conceptos básicos de uso de esta herramienta. El post también se centra en AWS CLI EC2 comandos ilustrados con ejemplos.
Qué es AWS CLI
Amazon Web Services Command Line Interface (AWS CLI) es una herramienta de línea de comandos de código abierto para la gestión de entornos en la nube de Amazon. Esta herramienta funciona mediante la integración con el shell de línea de comandos del sistema operativo en el que está instalada la CLI de AWS. Puede administrar instancias AWS EC2 con comandos AWS EC2, así como administrar volúmenes EBS, buckets S3 y otros servicios de Amazon.
La CLI de AWS se ejecuta en un shell de línea de comandos de Linux, un terminal de macOS, un símbolo del sistema de Windows (CMD) y PowerShell. Esta CLI le permite crear scripts y automatizar sus tareas.
Existen dos versiones principales de AWS CLI:
- AWS CLI versión 1 es la versión antigua disponible para compatibilidad con versiones anteriores. Esta versión es compatible, pero es posible que las nuevas funciones no estén disponibles.
- AWS CLI versión 2 es la última versión que soporta todas las funciones disponibles de AWS. Se recomienda instalar la última versión.
Ambas versiones utilizan el mismo comando aws para ejecutar AWS CLI. Sin embargo, hay cambios que pueden hacer que no sea posible utilizar scripts hechos para AWS CLI v1 en AWS CLI v2.
Requisitos
Veamos ahora los requisitos que debes cumplir para utilizar AWS CLI.
Requisitos generales
- Necesita tener una cuenta de AWS y claves de acceso de AWS (AWS Access Key ID y AWS Secret Access Key).
- Se debe instalar Python 2 versión 2.6.5+ o Python 3 versión 3.3+. AWS CLI v2 tiene una copia incrustada de Python, y no necesitas instalar Python manualmente para instalar AWS CLI v2.
Linux
- Una herramienta para extraer archivos zip
- glibc, groff y less deben estar instalados
Windows
- Windows XP o posterior
- Derechos de administrador en el equipo Windows
macOS
- Versión de macOS de 64 bits compatible con Apple
Instalación
Debe instalar AWS CLI antes de poder ejecutar comandos para administrar instancias de AWS EC2 y otros servicios de Amazon. Veamos cómo instalar la versión 2 de AWS CLI en diferentes sistemas operativos.
Instalación de AWS CLI en Linux
Existen tres métodos para instalar AWS CLI en Linux:
- Utilizando el instalador del paquete (el método oficial)
- Uso de los repositorios de software de Linux
- Instalación de AWS CLI como módulo de Python
Amazon recomienda utilizar el método oficial para instalar AWS CLI. En este caso, siempre obtendrá la última versión del software. Estoy usando Ubuntu 20 en este flujo de trabajo.
Utilizar el archivo de instalación oficial
Este es el método preferido para instalar AWS CLI. Proceda como sigue:
- Instala curl:
apt-get install curl
- Descargue el archivo de instalación de la CLI de AWS:
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
- Extraiga los archivos de instalación del archivo descargado:
unzip awscliv2.zip
- Ejecute el instalador con privilegios de root:
sudo ./aws/install
- Una vez finalizada la instalación, comprueba la versión de la herramienta CLI de AWS instalada para asegurarte de que se ha instalado correctamente:
aws --version
Uso de los repositorios de software de Linux
AWS CLI está disponible en repositorios de software oficiales para Ubuntu. Proceda del siguiente modo:
1. Actualiza el árbol de repositorios:
sudo apt-get update
2. Instalar AWS CLI con un gestor de paquetes desde los repositorios de software de Linux:
sudo apt-get install awscli
3. Compruebe que AWS CLI se ha instalado correctamente:
aws --version
Instalación con Python PIP
Puede instalar AWS CLI como un módulo de Python utilizando un gestor de paquetes PIP de Python. Tenga en cuenta que Python PIP no está instalado por defecto en Ubuntu. Proceda de la siguiente manera para instalar como módulo Python:
1. Primero debe instalar Python PIP.
- Para Python 2.x:
sudo apt-get install python-pip
- Para Python 3.x:
sudo apt-get install python3-pip
2. Instala AWS CLI usando Python PIP.
- Usando Python 2.x PIP:
pip install awscli --upgrade --user
- Usando Python 3.x PIP:
pip3 install awscli --upgrade --user
3. Compruebe la versión instalada.
- En Python 2.x:
python -m awscli --version
- En Python 3.x:
python3 -m awscli --version
Nota: Si utiliza AWS CLI instalado con Python PIP, los comandos que debe utilizar difieren del comando aws main estándar utilizado para una versión empaquetada de AWS CLI:
- Versión empaquetada:
aws
- Módulo para Python 2:
python -m awscli
- Módulo para Python 3:
python3 -m awscli
Instalación de AWS CLI en Windows
Para instalar la CLI de AWS en Windows, es necesario descargar el instalador, instalar la CLI de AWS y realizar la configuración posterior a la instalación en Windows.
Descargar el instalador
Descarga el instalador de la CLI de AWS de 64 bits utilizando uno de los siguientes enlaces y guarda el archivo en una ubicación personalizada, por ejemplo, C:\temp\
- El instalador de 64 bits está disponible en AWS: https://awscli.amazonaws.com/AWSCLIV2.msi
- El instalador de 32 bits está disponible en este enlace: https://s3.amazonaws.com/aws-cli/AWSCLI32PY3.msi
- El archivo de instalación universal está disponible aquí: https://s3.amazonaws.com/aws-cli/AWSCLISetup.exe
En este ejemplo uso Windows Server 2016 y descargo el archivo AWSCLIV2.msi.
Puede descargar el archivo de instalación en PowerShell con el comando:
Invoke-WebRequest -Uri https://awscli.amazonaws.com/AWSCLIV2.msi -OutFile "C:\temp\AWSCLIV2.msi"
Iniciar el instalador
Ejecute el archivo AWSCLIV2.msi descargado.
Si utiliza PowerShell, tenga en cuenta que la ubicación del archivo .msi(C:\temp\ en mi caso) y ejecute el comando:
C:\temp\AWSCLIV2.msi
Siga los pasos del asistente de instalación. Puede utilizar los ajustes predeterminados para la instalación. El proceso de instalación es sencillo, por lo que no repasaré cada paso del asistente.
Si intenta ejecutar el comando aws --version
para comprobar si AWS CLI se ha instalado correctamente, puede obtener un error. Esto se debe a que no hay ninguna entrada relacionada con la herramienta AWS CLI en la variable de entorno PATH. Ahora puedes cambiar el directorio al directorio en el que está instalado AWS CLI(C:\Program Files\Amazon\AWSCLIV2 por defecto) y ejecutar AWS CLI manualmente.
cd "C:\Program Files\Amazon\AWSCLIV2"
.\aws --version
Configurar PATH
Añade la entrada a la variable PATH porque cambiar el directorio en la línea de comandos manualmente cada vez que necesites ejecutar comandos de la CLI de AWS no es conveniente.
Uso de la interfaz gráfica de Windows
1. Abra el Panel de control > Sistema > Ajustes avanzados del sistema y, en la pestaña Avanzadas de la ventana Propiedades del sistema, haga clic en Variables de entorno.
2. En la ventana Variables de entorno, seleccione la variable PATH y haga clic en Editar. Tenga en cuenta que existen opciones para editar las variables de Usuario para el Administrador y las variables de Sistema.
3. En la ventana Editar variable de entorno, haga clic en Nueva.
4. Especifique la ruta del directorio donde está instalada la CLI de AWS y pulse Intro. En mi caso, este directorio es «C:Archivos de programa AmazonWSCLIV2».
5. Pulsa OK para guardar los ajustes y cerrar las ventanas.
Nota: es posible que tenga que volver a abrir la ventana de la consola (PowerShell o CMD) para que los cambios surtan efecto.
Uso de PowerShell
También puede editar variables de entorno en PowerShell. Siga estos pasos para añadir un valor a la variable PATH en PowerShell.
1. 1. Capture el valor del PATH original que desea modificar:
$oldpath = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
2. Defina la nueva RUTA añadiendo el valor necesario. En mi caso, el valor que necesito añadir es la ruta al directorio CLI de AWS. El carácter punto y coma (;) se utiliza como separador entre valores de ruta en la variable PATH.
$newpath = "$oldpath;C:\Program Files\Amazon\AWSCLIV2"
3. Aplique el valor al Registro de Windows para que los cambios sean permanentes:
Set-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
4. Compruebe si la nueva configuración de PATH es correcta:
Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH
o
(Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
Utilizar Chocolatey
Como alternativa a la descarga y ejecución del archivo de instalación MSI, puede instalar la CLI de AWS con Chocolatey, que es una herramienta de administración de software de Windows que se ejecuta en PowerShell. Chocolatey es compatible con la instalación de aplicaciones desde repositorios en línea de Windows. Ejecute este comando para instalar AWS CLI:
choco install awscli
Comprobar los resultados de la instalación
Ahora puedes ejecutar el comando aws
(y los comandos relacionados de AWS EC2) desde cualquier directorio en PowerShell.
aws --version
Nota: Si tiene la versión 1 de AWS CLI y la versión 2 de AWS CLI instaladas en su sistema operativo, este ejecuta la primera establecida en la variable PATH.
Instalación de AWS CLI en macOS
Realice los siguientes pasos para instalar AWS CLI en macOS.
Vaya al directorio /tmp/, que se utilizará para almacenar los archivos descargados:
cd /tmp
Método 1
- Descargue el archivo de instalación:
curl -o awscli.zip https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
- Extraiga el contenido del archivo zip descargado:
unzip awscli.zip
- Instalar AWS CLI:
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws
Método 2
- Descargue el paquete de instalación:
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
- Ejecute el instalador:
sudo installer -pkg AWSCLIV2.pkg -target /
- Puede ejecutar el siguiente comando para asegurarse de que AWS CLI se ha instalado correctamente:
aws --version
Configuración inicial de la CLI de AWS
Ahora debe especificar las credenciales de AWS y configurar la región y los parámetros de salida. Ejecute el siguiente comando para configurar AWS CLI. La sintaxis de los comandos de la CLI de AWS es la misma en Linux, Windows y macOS. En mi ejemplo, estoy usando Ubuntu Linux.
aws configure
Especifique cuatro parámetros (los dos primeros son obligatorios):
- AWS Access Key ID, que es una cadena alfanumérica de 20 caracteres. Las letras son mayúsculas.
- Clave de acceso secreta de AWS, que es una cadena alfanumérica de 40 caracteres como un hash.
- Nombre de la región por defecto. Seleccione este parámetro si no necesita especificar una región explícitamente cada vez que ejecute comandos en la CLI de AWS. Si necesita utilizar una región distinta de la predeterminada, puede especificar manualmente la región necesaria en un comando. Utilice
--region <region_name>
para este fin. - Formato de salida por defecto. Hay tres opciones:
json, text, table, yaml, yaml-stream
. Por defecto se utiliza JSON (JavaScript Object Notation). Puede seleccionar el formato necesario al ejecutar un comando concreto utilizando--output <output-format>
.
Los archivos de configuración de la CLI de AWS se guardan en el directorio de inicio. Puede comprobar estos archivos con el comando
ls -l ~/.aws
Los ajustes de región y salida se almacenan en el archivo config. Las credenciales (AWS Access Key ID y AWS Secret Access Key) se almacenan en el archivo de credenciales.
Uso general y consejos
Vamos a familiarizarnos con las recomendaciones generales de uso y consejos para AWS CLI antes de pasar a los ejemplos prácticos de AWS CLI para EC2.
Estructura de comandos de la CLI de AWS
Puede componer un comando de la CLI de AWS de dos maneras: utilizando una línea o utilizando varias líneas.
Estructura regular
Una estructura de comandos normal supone que usted compone un comando como un comando de una sola línea.
aws [options and parameters]
Donde:
aws es el comando base para llamar al programa aws
es el comando de nivel superior que corresponde al servicio AWS apropiado, por ejemplo, EC2 o S3.
especifica la operación a realizar como obtener objeto, describir instancias, etc.
[options and parameters] especifica opciones y parámetros para la operación.
Estructura de comandos multilínea
A veces, utilizar una estructura de comandos de varias líneas puede resultar más cómodo si necesita especificar varias opciones y parámetros.
aws \
[options and parameters] \
[options and parameters]
El comando wait
Puede utilizar el comando wait
para pausar la ejecución de todo el comando y reanudar la operación cuando esté listo para ejecutarse y se cumplan todas las condiciones.
aws wait [options and parameters]
Ejemplo:
aws ec2 wait instance-status-ok \
--instance-ids i-1234567890abcdef0
Finalización de comandos
Activar la finalización de comandos. Completar comandos hace que la introducción de comandos sea más rápida y cómoda. Utilice este comando para activar el autocompletado en Linux:
complete -C '/usr/local/bin/aws_completer' aws
Compruebe que el autocompletado de comandos funciona:
aws s
[pulse Tab]
aws e
[pulse Tab]
Si el autocompletado funciona, un comando parcialmente introducido se completa automáticamente al pulsar Tab si es el único comando que empieza por los caracteres que ha tecleado. Si hay varios comandos que empiezan por los caracteres introducidos, todos estos comandos se muestran a continuación. Puede leer la lista de comandos disponibles y continuar introduciendo el comando necesario. A continuación, utilice la tecla Tab para completar el comando.
Filtros
Utilice filtros para mostrar sólo los datos necesarios. El filtrado se realiza en el lado del servidor de Amazon. Como resultado, se envían menos datos por la red y se obtienen los datos de salida más rápidamente. Los scripts, incluidos los comandos de AWS EC2 y los filtros de la CLI de AWS, funcionan más rápido.
AWS help
Utilice el comando help
para mostrar los comandos y opciones disponibles.
aws help
aws help
aws help
Análisis de JSON
Utilice jq
que es una utilidad ligera para procesar datos JSON.
jq es el análogo de sed para transformar el flujo de entrada pero para un formato JSON. Puede instalar jq como la herramienta de análisis JSON con el comando:
apt-get install jq
Por defecto, puede utilizar la opción incorporada --query
para analizar el JSON devuelto por el comando ejecutado.
Acceso a distancia
Puede conectarse a una máquina Linux en la que esté instalada AWS CLI mediante SSH y ejecutar comandos para administrar sus servicios en la nube de Amazon.
Comandos de AWS EC2 en la CLI de AWS
Ahora que ha instalado la CLI de AWS y está familiarizado con los consejos de la CLI de AWS, puede ejecutar comandos de la CLI de AWS EC2 para ver información sobre las instancias de AWS EC2 y administrarlas. Veamos ahora ejemplos prácticos para utilizar la interfaz de línea de comandos en AWS.
Describir las instancias AWS EC2
Puede utilizar los comandos de AWS EC2 en la CLI de AWS para describir los componentes de Amazon (obtener información sobre ellos) para su cuenta sin realizar ninguna acción con ellos. Los comandos de la CLI de AWS describen instancias help permite comprobar el estado de las instancias AWS EC2, los volúmenes EBS, las imágenes de máquina de Amazon y otros componentes. También puede utilizar las funciones de supervisión.
Ejemplo 1
Empecemos por este sencillo comando para mostrar información sobre las instancias existentes de Amazon EC2:
aws ec2 describe-instancias
Este comando devuelve datos que describen todas las instancias AWS EC2 en la salida utilizando un formato JSON (porque hemos establecido JSON como formato predeterminado anteriormente). Como resultado, tenemos una gran variedad de datos, incluidos los metadatos. Esta salida no es práctica para que la lean los usuarios, pero sí para los scripts y las aplicaciones.
Pulse la tecla de flecha abajo para desplazarse por los datos de la ventana de la consola/terminal.
Pulsa q para salir del modo visor (de forma similar a cuando utilizas menos).
Ejemplo 2
Podemos mostrar la información completa sólo para una instancia utilizando el ID de instancia con el comando:
aws ec2 describir-instancias \
--instance-ids i-0201020e110607121
Ejemplo 3
Ahora vamos a comprobar los ID de instancia, sus nombres y el estado de todas las instancias disponibles en nuestra región. Podemos mostrar sólo los datos necesarios con el comando usando los filtros de la CLI de AWS y la opción --query
opción. Este ejemplo de filtros de la CLI de AWS contiene la opción --filter
que devuelve los datos filtrados solicitados. Utilizamos la opción --output text
para mostrar el resultado como texto.
aws ec2 describe-instances --filters "Name=tag:Name,Values=server*" --query "Reservations[].Instances[].[Tags[?Key=='Name'],InstanceId,State.Name]" --output text
En comparación con la salida sin filtrar, que contiene todos los datos disponibles para todas las instancias, la salida filtrada es más cómoda y puede ser leída por los usuarios.
Ejemplo 4
Ahora vamos a filtrar las instancias AWS EC2 una vez más y mostrar sólo las instancias con «Linux» en el nombre mediante el uso de un filtro de AWS CLI.
aws ec2 describe-instances --filters "Name=tag:Name,Values=server*" --query "Reservations[].Instances[].[Tags[?Key=='Name'],InstanceId,State.Name]" --output text
En la captura de pantalla de abajo, se ve la salida del comando después de usar el comando con el filtro de instancias EC2. He encontrado tres instancias Linux con NAKIVO Backup & Replication Transporter instalado. El Transporter es un componente para transferir datos al realizar backups de AWS y operaciones de recuperación ante desastres de AWS.
Ejemplo 5
Puede describir instancias de determinados tipos de instancia AWS EC2. En este ejemplo, ejecuto el comando para mostrar instancias del tipo t2.micro:
aws ec2 describe-instances \
--filters Name=instance-type,Values=t2.micro
Ejemplo 6
Utilice un filtro de instancias EC2 para mostrar sólo los ID de instancia.
aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query "Reservations[].Instances[].InstanceId"
Ejemplo 7
Como alternativa, puede utilizar la vista de tabla para los datos de salida añadiendo la opción --output table
opción. A continuación puedes ver el comando con un filtro CLI de AWS para mostrar el ID de instancia, nombre, estado y tipo de instancias AWS EC2 como una tabla.
aws ec2 describe-instances --output table --query "Reservations[].Instances[].{Name: Tags[?Key == 'Name'].Value | [0], Id: InstanceId, State: State.Name, Type: InstanceType}"
Ejemplo 8
Existe otro comando para mostrar los datos de salida (ID de instancia, tipo y nombre) para instancias AWS EC2 en una vista conveniente:
aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|.InstanceId+" "+.InstanceType+" "+(.Tags[] | select(.Key == "Name").Value)'
Ejemplo 9
Comprobar la dirección IP externa de una instancia en ejecución:
aws ec2 describe-instances --instance-ids i-0201020e110607121 --query "Reservations[].Instances[].PublicIpAddress"
Para comprobar las direcciones IP externas de varias instancias AWS EC2, defina ID de instancia para las instancias separándolas con un espacio.
Ejemplo 10
Comprueba las instancias detenidas y la razón por la que se ha detenido cada instancia con el comando que incluye el filtro de la CLI de AWS:
aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped
Hay un ejemplo alternativo:
aws ec2 describe-instances --filters Name=instance-state-name,Values=stopped --region eu-west-1 --output json | jq -r .Reservations[].Instances[].StateReason.Message
Ejemplo 11
Este es el comando para listar las instancias de Amazon EC2 en ejecución con más detalles, incluyendo el nombre de la instancia, la dirección IP privada, la dirección IP pública, el estado, el tipo y el VpcID como una tabla:
aws ec2 describe-instances --query "Reservations[*].Instances[*].{PublicIP:PublicIpAddress,PrivateIP:PrivateIpAddress,Name:Tags[?Key=='Name'] | [0].Value,Type:InstanceType,Status:State.Name,VpcId:VpcId}" --filters Name=instance-state-name,Values=running --output table
Iniciar instancias AWS EC2
Cuando conozca el ID de instancia, podrá iniciar la instancia de Amazon mediante los comandos de AWS EC2.
aws ec2 start-instances --instance-ids i-1a3b5c7d9ea0c1ef0
Puede iniciar varias instancias AWS EC2 utilizando el comando AWS EC2 start instances e introduciendo sus ID de instancia separados por espacios.
aws ec2 start-instances --instance-ids i-1a3b5c7d9ea0c1ef0 i-1a3b5c7d9ea0c1ef1 i-1a3b5c7d9ea0c1ef2
Detener instancias AWS EC2
Puede detener una o varias instancias AWS EC2. La sintaxis es similar a la del comando ec2 start-instances.
A continuación se muestra el comando de la CLI de AWS para detener una instancia:
aws ec2 stop-instances --instance-ids i-1a3b5c7d9ea0c1ef0
El comando de la CLI de AWS stop instance para varias (tres) instancias es el mismo, pero es necesario especificar varios ID de instancias de AWS EC2 separados por espacios:
aws ec2 start-instances --instance-ids i-1a3b5c7d9ea0c1ef0 i-1a3b5c7d9ea0c1ef1 i-1a3b5c7d9ea0c1ef2
Esta es la lista de posibles códigos de estado y nombres de estado en la salida:
0 – pendiente
16 – en ejecución
32 – apagándose
48 – terminado
64 – deteniéndose
80 – detenido
Reiniciar instancias AWS EC2
Con el comando aws ec2 reboot-instances puede reiniciar una o varias instancias AWS EC2. La lógica de uso de este comando es la misma que para los comandos AWS CLI start instance y AWS CLI stop instance. Este es el comando para reiniciar una instancia:
aws ec2 reboot-instances --instance-ids i-1a3b5c7d9ea0c1ef0
Este es el comando para reiniciar tres instancias:
aws ec2 reboot-instances --instance-ids i-1a3b5c7d9ea0c1ef0 i-1a3b5c7d9ea0c1ef1 i-1a3b5c7d9ea0c1ef2
Añadir etiquetas
Las etiquetas permiten clasificar las instancias AWS EC2 e identificarlas o encontrarlas con mayor comodidad. Veamos dos comandos de AWS EC2 para trabajar con etiquetas.
Ejecute este comando para añadir una etiqueta a la instancia definiendo el ID de la instancia:
aws ec2 create-tags --resources i-1a3b5c7d9ea0c1ef0 --tags Key=Department,Value=Marketing
A continuación, puede utilizar un comando para mostrar información sobre las instancias necesarias utilizando etiquetas:
aws ec2 describe-instances --filters "Name=tag-key,Values=Name"
Describir volúmenes EBS
Durante el funcionamiento de las instancias de Amazon EC2, es posible que necesite consultar información sobre los volúmenes EBS, adjuntar volúmenes a instancias EC2 y desacoplarlos. A continuación puedes ver algunos ejemplos de comandos de AWS EC2 para obtener información sobre volúmenes EBS.
Ejemplo 1
Este es un comando sencillo para describir volúmenes EBS y mostrar toda la información sobre los volúmenes existentes en tu cuenta de Amazon:
aws ec2 describe-volumes
Este comando es similar al comando AWS EC2 describe instances que usamos anteriormente. Podemos ver información detallada de todos los volúmenes disponibles en la salida. Pulse la flecha hacia abajo de su teclado para desplazarse hacia abajo y ver todos los datos. Buscar la información que necesita en este conjunto de datos no es cómodo. Utilice los filtros de la CLI de AWS para mostrar sólo los datos necesarios.
Ejemplo 2
Este es un ejemplo del comando EC2 de la CLI de AWS para mostrar los IDs de volumen de todos los volúmenes EBS:
aws ec2 describe-volumes --output table --query 'Volumes[*].VolumeId'
Ejemplo 3
Vamos a filtrar los Volume IDs de todos los volúmenes de Amazon EBS que se encuentren en estado adjunto:
aws ec2 describe-volumes \
--query Volumes[*].Attachments[?State==`attached`].VolumeId[]'
Puede utilizar la misma lógica para aplicar filtros al ejecutar comandos de la CLI de AWS para trabajar con volúmenes EBS y otros objetos de AWS.
Ejemplo 4
Puede que necesites ver volúmenes que no están adjuntos y que están en estado disponible. En este caso, utilice el comando:
aws ec2 describe-volumes --filters Name=status,Values=available --output table
Adjuntar volúmenes EBS a instancias AWS EC2
Después de obtener la información necesaria sobre las instancias AWS EC2 y los volúmenes EBS, puede adjuntar un volumen EBS a una instancia EC2 con el comando aws ec2 attach-volume
.
Utilice la opción --device
para especificar el nombre del disco utilizado por un sistema operativo invitado. En el siguiente ejemplo, utilizo el comando para adjuntar un volumen EBS como una unidad de disco identificada como /dev/sde en Linux huésped.
aws ec2 attach-volume --volume-id vol-0034567890abcdef0 --instance-id i-1a3b5c7d9ea0c1ef0 --device /dev/sde
Después de adjuntar el volumen EBS a la instancia EC2, el estado del volumen cambia de «Disponible» a «Adjunto».
Operaciones con instantáneas
Las instantáneas de volúmenes EBS permiten conservar el estado del volumen y volver a ese estado en caso necesario. Este es un ejemplo del comando para crear una instantánea de un volumen EBS:
aws ec2 create-snapshot --volume-id <your_volume_ID> --description 'Volume Snapshot for ATA Blog via the AWS CLI' --tag-specifications 'ResourceType=snapshot,Tags=[{Key=Name,Value=FileServer01},{Key=Purpose,Value=Enterprise File Storage}]'
Para mostrar los ID de instantáneas, utilice este comando:
ec2 describe-snapshots --owner self
Compruebe el estado de una instantánea con el comando:
aws ec2 describe-snapshots --snapshot-id <your_snapshot_ID>
Si el progreso de la instantánea es del 100% y el estado es «completed», la instantánea se ha creado correctamente.
Esta información le permite seleccionar la estrategia de protección de datos adecuada. Descargue el libro blanco para obtener más información.
Describir imágenes
De forma similar a los comandos de descripción de instancias y volúmenes de AWS EC2, puede utilizar un comando para describir imágenes de máquina de Amazon. Este es un simple comando EC2 de la CLI de AWS para ver información sobre las Imágenes de Máquina de Amazon (AMI):
aws ec2 describe-images
Puedes ver información sobre una imagen en particular:
aws ec2 describe-images --image-ids ami-0034567890abc4140
En base a la información mostrada puedes seleccionar la AMI necesaria para crear una nueva instancia de Amazon EC2.
Lanzar nuevas instancias EC2
Puede crear (ejecutar) una nueva instancia basada en la imagen necesaria utilizando los siguientes comandos EC2 de la CLI de AWS.
Primero necesitas generar claves:
aws ec2 create-key-pair --key-name MyKeyPair --output text > MyKeyPair.pem
Crea una nueva instancia de Amazon EC2 con el comando AWS EC2 run instances especificando una AMI, un tipo de instancia y un par de claves:
aws ec2 run-instances \
--image-id ami-0abcdef1234567890 \
--instance-type t2.micro \
--key-name MyKeyPair
Este es un ejemplo sencillo. Puede definir más opciones al crear una nueva instancia EC2 con el comando AWS EC2 run instances, entre las que se incluyen:
–subnet-id
–security-group-ids
–block-device-mappings
–tag-specifications
Eliminar instancias EC2
La práctica recomendada es eliminar las instancias AWS EC2 que no se hayan utilizado durante mucho tiempo para ahorrar costes. Ten cuidado porque no puedes recuperar una instancia EC2 dada de baja. Si no está seguro de si necesitará una instancia terminada más adelante, haga una copia de seguridad de la instancia EC2 con NAKIVO Backup & Replication en un repositorio de backups local o en Amazon S3.
Puede eliminar varias instancias especificando sus ID de instancia con el comando:
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0abcdef123456789a i-0abcdef123456789b
Conclusión
AWS CLI es una potente herramienta de línea de comandos que puede help automatizar la ejecución de un gran número de tareas similares. Los filtros de AWS EC2 le permiten configurar la salida y obtener solo los datos que necesita. Hay comandos para ver información sobre los servicios de Amazon y comandos para hacer cambios con ellos.
Para evitar errores humanos causados por una configuración incorrecta de los scripts creados con AWS CLI, se recomienda encarecidamente hacer backups de AWS EC2 con regularidad utilizando una solución dedicada de terceros.