みなさんこんにちは! 技術1課中村です。 今日の記事は、VPC Endpointを使ってS3にアクセスする話です。
VPC Endpoint自体は今年の5月にリリースされた機能となります。
S3、使ってますか?
ところで、S3は皆さん使ってますか?
容量は無限、99.999999999% の堅牢性と、99.99%の可用性、
さらにはストレージ料金は1GBあたり$0.033(東京リージョン)と、素晴らしいサービスです。
AWSではEC2に並ぶ有名なサービスだと思います。 さらには、最近はクロスリージョンレプリケーションの機能も追加され、 大規模災害にも備えることができるようになりました。 ただし、S3にアクセスするにはインターネットを経由してアクセスしなければならない、という制約がありました。
そのため、インターネットに出る必要ない業務システムなどをAWSに構築した場合でも、
S3にアクセスするためにはVPCにIGWをアタッチして、 一度IGWからインターネットに出てからS3にアクセスする必要がありました。 今回お話するVPC Endpoint機能を使うと、
VPCと別のAWSサービスとの間でプライベート接続を作成できるようになります。
つまり、S3にアクセスする際にも、インターネットを経由しなくてよくなるんですね。 では、早速設定を進めましょう。
手順はとても簡単です。
1. VPC Endpointを作成
まずはVPC Endpointを作成します。
VPCのダッシュボードからEndpointを選択します。
2. VPCの選択とPolicyの入力
VPC Endpointを選択したら、Endpointを作成するVPCと、Policyを入力します。
S3 Bucket Policyのように細かく制御することもできますが、今回はVPC内からのアクセスは全て許可する設定にします。
3. RouteTableの選択
Policyを入力し終わったら、VPC EndpointへのRouteを適用する
RouteTableを選択します。
※スクリーンショットでも警告が出ていますが、
VPCエンドポイントを作成する際は、 サブネット上のS3との通信が一旦切断されますのでご注意ください。 手順はこれで終わりです!
確認
さて、Endpointを作成したところで、確認してみましょう。
AWSのVPCに、インターネットに出ていけないサブネットを作成し、インスタンスを立てます。
そして、インスタンスからS3 Objectにcurlコマンドを打ってみましょう。
8.8.8.8(Google)にはアクセスできていませんが、S3にはちゃんとアクセスできていますね。 ついでに、RouteTableも見てみましょう。 com.amazonaws.ap-northeast-1.s3にRouteが書かれていることが確認できます。
ちなみにこのRouteはこの画面から編集できないので、このRouteを消す場合はVPCのEndpointから編集しましょう。
(上の手順の3番です)
まとめ
というわけで今日はVPC Endpointを使ってS3にアクセスする話でした。
設定はとても簡単なので、積極的に使ってゆきましょう!
追記
2021年2月に追加されたPrivateLink版のS3 VPC Endpointについては以下のブログをご参考ください。