LoginSignup
50
33

More than 1 year has passed since last update.

ECS Execを使って Fargateのコンテナにアクセスする

Posted at

はじめに

本記事では、ECS Exec の機能を使って、稼働中の Fargate のコンテナにアクセスする時の簡易な手順について、記載しています。

アクセスする Fargate のコンテナ周りの環境は、下図になります。
00_fargate_ecs_exec.png
ECS Execは、SSM エージェントのバイナリを、下図のようにコンテナにバインドマウントして、Systems Manager (SSM) の Session Manager 経由で、アクセスできるようにしているようです。
ecs_exec_diagram.png
引用: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 は使用できます。
サービスを更新するなどして、タスクを再デプロイして下さい。
03_fargate_ecs_exec.png

Fargate のコンテナにアクセス

ECS Exec を有効にしたサービス上で起動した タスク ID を確認します。
01_fargate_ecs_exec.png

下記コマンドで、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 上でも接続されていることを確認できます。
04_fargate_ecs_exec.png

詳細な使用方法

より詳細な使用方法は、下記が参考になります。

New – Amazon ECS Exec による AWS Fargate, Amazon EC2 上のコンテナへのアクセス

デバッグに Amazon ECS Exec を使用する

50
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
50
33