VPC エンドポイント

VPC 内から AWS サービスにインターネットを経由せずにプライベートにアクセスする仕組み

AWSネットワーク

VPC エンドポイントとは

VPC エンドポイントは、VPC 内のリソース (Lambda, EC2, ECS) から AWS サービス (S3, DynamoDB, SQS) にインターネットを経由せずにプライベートにアクセスする仕組みである。トラフィックが AWS ネットワーク内に留まるため、セキュリティが向上し、NAT ゲートウェイのデータ転送コストを削減できる。

2 つの種類

種類 対象サービス コスト 仕組み
ゲートウェイ型 S3, DynamoDB のみ 無料 ルートテーブルにルートを追加
インターフェース型 その他の AWS サービス $0.014/時間 + データ転送 ENI をサブネットに作成 (PrivateLink)

ゲートウェイ型は無料で使えるため、S3 や DynamoDB にアクセスする VPC 内のリソースには必ず設定すべきだ。設定しないと、NAT ゲートウェイ経由でインターネットを通ることになり、データ転送料金が発生する。

NAT ゲートウェイとのコスト比較

Lambda を VPC 内に配置して S3 にアクセスする場合:

方式 月額コスト (100GB 転送)
NAT ゲートウェイ ~$50 (時間料金 $32 + データ処理 $4.5 + 転送 $9)
S3 ゲートウェイエンドポイント $0 (無料)
S3 インターフェースエンドポイント ~$10 (時間料金のみ)

ゲートウェイ型を使うだけで月 $50 の節約になる。VPC 内の Lambda で S3 や DynamoDB を使う場合、ゲートウェイエンドポイントの設定は必須と考えてよい。

Lambda + VPC でのアクセス経路

Lambda を VPC 内に配置する場合、AWS サービスへのアクセス経路を整理する。

Lambda (VPC 内)
   S3:        ゲートウェイエンドポイント (無料)
   DynamoDB:  ゲートウェイエンドポイント (無料)
   SQS/SNS:   インターフェースエンドポイント (有料) or NAT GW
   Bedrock:   インターフェースエンドポイント (有料) or NAT GW
   外部 API:  NAT ゲートウェイ (有料、VPC エンドポイントでは不可)

エンドポイントポリシー

VPC エンドポイントにはポリシーを設定でき、アクセスを特定のリソースに制限できる。IAM ポリシーとの多層防御を実現する。

{
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": ["s3:GetObject", "s3:PutObject"],
    "Resource": "arn:aws:s3:::my-app-bucket/*"
  }]
}

よくある落とし穴

ゲートウェイ型のルートテーブル設定漏れ

ゲートウェイエンドポイントを作成しても、Lambda が使うサブネットのルートテーブルに関連付けないと機能しない。プライベートサブネットのルートテーブルを確認する。

インターフェース型のセキュリティグループ

インターフェースエンドポイントの ENI にはセキュリティグループが必要だ。Lambda のセキュリティグループからエンドポイントの 443 ポートへのアウトバウンドを許可する。

理論と実装の両面から学ぶなら関連書籍が参考になる。

関連用語