query example dynamodb aws python amazon-ec2 boto3

python - example - install boto3



¿Cómo SSH y ejecuta comandos en EC2 usando boto3? (5)

Este hilo es un poco viejo, pero como he pasado una tarde frustrante descubriendo una solución simple, también podría compartirla.

NB Esta no es una respuesta estricta a la pregunta del OP, ya que no usa ssh. Pero, un punto de boto3 es que no tienes que hacerlo, así que creo que en la mayoría de las circunstancias esta sería la forma preferida de alcanzar el objetivo del PO, ya que él / ella puede usar su configuración existente de boto3 trivialmente.

El comando de ejecución de AWS está integrado en botocore (así que esto debería aplicarse tanto a boto como a boto3, hasta donde yo sé), pero descargo de responsabilidad: solo lo he probado con boto3 .

def execute_commands_on_linux_instances(client, commands, instance_ids): """Runs commands on remote linux instances :param client: a boto/boto3 ssm client :param commands: a list of strings, each one a command to execute on the instances :param instance_ids: a list of instance_id strings, of the instances on which to execute the command :return: the response from the send_command function (check the boto3 docs for ssm client.send_command() ) """ resp = client.send_command( DocumentName="AWS-RunShellScript", # One of AWS'' preconfigured documents Parameters={''commands'': commands}, InstanceIds=instance_ids, ) return resp # Example use: ssm_client = boto3.client(''ssm'') # Need your credentials here commands = [''echo "hello world"''] instance_ids = [''an_instance_id_string''] execute_commands_on_linux_instances(ssm_client, commands, instance_ids)

Para los comandos de PowerShell de instancia de Windows usarías una opción alternativa:

DocumentName="AWS-RunPowerShellScript",

Quiero poder entrar en una instancia de EC2 y ejecutar algunos comandos de shell en ella, así.

¿Cómo lo hago en boto3?


Boto proporcionó una forma de SSH en las instancias EC2 mediante el uso de Paramiko programáticamente y luego ejecutar comandos. Boto3 no incluye esta funcionalidad. Probablemente puedas modificar el código boto para trabajar con boto3 sin una gran cantidad de esfuerzo. O podría considerar el uso de algo como fabric o ansible, que proporcionan una forma mucho más poderosa de ejecutar remotamente comandos en instancias EC2.


No haces SSH desde Python. Puede usar el módulo boto3 para interactuar con la instancia de EC2.

Aquí tienes una documentación completa de boto3 y qué comandos puedes ejecutar con ella.


Puede usar el siguiente fragmento de código para enviar ssh a una instancia de EC2 y ejecutar algún comando desde boto3.

import boto3 import botocore import paramiko key = paramiko.RSAKey.from_private_key_file(path/to/mykey.pem) client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # Connect/ssh to an instance try: # Here ''ubuntu'' is user name and ''instance_ip'' is public IP of EC2 client.connect(hostname=instance_ip, username="ubuntu", pkey=key) # Execute a command(cmd) after connecting/ssh to an instance stdin, stdout, stderr = client.exec_command(cmd) print stdout.read() # close the client connection once the job is done client.close() break except Exception, e: print e


use boto3 para descubrir instancias y fabric para ejecutar comandos en las instancias