経緯
Docker Compose for Amazon ECSをつかってコンテナを立ち上げたはいいものの、作り直しのたびにコンソールやコマンドでECS Execの設定をしていくのは面倒くさい!最初から設定された状態で立ち上げたい!
結論から
docker-compose.ymlの主要な箇所だけ取り出すとこんな感じです。
serverという名前でサービスを作っています。
docker-compose.yml
services:
server:
# image指定とかは略
x-aws-role:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- ssmmessages:CreateControlChannel
- ssmmessages:CreateDataChannel
- ssmmessages:OpenControlChannel
- ssmmessages:OpenDataChannel
Resource: '*'
x-aws-cloudformation:
Resources:
ServerService:
Properties:
EnableExecuteCommand: true
説明
ECS Execを利用するには2つ準備が必要です。
- ECSタスクにSSMセッションマネージャー関連のIAMロールを与える
- ECSサービスでのenableExecuteCommandの設定をtrueにする
ECSタスクへのIAMロールに関してはx-aws-role
に書くと付与できます。
enableExecuteCommand
についてはx-aws-cloudformation
の箇所に設定を書けば、docuer compose up時に自動で変換されるCloudFormationのテンプレートのそこの部分だけ上書きされます。
おわりに
これでコンテナに入り放題!
ECS全然よくわからないで使っているので、用語の間違いとかあったらご指摘ください。
参考
ECS Exec
Docker Compose for Amazon ECS
「IAM ロール」の項目と、その下の「CloudFormation テンプレートの調整」が詳しかったです。