ちょっと話題の記事

[速報!] オンプレミスからプライベートネットワークでのアクセスが可能に!PrivateLink に Amazon S3 が追加されました

オンプレからプライベートネットワークでS3にアクセスできますね!
2021.02.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本日のアップデートでインターフェース型の S3 VPC エンドポイント(PrivateLink)が GA になりました!

S3 の PrivateLink については re:Invent 2020 まもなくリリース予定とアナウンスされていましたが遂に来ましたね!

インターフェース型とゲートウェイ型

今回のアップデートで S3 VPC エンドポイントは唯一、ゲートウェイ型とインターフェース型、両方の VPC エンドポイントを持つサービスとなりました。簡単に各タイプの特徴を説明すると、以下のとおりです。

  • ゲートウェイ型
    • エンドポイント料金は無料
    • 対応しているサービスは S3 と DynamoDB のみ
    • エンドポイントへの名前解決はグローバル IP のまま(ルートテーブルにより、VPC エンドポイントに向けられる)
    • オンプレミス側からアクセスできない
    • 別リージョンからアクセスできない
  • インターフェース型(PrivateLink)
    • 各 AZ でエンドポイント料金が発生(0.01 USD/時間)
    • エンドポイントへの名前解決はプライベート IP
    • オンプレミス側からのアクセスも可能
    • 別リージョンからもアクセス可能

ゲートウェイ型、インターフェース型の違いについて詳細はゲストブロガー佐々木拓郎さんの記事を参照ください。

オンプレミス環境からのアクセス

従来のゲートウェイ型だとオンプレミス側から直接 VPC エンドポイントを経由して S3 にアクセスすることは出来ませんでしたが、PrivateLink の場合、以下のようにオンプレミス側から直接のアクセスが可能になりますね!

(引用元:Amazon S3 and interface VPC endpoints (AWS PrivateLink)

対応リージョン

  • すべてのリージョンで利用可能

考慮事項

  • PrivateLink for S3 ではプライベート DNS 名は利用できません
    • このためサービス DNS 名(たとえば s3.us-west-2.amazonaws.com )を使用する S3 へのリクエストは、従来どおりパブリックまたはゲートウェイエンドポイントに送信されます

やってみる

検証環境

今回は東京リージョンで検証しています。

PrivateLink for S3 の作成

VPC 管理コンソールから [エンドポイント] - [エンドポイントの作成] をクリックします。 エンドポイントの作成でサービスカテゴリに AWSサービス を選択し、com.amazonaws.ap-northeast-1.s3 で検索すると Gateway および Interface 2つのタイプが見つかりますので、 Interface を選択します。

エンドポイントを作成する VPC および AZ を選択します。インターフェース型のエンドポイントは AZ ごとに 0.01 USD の料金が発生します。

インターフェース型のエンドポイントを作成する際はプライベート DNS を有効にするのですが、 PrivateLink for S3 では利用できません。セキュリティグループを選択し [エンドポイントの作成] をクリックします。

アクセス確認

PrivateLink for S3 ではプライベート DNS 名が利用できませんので、エンドポイント固有の DNS 名を利用する必要があります。

名前解決するとプライベート IP が返ってきていますね。

$ dig vpce-xxxxxxxx-xxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com +short
172.31.9.227
172.31.44.138
172.31.21.21

AWS CLI の場合 --endpoint-url を指定することで PrivateLink 経由で S3 にアクセスすることができます。特に指定しない場合はパブリックまたはゲートウェイ型のエンドポイント側にアクセスすることになりますのでご注意ください。

$ aws s3 ls --endpoint-url https://bucket.vpce-xxxxxxxx-xxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com

2020-06-18 19:40:23 cm-marumo
2020-08-18 10:28:30 cm-marumo-alblog

問題なく S3 エンドポイントにアクセスできることが確認できました。

今回は S3 バケットへの API でしたので bucket.vpce-xxxxxx という形式で指定していますが、ホスト部分は各 API によって accesspoint.vpce-xxxxxx , control.vpce-xxxx のように指定を変える必要があるのでご注意ください。

簡単ではありますが、検証は以上です。

さいごに

re:Invent 2020 で発表されて以来、このリリースを待っていたユーザーは多いのではないでしょうか!

今回はひとまず速報的に PrivateLink 経由での簡単なアクセスを検証しただけですが、プライベート DNS 名が利用できない点は気をつけるポイントですね。

せっかく PrivateLink に対応しましたのでオンプレ側から S3 へのプライベートネットワークでのアクセスなども試してご紹介していきたいと思います!(といってる間に誰かが記事にすると思いますが)

以上!大阪オフィスの丸毛(@marumo1981)でした!

あわせて読みたい

さっそく、ネクストモードの久住さんが寄稿してくれました!ありがとうございます。

参考