Según el artículo de noticias New EC2 Run Command , AWS CLI debería admitir un nuevo subcomando para ejecutar scripts en instancias remotas de EC2.
Sin embargo, me he registrado aws ec2 help
, pero no puedo encontrar el comando relevante.
Lo he instalado a aws
través de apt-get
:
$ aws --version
aws-cli/1.14.32 Python/3.5.4 Linux/4.12.7-64 botocore/1.8.36
¿Qué subcomando debo buscar y cuál es la sintaxis para ejecutar, digamos ipconfig
en PowerShell en la instancia remota de EC2?
amazon-ec2
aws-cli
kenorb
fuente
fuente
Respuestas:
Para ejecutar ipconfig desde el comando de ejecución de AWS Systems Manager:
Nota: Si tiene el error, considere especificar el correcto
--region
.Esto supone que tiene sus credenciales de AWS y su CLI configuradas correctamente. Consulte Tutorial de ejecución de comandos de Systems Manager con la AWS CLI para obtener más información.
Aquí está el ejemplo práctico de comando de shell para enviar y obtener la salida del comando:
fuente
Aquí hay un script de ayuda Bash que se utiliza
aws ssm send-command
para ejecutar los comandos:Uso:
Ejemplo:
Para ejecutar salidas más grandes, consulte: ¿Cómo evitar que la salida se trunca al ejecutar el comando AWS SSM?
fuente
Sí, puede hacerlo con el administrador de sistemas de AWS. AWS Systems Manager Run Command le permite ejecutar de forma remota y segura un conjunto de comandos en EC2 y en el servidor local. A continuación hay pasos de alto nivel para lograr esto.
Adjuntar rol IAM de instancia: la instancia ec2 debe tener rol IAM con la política AmazonSSMFullAccess. Este rol permite que la instancia se comunique con la API de Systems Manager.
Instalar el agente SSM: la instancia EC2 debe tener un agente SSM instalado. El agente SSM procesa las solicitudes de comando de ejecución y configura la instancia según el comando.
Comando de ejecución: Ejemplo de uso a través de AWS CLI:
Ejecute el siguiente comando para recuperar los servicios que se ejecutan en la instancia. Reemplace ID de instancia con ID de instancia ec2.
Información más detallada: aquí
fuente
¡Aquí hay algo súper genial que hago con AWS SSM Send-Command!
Usando Apache Airflow, creo una nueva instancia EC2 usando una plantilla de formación en la nube (o CFT para abreviar) que es solo un archivo JSON con todos los valores de configuración para mi instancia EC2 que quiero; También tenga en cuenta que en este CFT también tengo un comando de arranque que copia un script de Python desde una ubicación S3 a la nueva instancia EC2 para que pueda ejecutarlo más tarde usando un comando de envío SSM. Hago esto usando Python3 y el SDK de AWS para Python3 llamado la biblioteca Boto3. Aquí está parte del comando para crear la nueva pila CFT que a su vez crea mi nueva instancia EC2:
Entonces puedo obtener la ID de instancia de la nueva instancia EC2 (requerida para usar SSM Send-Command) usando algo como esto:
Luego puedo obtener la ID de instancia de la instancia EC2 del servidor del trabajador de flujo de aire actual ejecutando este comando a
wget -q -O - http://169.254.169.254/latest/meta-data/instance-id
través de Python:¡¡¡¡AHORA!!!! PARA LA GRAN FINAL
Luego puedo ejecutar una secuencia de comandos en la nueva instancia EC2 que creé y enviar esa secuencia de comandos cualquier parámetro / argumento que desee ... incluyendo el ID de instancia del servidor que envió el comando de envío SSM para que así cuando termine mi secuencia de comandos ejecutándose en la nueva instancia EC2, puede enviar otro comando de envío SSM a mi servidor Airflow para indicarle que el script ha finalizado. Esto está en un nivel muy alto sin detalles, pero es solo para demostrar una idea :)
No estoy seguro de si esto ayudó a alguien, ¡pero es un ejemplo divertido y divertido de hacer algo con el comando de envío de AWS SSM! Aunque, probablemente un código de olor xD
fuente