こんにちは!イーゴリです。
EC2がパブリックサブネットにある場合、問題なくインターネットゲートウェイ経由でS3へアクセスができます。
なお、プライベートサブネットにあるEC2からS3にアクセスしたい場合、NATゲートウェイ経由でもS3にアクセスができますが、S3のためだけにNATゲートウェイを構築し、NATゲートウェイ経由でS3にアクセスしたい場合、デメリットとしては、NAT Gateway料金及びNAT Gatewayを経由する通信料がかかりますので、ご注意ください。
但し、パブリックサブネットにNATゲートウェイがない場合、プライベートサブネットにあるEC2からS3にアクセスはできません。
NATゲートウェイやインターネットゲートウェイへのアクセスがない場合、もしくは、プライベートサブネットからトラフィック料金などが発生しないようにS3にアクセスがしたい場合、S3 Endpoint Gatewayを作成する必要がありますので、今回の記事では、「どうやってVPCエンドポイント経由でS3へアクセスできるか」という記事をご紹介したいと思います。
VPCエンドポイント概要
VPNエンドポイントの種類は2つあります。ゲートウェイ VPC エンドポイント(Gateway VPC Endpoint)とインターフェイス VPC エンドポイント (AWS PrivateLink)です。
結論から言いますと、ゲートウェイ VPC エンドポイントは無料ですが、現時点(2022/7/5)で、ゲートウェイ VPC エンドポイントはS3とDynamo DBのためだけに存在しています。
他のサービスのためにエンドポイントを使用したい場合、インターフェイス VPC エンドポイント (AWS PrivateLink)を選ぶ必要があります。
ゲートウェイ VPC エンドポイントの特徴
ゲートウェイ VPC エンドポイントを使う主なメリットは無料であることです。
ゲートウェイ VPC エンドポイントを使う場合、上記の図の通り、対象サブネットのルートテーブルにゲートウェイ VPC エンドポイントのルートが追加されますので、普通のAWSゲートウェイ型の動作となります。
なお、ゲートウェイ VPC エンドポイントにパブリックIPが付与されますので、Network ACL(NACL)で通信許可をプライベートIPの範囲内のみと指定してしまうと、ゲートウェイ VPC エンドポイント経由での通信が通らなくなるので、設計時にご注意ください。
ゲートウェイ VPC エンドポイントの場合、VPC エンドポイントポリシーを作成することができますので、サービスへのアクセスを管理できます(IAMバケットポリシーのようにアクセスが制限できます)。
インターフェイス VPC エンドポイント (AWS PrivateLink)の特徴
完全にプライベートIPの通信でS3にアクセスしたい場合、インターフェイス VPC エンドポイントを選ぶ必要があります。
上記の図の通り、対象サブネットごとにElastic Network Interface (ENI)が追加されるので、ゲートウェイ VPC エンドポイントと違ってポリシーでのアクセス制限ではなく、セキュリティグループでの制限が行われています。
Elastic Network Interface (ENI)の追加によって対象サブネット内のプライベートIPが一つ消費されますので、Interface型の場合、IPの消費について考慮する必要があります。
なお、時間あたりのエンドポイントの利用料及びエンドポイント経由での通信料が発生しますので、設計時にご注意ください。
VPCエンドポイントの作成
設計によって構築方法が異なりますので、下記の2つの中からエンドポイントのタイプを選んでください。
今回は、S3のゲートウェイ VPC エンドポイントを選択します(設計によりますが、普通はゲートウェイ VPC エンドポイントを選択したほうが良いかと思います)。
ゲートウェイ VPC エンドポイントの作成(今回、選んだタイプ)
[VPC]>[エンドポイント]>[エンドポイントを作成]をクリックします。
[AWSサービス]を選択した上、下にある検索欄でS3を入力します。そして「Gateway」のタイプを選択します。
「Gateway」のタイプを選択したあとで、VPCを選択し、どのサブネットにルートを追加するかを選択します(手動でもルートテーブルにルートの追加は可能ですが、構築時に選択したほうが楽です)。
[ポリシー]をすべて許可にしたいので、「フルアクセス」を選択しますが、IAMポリシーでVPCエンドポイントを制限したい場合、「カスタム」を選択してください。
[エンドポイントを作成]をクリックします。
結果
対象ルートテーブルを見ますと、ルートテーブルにvpce-xxxと記載があるので、これはS3エンドポイントゲートウェイ宛のルートです。
インターフェイス VPC エンドポイントの作成(下記の方法もあります)
前回の記事でSSM用のインターフェイス VPC エンドポイントを作成しましたので、ご参考ください(S3のインターフェイス VPC エンドポイントを作成したい場合、S3 (Interface)を選択します)。
以上、御一読ありがとうございました。
本田 イーゴリ (記事一覧)
カスタマーサクセス部
・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE
趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽