💻

[SSM]SendCommandで変数を利用する方法

2021/11/08に公開

概要

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
GitHubで編集を提案

Discussion