LoginSignup
19

More than 5 years have passed since last update.

VPCプライベートネットワークからS3へ接続する

Last updated at Posted at 2015-05-12

従来はVPC内のインスタンスからS3に接続するためには、インスタンスがパブリックネットワーク内にある必要がありました。しかし、VPCエンドポイントという特別な裏口ができたので、プライベートネットワーク内のインスタンスもこの裏口からS3に接続することが可能になりました。

VPC内のプライベートネットワークからS3への接続方法

1 VPCエンドポイントを作成する

1-1: VPCコンソール > エンドポイント作成

endpoint1

1-2: VPCを選択

*VPC-ID : VPCエンドポイント = 1:1になります

1-3: バケットポリシーを設定

今回はFull Accessの設定としました。特定のバケットへの通信のみ許可する場合は、こちらでポリシーを追加すると良いと思います。

endpoint2

1-4: ひもづけるルーティングテーブルを選択

*インターネットゲートウェイに紐付いていない、ローカルNWのみ通信可能なルーティングテーブルを選択してください

endpoint3

そうすると、ルーティングテーブルが次のようにupdateされます

endpoint4

以上で設定は終わりです!

注意点

【設定時の話】
VPCエンドポイントを設定時、既存インスタンスからS3への接続が途切れるそうです(未検証)。設定時はタイミングを見計らうといいと思われます

【バケットポリシーの話】
従来、S3接続のIP制限はバケットポリシーにCIDRを記載していました。

ドキュメントには

When using Amazon S3 endpoints, you cannot use a bucket policy or an IAM policy to allow access from a VPC CIDR range (the private IP address range). VPC CIDR blocks can be overlapping or identical, which may lead to unexpected results

とあり、Source-IPがプライベートIPになったからって、IP制限を直接バケットポリシーに書かないでね、とかいてあります。特定インスタンスからS3接続を許可したい場合は、Security-Groupのoutband規制で絞るなど、他の方法で回避するのでしょうか。

2 確認

以下の通り、インターネットに通信できない状態ですが

[root@ip-172-31-6-140 ~]# curl https://www.google.co.jp/curl: (7) Failed to connect to 2404:6800:4008:c01::5e: Network is unreachable
[root@ip-172-31-6-140 ~]#

無事、s3上にある画像ファイルをDLすることができました。

[root@ip-172-31-6-140 ~]# aws s3 cp s3://test-3-shake.com/20150305051314_thumb.jpg .
download: s3://test-3-shake.com/20150305051314_thumb.jpg to ./20150305051314_thumb.jpg
[root@ip-172-31-6-140 ~]#

通信内容をtcpdumpしてwiresharkで見てみた

hoge

S3との通信内容をtcpdumpしてみました。ご覧の通り、S3(54.231.230.6)へはインターネット経由で接続していることがわかります。(パブリックネットワークからS3へ接続した時と変わりありません)

プライベートネットワーク内のインスタンスとS3との接続自体がローカル通信(= 接続速度速くなる)であることを期待していたのですが、そういう訳ではないようです。

セキュリティ要件が厳しく、プライベートネットワーク内のインスタンスからS3へNATインスタンス越しに接続している方には、とても嬉しいニュースかなと思います!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19