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

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

みなさんこんにちは!

技術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にアクセスする話でした。
設定はとても簡単なので、積極的に使ってゆきましょう!

AWS運用自動化サービス「Cloud Automator」