Я использую команду отправки AWS SSM для запуска сценария PowerShell на экземпляре AWS.
Следующая команда отлично работает в командной оболочке, но при вызове в Terraform выдает ошибку.
aws ssm send-command --instance-ids $ {self.id} --document-name AWS-> RunPowerShellScript --parameters commands = 'C: \ Installers \ bootstrap_test.ps1> test'
при вызове в Terraform с использованием:
Provider "local-exec" {command = "aws ssm send-command --instance-ids $ {self.id} --document-name AWS-RunPowerShellScript --parameters commands = 'C: \ Installers \ bootstrap_test.ps1 test' --output-s3-bucket-name ellucian-ecrm-lab --output-s3-key-prefix bootstraplogs "}
Возвращенная ошибка:
статус выхода 255. Вывод: использование: aws [параметры] [...] [параметры] Чтобы увидеть текст справки, вы можете запустить:
aws помощь aws помощь aws помощь
Неизвестные варианты: test '
Поэтому я не думаю, что Terraform анализирует строку так, как это нужно AWS. что я могу сделать, чтобы правильно отформатировать эту строку в Terraform?
Попробуйте заключить команды в двойные кавычки, например:
... --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}'"