我正在使用 AWS SSM send-command 在 AWS 实例上运行 PowerShell 脚本。
以下命令在命令 shell 中运行良好,但在 Terraform 中调用时出现错误。
aws ssm send-command --instance-ids ${self.id} --document-name AWS->RunPowerShellScript --parameters 命令='C:\Installers\bootstrap_test.ps1 >test'
在 Terraform 中使用以下方式调用时:
配置程序“local-exec”{命令 =“aws ssm send-command --instance-ids ${self.id} --document-name AWS-RunPowerShellScript --parameters 命令 ='C:\Installers\bootstrap_test.ps1 test' --output-s3-bucket-name ellucian-ecrm-lab --output-s3-key-prefix bootstraplogs”}
返回的错误是:
退出状态 255。输出:用法:aws [options] [...] [parameters] 要查看帮助文本,您可以运行:
aws 帮助 aws 帮助 aws 帮助
未知选项:测试'
所以我不认为 Terraform 按照 AWS 需要的方式解析字符串。我该怎么做才能在 Terraform 中正确格式化这个字符串?
答案1
尝试通过双引号命令,例如:
... --parameters commands='"C:\Installers\bootstrap_test.ps1 > test"'
以下是循环的示例:
aws ssm send-command --instance-ids "i-01234" --document-name "AWS-RunPowerShellScript" --query "Command.CommandId" --output text --parameters commands='"While ($i -le 100) {$i; $i += 1}"'
或者相反,例如
--parameters commands="'While ($i -le 100) {$i; $i += 1}'"