如何使用 AWS CLI 在多个 EC2 实例上运行 shell 脚本?

Sam*_*uez 2 shell amazon-web-services

我正在尝试执行一个简单的 AWS CLI 命令,该命令可以对多个实例运行 shell 命令。

我知道首先我需要获取实例 ID 列表:

aws ec2 describe-instances --filter "Name=tag:Group,Values=Development" --query 'Reservations[].Instances[].[InstanceId]' --output text
Run Code Online (Sandbox Code Playgroud)

然后我将不得不将它们分配给一个数组。然后遍历每个实例 ID 并发送命令。

我们是否可以选择让 aws 将 shell 命令发送到具有特定 ID 的实例?

像这样的东西:

aws ssm send-command --instance-ids "i-xxxxxxxxxxxxxxxx" --document-name "shellscript"
Run Code Online (Sandbox Code Playgroud)

我不断收到此错误:

调用 SendCommand 操作时发生错误 (InvalidInstanceId):

我已确保 SSM 代理在该特定实例上运行,并根据这些文档页面确保一切正确。

Kus*_*yas 5

您可以使用ssm send-command.

查看实例 IP 地址的示例命令:

aws ssm send-command --instance-ids "your id's" --document-name "AWS-RunShellScript" --comment "IP config" --parameters "commands=ifconfig" --output text
Run Code Online (Sandbox Code Playgroud)

根据您的需要修改命令。


如果您遇到错误,当您在尝试访问的实例上没有设置 SSM 时,可能会发生这种情况。有关可以运行 SSM 命令的实例列表,请运行:

aws ssm describe-instance-information --output text
Run Code Online (Sandbox Code Playgroud)

请参阅:InvalidInstanceId:调用 SendCommand 操作时发生错误 (InvalidInstanceId)