通过AWS CLI在EC2实例上运行脚本或命令

91次阅读
没有评论

问题描述

想要通过AWS CLI在远程的EC2实例上运行脚本或命令。根据一篇2015年的EC2 Run Command新闻文章,AWS CLI应该支持一个新的子命令来在远程的EC2实例上执行脚本。然而,用户在aws ec2 help中查找时,并未找到相关命令。他已经通过apt-get安装了aws

解决方案

请注意以下操作注意版本差异及修改前做好备份。

要在AWS Systems Manager Run Command中运行ipconfig命令,可以执行以下步骤:

  1. 使用AWS CLI发送命令:
aws ssm send-command --document-name "AWS-RunPowerShellScript" --instance-ids "<您的实例ID>" --parameters commands=ipconfig

这将在远程EC2实例上执行ipconfig命令。如果您遇到错误,请考虑指定正确的--region

确保您的EC2实例具有适当的IAM角色并安装了SSM Agent。您可以在使用AWS CLI进行Systems Manager Run Command演练中找到更多信息。

如果需要执行更复杂的操作,可以使用以下Shell脚本示例:

#!/bin/bash
# 替换为您的实例ID
instanceId="<您的实例ID>"
# 发送命令并获取命令ID
cmdid=$(aws ssm send-command --instance-ids "$instanceId" --document-name "AWS-RunPowerShellScript" --parameters commands=ipconfig --query "Command.CommandId" --output text)
# 等待命令完成
while [ "$(aws ssm list-command-invocations --command-id "$cmdid" --query "CommandInvocations[].Status" --output text)" == "InProgress" ]; do
  sleep 1
done
# 获取命令输出
aws ssm list-command-invocations --command-id "$cmdid" --details --query "CommandInvocations[*].CommandPlugins[*].Output[]" --output text

将上述脚本保存为run_ipconfig.sh并赋予执行权限:chmod +x run_ipconfig.sh。然后可以使用以下命令运行ipconfig:

./run_ipconfig.sh

这将在指定的EC2实例上运行ipconfig命令并显示输出。

以上是在AWS CLI中运行脚本或命令的解决方案。根据您的需求和环境,您可以选择不同的方法来执行远程命令。

如果需要执行更复杂的操作,您还可以考虑使用AWS Systems Manager的其他功能,如会话管理,以便与远程实例进行交互。

总结

通过AWS CLI在远程EC2实例上运行脚本或命令可以通过AWS Systems Manager Run Command来实现。使用aws ssm send-command命令可以发送命令并在实例上执行特定操作。确保您的实例具有适当的IAM角色和安装了SSM Agent。如果需要执行更复杂的操作,您可以使用Shell脚本来处理命令发送和输出获取的过程。使用这些方法,您可以方便地在远程实例上执行各种操作,提高管理效率。

以上解决方案可能涉及到AWS服务的具体操作,具体细节可能随时间有所变化,建议根据最新的文档进行操作。

正文完