朝イチのニュースで S3 が PrivateLink をサポートしたよ。っていうのがあったので、よくある話のオンプレ環境からインターネットを経由しないで S3 にアクセスする。を試してみた。
ニュースはこちら。
これまでも、S3 は、ゲートウェイ型の VPC エンドポイントをサポートしていたので、VPC 内に Proxy Server を用意してごにょごにょ。とすればできる。というストーリーで話をするのだけれども、PrivateLink で出来るようになったので不要な EC2 を立ち上げなくても良くなる。
これまで
PrivateLink を使ったパターン
試してみる
プライベートな VPC を用意
今回は、新しくプライベートサブネットを1つだけ持ってる VPC を用意した。
S3 用 VPC エンドポイントの作成
[VPC] - [エンドポイントの作成] からエンドポイントを作る。サービス名で「s3」を検索すると、Gateway タイプ と Interfate タイプが出てくるので、迷わず Interface 型を選択。
VPC に 先程作ったプライベートな VPC を選択し、サブネットも選択する。
プライベート DNS は、サポートされていないので無効になっている。
セキュリティグループは今回は VPC のデフォルトを選択。適宜作成すればいいと思う。
ポリシーも今回はデフォルトで。適宜用意すればいいと思う。
[エンドポイントの作成]をクリックして作成する。
エンドポイントのステータスが「利用可能」になれば準備完了。
VPN から試してみる
Site to Site VPN はルーター持ってないし。DX も引いてないので Client VPN サービスで繋いで試してみる。
クライアント VPN の準備は、クライアント VPN の開始方法の手順に従って準備した。
VPN 接続ができたら、おもむろにターミナルを立ち上げてコマンドを打ち込む。
aws s3 ls --endpoint-url https://bucket.vpce-05acaa656a539014c-zowpqlev.s3.ap-northeast-1.vpce.amazonaws.com --region ap-northeast-1
無事バケット一覧が表示されました。
(* AWS S3 コマンドでは --region 付けないとうまくいかなかったけど)
やってみて
やってみて思ったこと。
- すごーくかんたん
- 準備するものが少なくなるからいいし、メンテナンスするものが減るのは嬉しい。(EC2、ELB不要)
- プライベート DNS がサポートされていないので、オンプレ側にはやっぱり DNS サーバー必要になる(or プライベート DNS 名使う)のはメンテするもの減ってないけど、まあ、エンプラ企業なら持ってるっしょ。
- PrivateLink は通信しようがしまいが維持するのにコストがかかるのでコストは考える(EC2、ELB立ち上げてたら同じだけど)
後片付け
- PrivateLink は、通信してなくてもサブネットに関連付けられていると課金されるので削除する
- Client VPN は、通信してなくてもサブネットに関連付けられていると課金されるので削除する
- VPC はコスト掛からないから残してもいいけど、使わないから消しちゃう