从 Terraform 使用 AWS SSM 发送命令时的参数解析

从 Terraform 使用 AWS SSM 发送命令时的参数解析

我正在使用 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}'"

相关内容