2022.12.18   2023.02.11

【AWS】VPCエンドポイントとNATGateway(IGW)の使い分け

AWS    

VPC内のプライベートサブネットから各AWSサービスにアクセスするとき、VPC エンドポイントを利用すべきなのかNATGateway(インターネットゲートウェイ)を使うべきなのかよく忘れるのでメモ書きすることにしました。

参考文献

VPC エンドポイントとNATGateWay

AWSの各サービスはAPIのURLを持っており、そのAPIを呼び出すことでサービスを利用できます。

プライベートサブネットからAWSのサービスエンドポイントに接続するには、NAT Gatewayを使ってインターネット経由でアクセスするか、VPCエンドポイントを使用する必要があります。

単純にインターネット経由でアクセスしたい場合は、NAT Gatewayを利用します。

しかし、要件によってはインターネットを経由させずにVPCの内部サービスと通信を行いたい場合があります。

VPCエンドポイントを作成することで、VPCと他AWSサービス間でのプライベートな接続を実現することができます。

VPCエンドポイントはサービス利用側のVPC内で作成します。

VPC エンドポイントが提供されているサービスの場合、NAT Gateway の代わりに VPC エンドポイント経由でアクセスすることで通信料金を抑えることができます。

[参考サイト]
https://dev.classmethod.jp/articles/vpc-endpoints-for-ecs-2022
https://dev.classmethod.jp/articles/nat-gateway
https://dev.classmethod.jp/articles/aws-vpcendpoint-privatelink-beginner

VPCエンドポイントの種類

VPCエンドポイントには、以下の3種類が存在します。

  1. ゲートウェイエンドポイント
  2. インターフェイスエンドポイント(=AWS PrivateLink)
  3. Gateway Load Balancerエンドポイント

ゲートウェイエンドポイント

ゲートウェイエンドポイントを利用することで、NATゲートウェイを設置しなくてもプライベートサブネットからVPC外のサービスに対してセキュアにアクセスできます。

利用できるサービスはS3とDynamoDBの2つのみです。マニュアル

ゲートウェイエンドポイントはAWSマネージメントコンソールから「VPC」--> 「エンドポイント」-->「エンドポイントを作成」にアクセスすることで作成することができます。

ゲートウェイエンドポイントを作成するには、サービス利用側のVPC IDルートテーブルにエンドポイントへのルーティング設定が必要となります。

ルートイメージ:
プライベートサブネット --> ルートテーブル --> ゲートウェイエンドポイント --> S3

[参考サイト]
https://www.fenet.jp/aws/column/tool/570/

インターフェイスエンドポイント

VPC内にインターフェイスを設置して、インターネットゲートウェイとNATゲートウェイを介さずに、VPC外(AWS通信網内)のサービスにアクセスするための機能です。

ECRKMSAPIGateWay(※) などの様々なサービスが利用できます。
※ プライベートREST API Gatewayを利用する場合に必要

インターフェイスエンドポイントはAWSマネージメントコンソールから「VPC」--> 「エンドポイント」-->「エンドポイントを作成」にアクセスすることで作成することができます。

エンドポイント作成時に所属する「VPC」「サブネット」「セキュリティグループ」とサービス名(com.amazonaws.ap-northeast-1.ecr.dkr等)を指定する必要があります。

サービス名はエンドポイント作成時に表示されるリストの中から指定できます。

エンドポイントが作成されると、インターフェイスエンドポイントのプライベートDNS名として、<vpce-code>.<service-code>.<region-code>.amazonaws.comが割り当てられます。

<アカウントID>.<service-code>.<region-code>.amazonaws.comでリソースにアクセスできます。

下記はECSのタスク定義の中で、ECRのエンドポイントを指定している例です。
"image": "123456789123.dkr.ecr.ap-northeast-1.amazonaws.com/hogehogeimg:latest

VPCエンドポイントとNATGateWayの使い分けが必要なサービス


API Gateway

API Gatewayで「メソッドの作成」 --> 「APIのデプロイ」を実行すると接続URLが発行されます。

パブリックアクセス可能なREST API Gatewayを作成した場合はNATGateWayを経由してこのURLにアクセスできます。(通信経路: From VPC To REST API Gateway)

プライベートアクセスのREST API Gateway作成してVPCと通信を行いたい場合は、専用のVPCエンドポイントを作成する必要があります。(通信経路: From VPC To REST API Gateway)マニュアル

ただし、このVPCエンドポイントを作成するとデフォルトではパブリックアクセス可能なREST API Gatewayへの通信(NATGateWay経由)が行えなくなります。参考サイト1, 参考サイト2
パブリックアクセス可能なREST API Gatewayと併用する場合は、パブリックな方のAPI Gatewayにカスタムドメインを設定することでNATGateWayを経由した通信となり、通信不可の事象を回避できます。

HTTP API Gateway(※)からプライベートなVPCに通信を行いたい場合はVPCリンクを利用できます。(通信経路: From HTTP API Gateway To VPC)マニュアル

[参考サイト]
https://oji-cloud.net/2020/03/13/post-4469/

VPCエンドポイントがサポートされていないサービス

Amazon Cognito

Amazon Cognitoは VPC Endpoint がサポートされていません。

Cognitoユーザープールのエンドポイントへ接続するためにはインターネットへの到達性を確保している必要があります。

(ただし、トラフィックは実際にインターネットを通過するものではありません。AWS のサービスエンドポイントにアクセスするためにはインターネットへの到達性が必要ですが、トラフィックは AWS グローバルネットワークに留まります)。

したがってプライベートサブネットからCognitoユーザープールのエンドポイントへ接続するためにはNAT GateWayが必要です。

[参考サイト]
https://aws.amazon.com/jp/builders-flash/202210/cognito-userpool-endpoint/?awsf.filter-name=*all

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信