温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

AWS如何向EC2发送命令远程执行脚本

发布时间:2021-11-08 10:01:03 来源:亿速云 阅读:337 作者:小新 栏目:云计算

这篇文章主要介绍AWS如何向EC2发送命令远程执行脚本,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

很多时候,我们会需要在 EC2 实例之外向实例发送命令,由实例来执行。AWS 给我们提供了这种服务,叫 Amazon EC2 Simple System Manager(SSM)。

我们需要在目标实例安装 SSM Agent 程序来通信。最好在实例的启动脚本里来做这件事:

yum update -q -y

REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | grep region | awk -F\\\" '{print $4}')
aws configure set default.region ${REGION}

function install_ssm_agent() {
    curl https://amazon-ssm-${REGION}.s3.amazonaws.com/latest/linux_amd64/amazon-ssm-agent.rpm -o /tmp/amazon-ssm-agent.rpm 2>/dev/null &&
    yum install -q -y /tmp/amazon-ssm-agent.rpm &&
    status amazon-ssm-agent || start amazon-ssm-agent
}

status amazon-ssm-agent || (start amazon-ssm-agent || install_ssm_agent)

你可能注意到我们从 169.254.169.254 获取地区(region)信息,这是怎么做到的?这是实例的动态数据。具体请参考 检索动态数据 和 检索实例元数据。

设置了 aws 的默认地区,是因为有些 aws-cli 命令必须指定区域方可执行。

注意,我们需要给 EC2 的 IAM 角色添加 AmazonEC2RoleforSSM 托管策略,使实例能够与 Run Command API 进行通信。给命令发送方的角色添加 AmazonSSMFullAccess 托管策略。具体请参考 配置访问权限。

配置完成,我们就能使用 AWS 的 EC2 控制台的系统管理器服务来发送命令,或者使用 aws-cli 或 AWS SDK 来做。

下面演示了发送“运行两条 Shell 脚本给实例 ${INSTANCE_ID} ”的命令:

待运行的命令:

aws s3 cp s3://bucket/key /tmp/myscript.sh
chmod +x /tmp/myscript.sh && /tmp/myscript.sh

使用 aws ssm send-command 命令来发送我们的命令:

aws ssm send-command \
    --document-name "AWS-RunShellScript" \
    --instance-ids ${INSTANCE_ID} \
    --parameters "{\"commands\": [\"aws s3 cp s3://bucket/key /tmp/myscript.sh\", \"chmod +x /tmp/myscript.sh && /tmp/myscript.sh\"]}"

我们可以检查命令的执行结果,可以从 EC2 控制台的系统管理器服务——命令历史记录查看,也可以使用编程方式来做。

能够看到 exit code 和输出,如果输出很长,建议通过指定 S3 地址,注意此时也需要提供 S3 的访问权限。

以上是“AWS如何向EC2发送命令远程执行脚本”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI