プライベートなFargate環境にコンソールからECS Execを利用してみる
はじめに
かつまたです。ECS Execの学習としてプライベートなFargate環境にECS Execを導入し、動作確認を実施する手順を試したみたのでご紹介します。プライベートサブネットにデプロイしたFargate環境に対して、タスク用のNATゲートウェイとECS Exec用のSSMエンドポイントを利用して構築を実施しました。ECS Execへはコンソールから接続を試みました。
やってみる
事前準備
- コンテナ用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でコンテナ接続する際に必要
- 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出力
-
VPCエンドポイント用セキュリティグループ
【役割】プライベートサブネット内のタスクがSSM API にアクセスするために必須
インバウンドルール- タイプ: HTTPS
- ポート: 443
- ソース: プライベートサブネットのCIDR
-
Fargate用セキュリティグループ
デプロイ内容に応じた任意のインバウンドルールを設定。(ECS Execにはインバウンドルール不要) -
NAT Gateway
-
VPCエンドポイント(com.amazonaws.ap-northeast-1.ssmmessages)
- 構築済みネットワーク構成図

Fargate環境作成
- クラスターをFargate起動タイプで作成し、以下JSONでタスク定義を作成します。


{
"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
}
}
]
}
- 上記タスク定義によりサービスを作成します。この際、環境タブの「ECS Execをオンにする」にチェックを入れます。
__
ECS Exec接続確認
-
実行中のタスク詳細画面からコンテナを選択し、「接続」を選択します。

-
CloudShellが起動し、ECS Execコマンドが自動で打ち込まれます。

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






