У меня есть шаблон CloudFormation, который создает набор команд SSM для управления моими Linux EC2-экземплярами. У этих команд должен быть доступ к моему AWS номеру учетной записи для выполнения некоторых задач.
В моем шаблоне CloudFormation я сделал:
AWSTemplateFormatVersion: '2010-09-09'
Description: Sample SSM commands
MyCommand1:
Type: AWS::SSM::Document
Properties:
DocumentType: Command
Content:
schemaVersion: "2.2"
parameters: {}
mainSteps:
- action: aws:runShellScript
name : command1
inputs:
runCommand:
- echo "this command run on the selected EC2 instance" && echo "You are running this on account {{global:ACCOUNT_ID}}"
Outputs:
Command1ID:
Description: MyCommand1
Value: !Ref MyCommand1
Этот шаблон устанавливает функцию, и я могу запустить это из веб-консоли SSM.
Но {{global: ACCOUNT_ID}} не оценивается номером моей учетной записи. Он оценивается в строку "{{global: ACCOUNT_ID}}". Поэтому я предполагаю, что это не очень хороший синтаксис для использования global var из команды SSM.
Итак, после прочтения do c здесь https://docs.aws.amazon.com/systems-manager/latest/userguide/walkthrough-cli.html я попытался проверить это через Только CLI (для быстрого тестирования другого синтаксиса):
$> sh_command_id=$(aws ssm send-command --instance-ids "i-0cb0c0ea8ef7339f1" --document-name "AWS-RunShellScript" --parameters commands='echo You are running this on account {{global:ACCOUNT_ID}}' --output text --query "Command.CommandId")
, но команда завершилась неудачно с ошибкой синтаксического анализа Error parsing parameter '--parameters': Expected: ',', received: '}' for input
Какой правильный синтаксис используется для {{global: *} } что в SSM "runCommand" action?