Amazon ECS とインターフェイス VPC エンドポイント (AWS PrivateLink) - Amazon Elastic Container Service

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 エンドポイント」を参照してください。

Amazon ECS VPC エンドポイントに関する考慮事項

Fargate 起動タイプの Amazon ECS VPC エンドポイントに関する考慮事項

Fargate タスクがデプロイされているのと同じ VPC に ecr.dkrecr.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 タスク用の Amazon ECS IAM アクセス許可 (オプション)」を参照してください。

    • タスクで 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.region.ecs-agent VPC エンドポイントを使用します。VPC エンドポイントを使用しない場合、Envoy プロキシの Service Connect 管理は、そのリージョンの ecs-sc エンドポイントを使用します。各リージョンの Amazon ECS エンドポイントのリストについては、「Amazon ECS のエンドポイントとクォータ」を参照してください。

EC2 起動タイプの Amazon ECS VPC エンドポイントに関する考慮事項

Amazon ECS 用のインターフェイス VPC エンドポイントを設定する前に、以下の考慮事項に注意してください:

  • EC2 起動タイプを使用するタスクでは、起動されたコンテナインスタンスが Amazon ECS コンテナエージェントのバージョン 1.25.1 以降を実行する必要があります。詳細については、「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 コンテナエージェントを再起動するには
  1. SSH 経由でコンテナインスタンスにログインします。

  2. コンテナエージェントを停止します。

    sudo docker stop ecs-agent
  3. コンテナエージェントを開始します。

    sudo docker start ecs-agent

VPC エンドポイントを作成し、各コンテナインスタンスで Amazon ECS コンテナエージェントを再起動したら、新しく起動されるすべてのタスクで新しい設定が選択されます。

Amazon ECS 用の VPC エンドポイントポリシーの作成

VPC エンドポイントに Amazon ECS へのアクセスをコントロールするエンドポイントポリシーをアタッチできます。このポリシーでは、以下の情報を指定します。

  • アクションを実行できるプリンシパル。

  • 実行可能なアクション。

  • このアクションを実行できるリソース。

詳細については、Amazon VPC ユーザーガイドの「VPC エンドポイントによるサービスのアクセスコントロール」を参照してください。

例: Amazon ECS アクションの VPC エンドポイントポリシー

Amazon ECS のエンドポイントポリシーの例を次に示します。このポリシーは、エンドポイントに接続すると、クラスターの作成や一覧表示が行えるようにアクセスを許可します。CreateClusterListClusters のアクションはリソースを受け入れないため、すべてのリソースでリソース定義は * に設定されます。

{ "Statement":[ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:ListClusters" ], "Resource": [ "*" ] } ] }