使用 boto 在 EC2 上运行 shell 命令?

使用 boto 在 EC2 上运行 shell 命令?

我正在尝试找到一种将 shell 命令传递给 Linux EC2 实例的方法。

基本上,我有一个脚本,它创建一个 EBS 卷,启动一个 CloudFormation 堆栈,然后将新卷附加到堆栈内的 EC2 实例。

我想要做的是将该卷作为该脚本的一部分进行格式化和挂载,但我似乎在那时遇到了障碍。

我的 Python 并不出色,但我已经设法完成了大部分工作,同时还学习了很多。我考虑过使用 Paramiko,但是我需要通过几个服务器建立隧道才能到达实例的子网。

# Attach an EBS volume to the EC2 Server instance
def attach_ebs(stack_id, results_volume):
    resources = cfn.list_stack_resources(stack_id)
    for r in resources:
        if r.resource_type == "AWS::EC2::Instance" and "Server" in r.logical_resource_id:
            ec2.attach_volume(results_volume, r.physical_resource_id, "/dev/sdh")

答案1

你可以使用python子进程模块在目标实例中通过 ssh 执行命令。

为了避免出现 jumphost 混乱,请考虑从具有正确 IAM 角色的 EC2 实例执行 Python 脚本。或者使用ssh-链

相关内容