[英]AWS CLI: How can you expand a variable in aws ssm send-command targets? [duplicate]
我正在尝试构建一个 bash 循环,将实例 ID 输入到以下 AWS CLI 命令中,以在多个实例上运行 Powershell。 每当我尝试将 $server 的值扩展为 for 循环中的实例 ID 列表的变量时,我都会收到错误消息:
调用 SendCommand 操作时发生错误 (InvalidInstanceId):
当从启用 AWS CLI 的 Linux 框执行运行文档时,这里有一些尝试让 $server 正确扩展。 当我用变量 $server 包含的相同实例 ID (i-081158da57d2a8da6) 替换 $server 或 ${server} 时,它可以正常工作。 我觉得这一定非常简单,但我的研究技能让我无法弄清楚如何在我的 Linux 实例上从 AWS CLI 正确执行 SSM 文档所需的语法中扩展变量。
:~$ aws ssm send-command --document-name "AWS-RunPowerShellScript" --document-version "1" --targets '[{"Key":"InstanceIds","Values":["${server} "]}]' --parameters '{"commands":["$wmi = Get-WmiObject -Class Win32_OperatingSystem ","$uptimeMinutes = ($wmi.ConvertToDateTime($wmi.LocalDateTime)-$wmi.ConvertToDateTime($wmi .LastBootUpTime) | select-object -expandproperty "TotalMinutes")","[int]$uptimeMinutes"],"workingDirectory":[""],"executionTimeout":["60"]}' --timeout-seconds 600 --max-concurrency "50" --max-errors "0" --region us-west-2
调用 SendCommand 操作时发生错误 (InvalidInstanceId):
:~$ aws ssm 发送命令 --document-name "AWS-RunPowerShellScript" --document-version "1" --targets '[{"Key":"InstanceIds","Values":["$server"] }]' --parameters '{"commands":["$wmi = Get-WmiObject -Class Win32_OperatingSystem ","$uptimeMinutes = ($wmi.ConvertToDateTime($wmi.LocalDateTime)-$wmi.ConvertToDateTime($wmi.LastBootUpTime ) | select-object -expandproperty "TotalMinutes")","[int]$uptimeMinutes"],"workingDirectory":[""],"executionTimeout":["60"]}' --timeout-seconds 600 --最大并发“50”--最大错误“0”--region us-west-2
调用 SendCommand 操作时发生错误 (InvalidInstanceId):
JSON 文档在单引号中,这会关闭变量插值——请参阅 Bash 中单引号和双引号之间的差异——这意味着$server
不会被扩展。
下面是效果的演示:
[:~] $ server=banana
[:~] $
[:~] $ echo '[{"Key":"InstanceIds","Values":["$server"]}]'
[{"Key":"InstanceIds","Values":["$server"]}]
[:~] $
如果您改用双引号,则会对值进行插值:
[:~] $ echo "[{\"Key\":\"InstanceIds\",\"Values\":[\"$server\"]}]"
[{"Key":"InstanceIds","Values":["banana"]}]
[:~] $
请注意,我必须转义双引号内的双引号。 否则它们会从 output 中消失,这会使 JSON 无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.