[学習フェーズ]
ECS Execとは?
ECS Execは、FargateやEC2で稼働するECSタスクのコンテナ内部にセキュアに接続できる機能です。SSH不要で、安全にデバッグやログ確認が可能です。
また、現状AWSマネジメントコンソールからログインすることはできないため、ECS ExecをつかってCLI経由で実施します。
[実践フェーズ]
前提として、Fargate上にnginxを動かしているECSサービスが存在するものとします。
以下の教材を確認して起動しておきましょう。
https://www.techcida.com/aws/1693/
起動しているnginxのコンテナにCLI経由でログインします。
環境準備
・AWS CLI がインストールされていること
・session-manager-plugin がインストールされていること
参考:ttps://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
ECS Exec を有効にする
・FargateにアタッチしているIAM ロール にSSM エージェントの実行用のポリシーを追加
・ECS Execの事前確認(aws cli)
aws ecs describe-services --region ap-northeast-1 --cluster クラスター名 --services サービス名
##出力結果
{
"service": {
~~省略~~
"enableExecuteCommand": false
}
}
・falseの場合、trueに変更
aws ecs update-service --region ap-northeast-1 --cluster クラスター名 --services サービス名 --enable-execute-command
サービスを新規デプロイする
ECS Execを有効にしても、すぐにはログインできません。
一度タスクを再デプロイします。
・ecs >cluster > service より「新しいデプロイの強制」

・タスクの新規実行、実行中ステータスになるまで待機
・タスク番号をコピーし、ログインを実施
aws ecs execute-command --region ap-northeast-1 --cluster クラスター名 --task arn名(task名含む) --container nginx --command "sh" --interactive
例)aws ecs execute-command --region ap-northeast-1 --cluster sample-cluster --task arn:aws:ecs:ap-northeast-1:123456789012:task/sample-cluster/abc123def456ghi789jkl012 --container web --command "sh" --interactive
・ログインできれば完了です。
