#はじめに
本記事では、ECS Exec の機能を使って、稼働中の Fargate のコンテナにアクセスする時の簡易な手順について、記載しています。
アクセスする Fargate のコンテナ周りの環境は、下図になります。
ECS Execは、SSM エージェントのバイナリを、下図のようにコンテナにバインドマウントして、Systems Manager (SSM) の Session Manager 経由で、アクセスできるようにしているようです。
引用:Github での Proposal
#前提条件
##Fargate のコンテナサイド
- ECS サービスを実行するプラットフォームのバージョンが1.4.0 以降であること。
- Fargate のコンテナが Systems Manager (SSM) のエンドポイントに接続できること。
##アクセスするクライアントサイド
- ECS Exec コマンドを実行するための AWS CLI がインストールされていること。
AWS CLI | 対応バージョン |
---|---|
v1 | 1.19.28 以降 |
v2 | 2.1.31 以降 |
- AWS CLI 用の Session Manager plugin がインストールされていること。
参考:
AWS CLI バージョン 1 のインストール、更新、およびアンインストール
AWS CLI バージョン 2 のインストール、更新、およびアンインストール
(オプション) AWS CLI 用の Session Manager plugin をインストールする
#ECS Exec を有効にする
下記コマンドで、AWS CLI が対応するバージョンか確認します。
$ aws --version
aws-cli/1.19.92 Python/3.7.4 Darwin/18.7.0 botocore/1.20.92
下記コマンドで、Session Manager plugin がインストールされているか検証します。(下記のメッセージが出力されていれば、OKです。)
$ session-manager-plugin
The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.
アクセスするタスク(コンテナ)の IAM ロール に下記のSSM エージェントの実行用のポリシーをアタッチします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
下記コマンドで、ECS サービスの ECS Exec を有効にします。
$ aws ecs update-service --region ap-northeast-1 --cluster [クラスター名] --service [サービス名] --enable-execute-command
##出力結果
{
"service": {
省略
"enableExecuteCommand": true
}
}
下記コマンドで、ECS サービスの ECS Exec が有効になったことを確認します。( true と出力されていれば OK です )
$ aws ecs describe-services --region ap-northeast-1 --cluster [クラスター名] --services [サービス名] | jq '.services[].enableExecuteCommand'
true
有効にしたサービス上で、新しく起動したタスクに対してのみ ECS Exec は使用できます。
サービスを更新するなどして、タスクを再デプロイして下さい。
#Fargate のコンテナにアクセス
ECS Exec を有効にしたサービス上で起動した タスク ID を確認します。
下記コマンドで、Fargate のコンテナにアクセスします。(Starting session...と出力されれば OK です)
aws ecs execute-command --region ap-northeast-1 --cluster [クラスター名] --task [タスク ID] --container [コンテナ名] --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-07cfe2faxxxxxxxxxxxxxxxxx
Systems Manager (SSM) の Session Manager 上でも接続されていることを確認できます。
#詳細な使用方法
より詳細な使用方法は、下記が参考になります。
New – Amazon ECS Exec による AWS Fargate, Amazon EC2 上のコンテナへのアクセス