はじめに
ECS Execを利用し、Fargateに接続するまでに必要な準備内容が多かったので健忘録として残します。
ゴールはタイトルの通り「Fargate内に入ってParameter Storeの環境変数を確認すること」です。
前提
・Fargateで動かすサービス内容:Webサーバー(Apache)
・Fargateサービスはプライベートサブネットに配置
・タスク定義にてログ収集は有効
・コンテナリポジトリはECRを利用
・Parameter Storeで設定した変数:hoge=test
準備内容
VPCエンドポイント編
com.amazonaws.ap-northeast-1.ecr.dkr
com.amazonaws.ap-northeast-1.ecr.api
com.amazonaws.ap-northeast-1.logs
com.amazonaws.ap-northeast-1.ssm
com.amazonaws.ap-northeast-1.ssmmessages
com.amazonaws.ap-northeast-1.s3
上記エンドポイントを空ける(多い、、、)
AWS CLI編
Session Manager プラグインをインストールする
参考:https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/install-plugin-macos-overview.html
Fargate Service編
ECS Execを利用可能にするためにAWS CLIで以下コマンドを実行する
aws ecs update-service \ --cluster cluster-name \ --service service-name \ --enable-execute-command
サービスを「新しいデプロイの強制」にて更新する
ECS Execが利用可能になったかどうか確認するためにAWS CLIで以下コマンドを実行する
aws ecs describe-tasks \ --cluster cluster-name \ --task task-id \ | grep enableExecuteCommand
タスク定義編
JSONから変更で、「initProcessEnabled:true」を追加する
{ "containerDefinitions": [ { "linuxParameters": { "initProcessEnabled": true } } ] }
タスクロール編
下記ポリシーを持つように設定する
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:ExecuteCommand" ], "Resource": "*" ←対象は絞ろう }, { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" ←対象は絞ろう } ] }
タスク実行ロール編
下記ポリシーを持つように設定する
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*" ], "Resource": "*" ←対象は絞ろう }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "*" ←対象は絞ろう }, { "Effect": "Allow", "Action": [ "ssm:GetParameters" ], "Resource": "*" ←対象は絞ろう } ] }
Fargate接続
Fargate接続編
以下コマンドを実行
aws ecs execute-command \ --cluster cluster-name \ --task task-id \ --container container-name \ --interactive \ --command "/bin/sh"
出力内容
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session. Starting session with SessionId: ecs-execute-command-0a78f6c705edff860 #
envコマンドで環境変数を確認
# env hoge=test
お疲れ様でした、、!!