aws

【B-29】ECS Fargate(ECS Exec)

[学習フェーズ]

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

・ログインできれば完了です。