プライベートなFargate環境にコンソールからECS Execを利用してみる

プライベートなFargate環境にコンソールからECS Execを利用してみる

2025.11.07

はじめに

かつまたです。ECS Execの学習としてプライベートなFargate環境にECS Execを導入し、動作確認を実施する手順を試したみたのでご紹介します。プライベートサブネットにデプロイしたFargate環境に対して、タスク用のNATゲートウェイとECS Exec用のSSMエンドポイントを利用して構築を実施しました。ECS Execへはコンソールから接続を試みました。

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-exec.html

やってみる

事前準備

  1. コンテナ用IAMロール (ecsTaskRoleForExec)
  • 信頼ポリシー:ecs-tasks.amazonaws.com
  • 以下のカスタムインラインポリシーを作成してアタッチ:
{
   "Version": "2012-10-17",
   "Statement": [
       {
           "Effect": "Allow",
           "Action": [
               "ssmmessages:CreateControlChannel",
               "ssmmessages:CreateDataChannel",
               "ssmmessages:OpenControlChannel",
               "ssmmessages:OpenDataChannel"
           ],
           "Resource": "*"
       }
   ]
}

用途:ECS Execでコンテナ接続する際に必要

  1. ECS管理用ロール (executionRoleArn)
  • 信頼ポリシー:ecs-tasks.amazonaws.com
  • AWS管理ポリシー AmazonECSTaskExecutionRolePolicy をアタッチ
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

用途:タスク起動時のコンテナイメージ取得とCloudWatch Logs出力

  1. VPCエンドポイント用セキュリティグループ
    【役割】プライベートサブネット内のタスクがSSM API にアクセスするために必須
      インバウンドルール

    • タイプ: HTTPS
    • ポート: 443
    • ソース: プライベートサブネットのCIDR
  2. Fargate用セキュリティグループ
    デプロイ内容に応じた任意のインバウンドルールを設定。(ECS Execにはインバウンドルール不要)

  3. NAT Gateway

  4. VPCエンドポイント(com.amazonaws.ap-northeast-1.ssmmessages)

  • 構築済みネットワーク構成図
    aws-vpc-architecture.drawio.png

Fargate環境作成

  1. クラスターをFargate起動タイプで作成し、以下JSONでタスク定義を作成します。
    スクリーンショット 2025-11-03 16.30.16.png
    スクリーンショット 2025-11-03 16.31.15.png
{
  "family": "my-private-task",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "taskRoleArn": "arn:aws:iam::111111111111:role/ecsTaskRoleForExec",
  "executionRoleArn": "arn:aws:iam::111111111111:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "nginx-container",
      "image": "nginx:latest",
      "essential": true,
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/ロググループ名",
          "awslogs-region": "ap-northeast-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "linuxParameters": {
        "initProcessEnabled": true
      }
    }
  ]
}
  1. 上記タスク定義によりサービスを作成します。この際、環境タブの「ECS Execをオンにする」にチェックを入れます。
    スクリーンショット 2025-11-03 16.35.05.png__

ECS Exec接続確認

  1. 実行中のタスク詳細画面からコンテナを選択し、「接続」を選択します。
    スクリーンショット 2025-11-03 16.14.05.png

  2. CloudShellが起動し、ECS Execコマンドが自動で打ち込まれます。
    スクリーンショット 2025-11-03 16.18.30.png

  3. ECS Exec起動後、任意のコマンドを実行し、試してみます。ディスク容量確認とサーバーからのレスポンス確認ができました。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          30G  9.6G   19G  35% /
tmpfs            64M     0   64M   0% /dev
shm             464M     0  464M   0% /dev/shm
tmpfs           464M     0  464M   0% /sys/fs/cgroup
/dev/nvme0n1p1  4.9G  2.1G  2.8G  44% /dev/init
/dev/nvme1n1     30G  9.6G   19G  35% /etc/hosts
tmpfs           464M     0  464M   0% /proc/acpi
tmpfs           464M     0  464M   0% /sys/firmware
#  curl http://localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

おわりに

ご覧いただきありがとうございました。ECS Execの学習とともにプライベートなFargate環境構築についても学ぶことができました。また、インバウンドルールやキーなしで、Session Managerにより、簡単にコンテナ接続が可能であることについても理解することができました。

参考

https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-exec.html
https://dev.classmethod.jp/articles/ecs-exec/

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。

この記事をシェアする

FacebookHatena blogX

関連記事