VPC Endpointを使ってS3にアクセスしてみる

記事タイトルとURLをコピーする

みなさんこんにちは! 技術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を選択します。

vpc_endpoint

2. VPCの選択とPolicyの入力

VPC Endpointを選択したら、Endpointを作成するVPCと、Policyを入力します。
S3 Bucket Policyのように細かく制御することもできますが、今回はVPC内からのアクセスは全て許可する設定にします。 configure_endpoint

3. RouteTableの選択

Policyを入力し終わったら、VPC EndpointへのRouteを適用する
RouteTableを選択します。
※スクリーンショットでも警告が出ていますが、
VPCエンドポイントを作成する際は、 サブネット上のS3との通信が一旦切断されますのでご注意ください。  routetable     手順はこれで終わりです!

確認

さて、Endpointを作成したところで、確認してみましょう。
AWSのVPCに、インターネットに出ていけないサブネットを作成し、インスタンスを立てます。
そして、インスタンスからS3 Objectにcurlコマンドを打ってみましょう。
ping 8.8.8.8(Google)にはアクセスできていませんが、S3にはちゃんとアクセスできていますね。 ついでに、RouteTableも見てみましょう。 route_table com.amazonaws.ap-northeast-1.s3にRouteが書かれていることが確認できます。
ちなみにこのRouteはこの画面から編集できないので、このRouteを消す場合はVPCのEndpointから編集しましょう。
(上の手順の3番です)

まとめ

というわけで今日はVPC Endpointを使ってS3にアクセスする話でした。
設定はとても簡単なので、積極的に使ってゆきましょう!

追記

2021年2月に追加されたPrivateLink版のS3 VPC Endpointについては以下のブログをご参考ください。

blog.serverworks.co.jp

blog.serverworks.co.jp