Amazon ECS とインターフェイス VPC エンドポイント (AWS PrivateLink)
インターフェイス VPC エンドポイントを使用するように Amazon ECS を設定することで、VPC のセキュリティ体制を強化できます。インターフェイスエンドポイントは、AWS PrivateLink (プライベート IP アドレスを使用した Amazon ECS API へのプライベートなアクセスを可能にするテクノロジ) により動作しています。AWS PrivateLink は、VPC とAmazon ECS 間のすべてのネットワークトラフィックを、Amazon ネットワークに制限します。インターネットゲートウェイ、NAT デバイス、または仮想プライベートゲートウェイは必要ありません。
AWS PrivateLink および VPC エンドポイントの詳細については、Amazon VPC ユーザーガイドの「Amazon VPC エンドポイント」を参照してください。
考慮事項
2023 年 12 月 23 日以降に導入されたリージョンのエンドポイントに関する考慮事項
Amazon ECS 用のインターフェイス VPC エンドポイントを設定する前に、以下の考慮事項に注意してください:
-
次のリージョン固有の VPC エンドポイントが必要です。
-
com.amazonaws.
region
.ecs-agent -
com.amazonaws.
region
.ecs-telemetry -
com.amazonaws.
region
.ecs
例えば、カナダ西部 (カルガリー) (ca-west-1) リージョンでは、次の VPC エンドポイントが必要です。
-
com.amazonaws.ca-west-1.ecs-agent
-
com.amazonaws.ca-west-1.ecs-telemetry
-
com.amazonaws.ca-west-1.ecs
-
-
テンプレートを使用して新しいリージョンに AWS リソースを作成する際に、2023 年 12 月 23 日以前に導入されたリージョンのテンプレートをコピーした場合は、コピー元のリージョンに応じて次のいずれかの操作を実行してください。
例えば、コピー元のリージョンが米国東部 (バージニア北部) (us-east-1) であるとします。コピー先のリージョンは、カナダ西部 (カルガリー) (ca-west-1) です。
構成 アクション コピー元のリージョンには VPC エンドポイントがありません。
新しいリージョンの 3 つの VPC エンドポイントをすべて作成します (例:
com.amazonaws.ca-west-1.ecs-agent
)。コピー元のリージョンに、リージョン固有の VPC エンドポイントが含まれています。
-
新しいリージョンの 3 つの VPC エンドポイントをすべて作成します (例:
com.amazonaws.ca-west-1.ecs-agent
)。 -
コピー元のリージョンの 3 つの VPC エンドポイントをすべて削除します (例:
com.amazonaws.us-east-1.ecs-agent
)。
-
Fargate 起動タイプの Amazon ECS VPC エンドポイントに関する考慮事項
Fargate タスクがデプロイされているのと同じ VPC に ecr.dkr
および ecr.api
の VPC エンドポイントがある場合は、その VPC エンドポイントが使用されます。VPC エンドポイントがない場合は、Fargate インターフェースが使用されます。
Amazon ECS 用のインターフェイス VPC エンドポイントを設定する前に、以下の考慮事項に注意してください:
-
Fargate 起動タイプを使用するタスクでは、Amazon ECS 用のインターフェイス VPC エンドポイントは必要ありませんが、以下のように Amazon ECR のインターフェース VPC エンドポイント、Secrets Manager、または Amazon CloudWatch Logsが必要になる場合があります。
-
Amazon ECR からプライベートイメージをプルできるようにするには、Amazon ECR 用のインターフェイス VPC エンドポイントを 作成する必要があります。詳細については、Amazon Elastic Container Registry ユーザーガイドの「インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。
VPC にインターネットゲートウェイがない場合は、Amazon S3 のためのゲートウェイエンドポイントを作成する必要があります。詳細については、「Amazon Elastic Container Registry ユーザーガイド」の 「Amazon S3 ゲートウェイエンドポイントを作成する」を参照してください。Amazon S3 のインターフェイスエンドポイントを Amazon ECR で使用することはできません。
重要
インターフェイス VPC エンドポイントを使用するよう Amazon ECR を設定する場合、特定の VPC または VPC エンドポイントへのアクセスを制限する条件キーを含むタスク実行ロールを作成できます。詳細については、「インターフェイスエンドポイントのアクセス許可によって Amazon ECR イメージをプルする Fargate タスクです。」を参照してください。
-
タスクで Secrets Manager から機密データをプルできるようにするには、Secrets Manager 用のインターフェイス VPC エンドポイントを作成する必要があります。詳細については、AWS Secrets Managerユーザーガイドの「VPC エンドポイントで Secrets Manager を作成する」を参照してください。
-
VPC にインターネットゲートウェイがなく、タスクで
awslogs
ログドライバーを使用してログ情報を CloudWatch Logs に送信する場合は、CloudWatch Logs 用のインターフェイス VPC エンドポイントを作成する必要があります。詳細については、Amazon CloudWatch Logs ユーザーガイドの「インターフェイス VPC エンドポイントでの CloudWatch Logs の使用」を参照してください。
-
-
現在、VPC エンドポイントはクロスリージョンリクエストをサポートしていません。Amazon ECS に対して API コールを発行するリージョンと同じリージョンにエンドポイントを作成してください。 例えば、タスクを米国東部 (バージニア北部) で実行することを考えてみます。その場合、Amazon ECS VPC エンドポイントは、米国東部 (バージニア北部) に作成する必要があります。他のリージョンで作成された Amazon ECS VPC エンドポイントは、米国東部 (バージニア北部) 内のタスクを実行できません。
-
VPC エンドポイントでは、Amazon Route 53 を介して Amazon 提供の DNS のみがサポートされています。独自の DNS を使用したい場合は、条件付き DNS 転送を使用できます。詳細については、Amazon VPC ユーザーガイドのDHCP Options Setsを参照してください。
-
VPCエンドポイントにアタッチされたセキュリティグループは、VPCのプライベートサブネットからの着信接続をポート 443 で許可する必要があります。
-
Envoy プロキシの Service Connect 管理では、
com.amazonaws.
VPC エンドポイントを使用します。VPC エンドポイントを使用しない場合、Envoy プロキシの Service Connect 管理は、そのリージョンのregion
.ecs-agentecs-sc
エンドポイントを使用します。各リージョンの Amazon ECS エンドポイントのリストについては、「Amazon ECS のエンドポイントとクォータ」を参照してください。
EC2 起動タイプの Amazon ECS VPC エンドポイントに関する考慮事項
Amazon ECS 用のインターフェイス VPC エンドポイントを設定する前に、以下の考慮事項に注意してください:
-
EC2 起動タイプを使用するタスクでは、起動されたコンテナインスタンスが Amazon ECS コンテナエージェントのバージョン
1.25.1
以降を実行する必要があります。詳細については、「Amazon ECS Linux コンテナインスタンスの管理」を参照してください。 -
タスクで Secrets Manager から機密データをプルできるようにするには、Secrets Manager 用のインターフェイス VPC エンドポイントを作成する必要があります。詳細については、AWS Secrets Managerユーザーガイドの「VPC エンドポイントで Secrets Manager を作成する」を参照してください。
-
VPC にインターネットゲートウェイがなく、タスクで
awslogs
ログドライバーを使用してログ情報を CloudWatch Logs に送信する場合は、CloudWatch Logs 用のインターフェイス VPC エンドポイントを作成する必要があります。詳細については、Amazon CloudWatch Logs ユーザーガイドの「インターフェイス VPC エンドポイントでの CloudWatch Logs の使用」を参照してください。 -
現在、VPC エンドポイントはクロスリージョンリクエストをサポートしていません。Amazon ECS に対して API コールを発行するリージョンと同じリージョンにエンドポイントを作成してください。 例えば、タスクを米国東部 (バージニア北部) で実行することを考えてみます。その場合、Amazon ECS VPC エンドポイントは、米国東部 (バージニア北部) に作成する必要があります。他のリージョンで作成された Amazon ECS VPC エンドポイントは、米国東部 (バージニア北部) 内のタスクを実行できません。
-
VPC エンドポイントでは、Amazon Route 53 を介して Amazon 提供の DNS のみがサポートされています。独自の DNS を使用したい場合は、条件付き DNS 転送を使用できます。詳細については、Amazon VPC ユーザーガイドのDHCP Options Setsを参照してください。
-
VPCエンドポイントにアタッチされたセキュリティグループは、VPCのプライベートサブネットからの着信接続をポート 443 で許可する必要があります。
Amazon ECS 用の VPC エンドポイントの作成
Amazon ECS サービス用の VPC エンドポイントを作成するには、Amazon VPC ユーザーガイドの「インターフェイスエンドポイントの作成」の手順を使用して、以下のエンドポイントを作成します。VPC 内に既存のコンテナインスタンスがある場合は、一覧表示されている順にエンドポイントを作成する必要があります。VPC エンドポイントが作成された後にコンテナインスタンスを作成する場合、順序は関係ありません。
-
com.amazonaws.
region
.ecs-agent -
com.amazonaws.
region
.ecs-telemetry -
com.amazonaws.
region
.ecs
注記
region
は、米国東部 (オハイオ) リージョンの us-east-2
のように、Amazon ECS でサポートされている AWS リージョンのリージョン識別子を表します。
ecs-agent
エンドポイントは ecs:poll
API を使用し、ecs-telemetry
エンドポイントは ecs:poll
および ecs:StartTelemetrySession
API を使用します。
EC2 起動タイプを使用する既存のタスクがある場合は、VPC エンドポイントを作成した後に、各コンテナインスタンスで新しい設定が選択される必要があります。そのためには、各コンテナインスタンスを再起動するか、各コンテナインスタンスで Amazon ECS コンテナエージェントを再起動する必要があります。コンテナエージェントを再起動するには、以下を実行します。
Amazon ECS コンテナエージェントを再起動するには
-
SSH 経由でコンテナインスタンスにログインします。
-
コンテナエージェントを停止します。
sudo docker stop ecs-agent
-
コンテナエージェントを開始します。
sudo docker start ecs-agent
VPC エンドポイントを作成し、各コンテナインスタンスで Amazon ECS コンテナエージェントを再起動したら、新しく起動されるすべてのタスクで新しい設定が選択されます。
Amazon ECS 用の VPC エンドポイントポリシーの作成
VPC エンドポイントに Amazon ECS へのアクセスをコントロールするエンドポイントポリシーをアタッチできます。このポリシーでは、以下の情報を指定します。
-
アクションを実行できるプリンシパル。
-
実行可能なアクション。
-
このアクションを実行できるリソース。
詳細については、Amazon VPC ユーザーガイドの「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。
例: Amazon ECS アクションの VPC エンドポイントポリシー
Amazon ECS のエンドポイントポリシーの例を次に示します。このポリシーは、エンドポイントに接続すると、クラスターの作成や一覧表示が行えるようにアクセスを許可します。CreateCluster
と ListClusters
のアクションはリソースを受け入れないため、すべてのリソースでリソース定義は * に設定されます。
{ "Statement":[ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:ListClusters" ], "Resource": [ "*" ] } ] }