導入
プライベートサブネットのEC2からS3やDynamoDBにアクセスしたいだけなのに、わざわざNATゲートウェイ経由でインターネットを通す必要があるのでしょうか。答えは「不要」で、その答えが VPCエンドポイント です。
説明
VPCエンドポイント は、VPC内からAWSサービスへ、インターネットやNATゲートウェイを経由せずプライベートに接続する仕組みです。2種類あります。
| 種別 | 対象サービス | 仕組み | 課金 |
|---|---|---|---|
| Gateway型 | S3、DynamoDBのみ | ルートテーブルにエンドポイント宛のルートを追加 | 無料 |
| Interface型(PrivateLink) | 上記以外の大半のAWSサービス・一部SaaS | サブネットにENI(プライベートIP)を作成 | 時間課金+データ処理料 |
flowchart LR
subgraph VPC["VPC (プライベートサブネット)"]
EC2["EC2"]
end
EC2 -->|"Gatewayエンドポイント<br/>(ルートテーブル経由)"| S3["Amazon S3"]
EC2 -->|"Interfaceエンドポイント<br/>(PrivateLink・ENI経由)"| Other["その他AWSサービス<br/>(SNS/SQS/KMS等)"]
VPCエンドポイントを使うメリットは2つです。
- セキュリティの向上:通信がAWSネットワーク内で完結し、インターネットに一切晒されない
- コストの削減:NATゲートウェイのデータ処理料金がかからない(Gateway型は無料)
具体例
大量のログをS3に書き出すアプリが、プライベートサブネットで動いています。当初はNATゲートウェイ経由でS3にアクセスしていましたが、NATのデータ処理料金が膨らんで問題になりました。ログの転送量が多いほど課金されるからです。
そこでS3向けのGatewayエンドポイントを導入します。
- ルートテーブルに「S3宛はエンドポイントへ」を追加するだけ
- 通信はAWSネットワーク内で完結し、インターネットもNATも経由しない → セキュリティ向上
- Gateway型は無料なので、NATのデータ処理料金がまるごと消える → コスト削減
一方、同じアプリがSQSやKMSにもアクセスするなら、そちらはInterface型エンドポイント(PrivateLink)を使います。覚え方は明快で、「S3とDynamoDBだけGateway型(無料)、それ以外はInterface型(PrivateLink)」。「NATコスト削減」「インターネットを経由させたくない」+「S3」と来たら、ほぼGatewayエンドポイントが正解です。
読んでみよう
「プライベートサブネットからS3にアクセスしたいが、NATゲートウェイのコストを削減したい/インターネットを経由させたくない」という設問は、ほぼ確実にS3向けGatewayエンドポイントが正解です。「S3/DynamoDBはGateway型、それ以外はInterface型(PrivateLink)」という対応をそのまま覚えてください。