2022.12.18  

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

AWS    

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

参考文献

VPC エンドポイント

AWSの各サービスはAPIのURLを持っていおり、インターネット経由で呼び出すことができます。

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

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

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

プライベートサブネットからAWSのサービスエンドポイントに接続するには、NAT Gatewayを使ってインターネット経由でアクセスするか、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通信網内)のサービスにアクセスするための機能です。

ECR、KMSなどの様々なサービスが利用できます

インターフェイスエンドポイントは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エンドポイントがサポートされていないサービス

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


API Gateway

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

パブリックアクセス可能なAPI Gatewayを作成した場合はNATGateWayを経由してこのURLにアクセスできます。

プライベートアクセスのAPI Gatewayを作成した場合は作成時に指定したVPCエンドポイントからのみこのURLでアクセスできます。

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

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

名前 (※ 必須)

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

送信