资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

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

这篇文章主要介绍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发送命令远程执行脚本”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


分享名称:AWS如何向EC2发送命令远程执行脚本
链接URL:http://cdkjz.cn/article/gcgood.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220