Amazon ECS を VPC 内から AWS サービスに接続するためのベストプラクティス - Amazon Elastic Container Service

Amazon ECS を VPC 内から AWS サービスに接続するためのベストプラクティス

Amazon ECS が正しく機能するためには、各ホストで実行される Amazon ECS コンテナエージェントは Amazon ECS コントロールプレーンと通信する必要があります。コンテナイメージを Amazon ECR に保存している場合、Amazon EC2 ホストは Amazon ECR サービスエンドポイントと、およびイメージレイヤーが保存されている Amazon S3 と通信する必要があります。DynamoDB に保存されているデータの保持など、コンテナ化されたアプリケーションに他の AWS サービスを使用する場合は、必要なネットワーキングのサポートもこのサービスにあることを再確認してください。

NAT ゲートウェイ

NAT ゲートウェイの使用は、Amazon ECS タスクが他の AWS サービスにアクセスできるようになる最も簡単な方法です。この方法の詳細については、「プライベートサブネットと NAT ゲートウェイ」を参照してください。

NAT ゲートウェイを使用するネットワークのアーキテクチャを示す図。

この方法の利用における欠点は次のとおりです。

  • NAT ゲートウェイが通信できる宛先を制限することはできません。また、VPC からのすべてのアウトバウンド通信を中断することなく、バックエンド層が通信できる宛先を制限することはできません。

  • NAT ゲートウェイは、通過するデータの GB ごとに課金されます。NAT ゲートウェイを次のいずれかの操作に使用すると、帯域幅の GB ごとに課金されます。

    • Amazon S3 からの大きなファイルのダウンロード

    • DynamoDB に対する大量のデータベースクエリの実行

    • Amazon ECR からのイメージのプル

    さらに、NAT ゲートウェイは 5 Gbps の帯域幅をサポートしており、45 Gbps まで自動的にスケールアップします。1 つの NAT ゲートウェイを介してルーティングする場合、非常に大きな帯域幅の接続を必要とするアプリケーションでは、ネットワーク上の制約が発生する可能性があります。回避策として、ワークロードを複数のサブネットに分割し、各サブネットに独自の NAT ゲートウェイを与えることができます。

AWS PrivateLink は、トラフィックをパブリックインターネットに公開することのない、VPC、AWS サービス、オンプレミスネットワークの間のプライベート接続を提供します。

VPC エンドポイントにより、VPC とサポートされている AWS サービスおよび VPC エンドポイントサービスとの間のプライベート接続が可能になります。VPC と他のサービス間のトラフィックは、Amazon ネットワークを離れることはありません。VPC エンドポイントは、インターネットゲートウェイ、仮想プライベートゲートウェイ、NAT デバイス、VPN 接続、または AWS Direct Connect 接続を必要としません。VPC の Amazon EC2 インスタンスでは、サービスのリソースと通信するのにパブリック IP アドレスを必要としません。

次の図は、インターネットゲートウェイではなく VPC エンドポイントを使用している場合に、AWS サービスへの通信がどのように機能するかを示しています。AWS PrivateLink はサブネット内で Elastic Network Interface (ENI) をプロビジョニングし、ENI 経由でサービスホスト名への通信を宛先の AWS サービスに直接送信するのに、VPC ルーティングルールが使用されています。このトラフィックは、NAT ゲートウェイまたはインターネットゲートウェイを使用する必要がなくなっています。

AWS PrivateLink を使用するネットワークのアーキテクチャを示す図。

以下は、Amazon ECS サービスで使用される一般的な VPC エンドポイントの一部です。

他の多くの AWS サービスは VPC エンドポイントをサポートしています。いずれかの AWS サービスを大量に使用する場合は、そのサービスの特定のドキュメントと、そのトラフィックにおいて VPC エンドポイントを作成する方法を調べる必要があります。