宝途的EC2实例执行shell命令(Boto Execute shell command on ec

2019-07-21 23:49发布

我是新手,EC2和博托。 我有一个EC2运行实例,我想执行例如像一个shell命令apt-get update通过博托。

我搜索了很多,发现使用的解决方案user_data在run_instances命令,但如果实例已经启动呢?

我甚至不知道这是否是可能的。 在此引用的任何线索将是一个很大的帮助。

Answer 1:

该boto.manage.cmdshell模块可以用来做这个。 要使用它,您必须安装的paramiko包。 它的一个简单的例子是使用:

import boto.ec2
from boto.manage.cmdshell import sshclient_from_instance

# Connect to your region of choice
conn = boto.ec2.connect_to_region('us-west-2')

# Find the instance object related to my instanceId
instance = conn.get_all_instances(['i-12345678'])[0].instances[0]

# Create an SSH client for our instance
#    key_path is the path to the SSH private key associated with instance
#    user_name is the user to login as on the instance (e.g. ubuntu, ec2-user, etc.)
ssh_client = sshclient_from_instance(instance,
                                     '<path to SSH keyfile>',
                                     user_name='ec2-user')
# Run the command. Returns a tuple consisting of:
#    The integer status of the command
#    A string containing the output of the command
#    A string containing the stderr output of the command
status, stdout, stderr = ssh_client.run('ls -al')

这是从内存类型,但我认为这是正确的。

你也可以检查出布( http://docs.fabfile.org/ ),它具有类似的功能,但也有更复杂的特性和功能。



Answer 2:

我想你可以用面料为您的要求。 刚检查布料包装一次。 您可以通过库布上执行远程服务器shell命令。

这是非常容易使用,你可以整合这两个博托和织物。 他们一起工作的辉煌。

加相同的命令可以被执行以节点的n个。 我相信这可能是你的要求

刚检查出来。



Answer 3:

是的,你可以使用AWS系统管理员做到这一点。 AWS系统管理器运行命令可以让你安全地远程运行设置EC2的命令,以及内部部署服务器。 下面是高级别步骤来实现这一目标。

安装实例IAM角色:EC2实例必须有政策AmazonSSMFullAccess IAM角色。 该角色可以与实例与系统管理器API进行通信。

安装SSM代理:EC2实例上必须安装SSM代理。 该SSM代理进程运行命令请求和配置实例作为每个命令。

经由AWS CLI实例:执行命令:

执行以下命令来获取实例上运行的服务。 与EC2实例ID替换实例-ID。

aws ssm send-command --document-name "AWS-RunShellScript" --comment "listing services" --instance-ids "Instance-ID" --parameters commands="service --status-all" --region us-west-2 --output text

更详细的信息: https://www.justdocloud.com/2018/04/01/run-commands-remotely-ec2-instances/



文章来源: Boto Execute shell command on ec2 instance