💻
[SSM]SendCommandで変数を利用する方法
概要
aws ssm send-command
の引数で変数を利用する場合、
少し工夫する必要があったので残しておく。
実行方法
(例)AWS-ApplyAnsiblePlaybooksの実行の場合
_INSTANCE_ID="i-XXXXXXXXX"
_USER_NAME="'テスト ユーザー'"
_USER_EMAIL=hoge@test.com
aws ssm send-command \
--document-name "AWS-ApplyAnsiblePlaybooks" \
--document-version "1" \
--targets "[{\"Key\":\"InstanceIds\",\"Values\":[\"${_INSTANCE_ID}\"]}]" \
--parameters "{\"SourceType\":[\"S3\"],\"SourceInfo\":[\"{\\\"path\\\":\\\"https://XXXXXXXXXXXXXXX.s3.us-west-2.amazonaws.com/ec2_cloud9/ansible.zip\\\"}\"],\"InstallDependencies\":[\"True\"],\"PlaybookFile\":[\"main.yml\"],\"ExtraVariables\":[\"SSM=True user_name=${_USER_NAME} user_email=${_USER_EMAIL}\"],\"Check\":[\"False\"],\"Verbose\":[\"-vvvv\"],\"TimeoutSeconds\":[\"3600\"]}" \
--timeout-seconds 600 \
--max-concurrency "50" \
--max-errors "0" \
--region us-west-2
targets
の箇所はすんなりいくけどparameters
の箇所がやっかい
AWS-ApplyAnsiblePlaybooksを実行した場合の格納場所
i-XXXXXXXXXXX
は実行対象のインスタンスID
/var/lib/amazon/ssm/i-XXXXXXXXXXX/document/orchestration/
配下にユニークIDのディレクトリがある。
- /var/lib/amazon/ssm/i-XXXXXXXXXXX/document/orchestration/XXXXXXXXXXXXXXXXXXXX/downloads/
├── ansible.zip
├── main.yml
├── readme.md
└── roles
├── cloud9
├── default
├── docker
├── git
├── terraform
└── vscode
Discussion