Amazon S3 用の AWS PrivateLink
AWS PrivateLink for Amazon S3 では、Virtual Private Cloud (VPC) でインターフェイス VPC エンドポイント (インターフェイスエンドポイント) をプロビジョニングできます。これらのエンドポイントは、VPN および AWS Direct Connect 経由でオンプレミスにあるアプリケーション、または VPC ピアリング経由で別の AWS リージョン にあるアプリケーションから直接アクセスできます。
インターフェイスエンドポイントは、VPC 内のサブネットからプライベート IP アドレスが割り当てられた 1 つ以上の Elastic Network Interface (ENI) で表されます。Amazon S3 のインターフェイスエンドポイントに対するリクエストは、Amazon ネットワーク上の Amazon S3 に自動的にルーティングされます。AWS Direct Connect または AWS Virtual Private Network (AWS VPN) を介して、オンプレミスのアプリケーションから VPC 内のインターフェイスエンドポイントにアクセスすることもできます。VPC をオンプレミスネットワークに接続する方法の詳細については、AWS Direct Connect ユーザーガイドおよび AWS Site-to-Site VPN ユーザーガイドをご参照ください。
インターフェイスエンドポイントの一般的な情報については、AWS PrivateLink ガイドのインターフェイス VPC エンドポイント (AWS PrivateLink) をご参照ください。
トピック
Amazon S3 の VPC エンドポイントのタイプ
Amazon S3 へのアクセスには、ゲートウェイエンドポイントとインターフェイスエンドポイントの 2 つのタイプの VPC エンドポイントを使用できます。ゲートウェイエンドポイントは、AWS ネットワーク経由で VPC から Amazon S3 にアクセスするために、ルートテーブルで指定するゲートウェイです。インターフェースエンドポイントは、プライベート IP アドレスを使用して、VPC 内、オンプレミス、または VPC ピアリングや AWS リージョン を使用する別の AWS Transit Gateway にある VPC から Amazon S3 にリクエストをルーティングすることにより、ゲートウェイエンドポイントの機能を拡張します。詳細については、VPC ピアリングとはおよび Transit Gateway と VPC ピアリング を参照してください。。
インターフェイスエンドポイントは、ゲートウェイエンドポイントと互換性があります。VPC 内に既存のゲートウェイエンドポイントがある場合は、同じ VPC で両方のタイプのエンドポイントを使用できます。
Amazon S3 のゲートウェイエンドポイント |
Amazon S3 のインターフェイスエンドポイント |
---|---|
いずれの場合も、ネットワークトラフィックは AWS ネットワーク上に残ります。 |
|
Amazon S3 パブリック IP アドレスを使用する |
VPC のプライベート IP アドレスを使用して Amazon S3 にアクセスする |
オンプレミスからのアクセスを許可しない |
オンプレミスからのアクセスを許可する |
別の AWS リージョンからのアクセスを許可しない |
VPC ピアリングまたは AWS Transit Gateway を使用する別の AWS リージョンにある VPC からのアクセスを許可する |
課金されない |
請求される |
ゲートウェイエンドポイントの詳細については、AWS PrivateLink ガイドのゲートウェイ VPC エンドポイントをご参照ください。
AWS PrivateLink for Amazon S3 の制約と制限
VPC 制限は、AWS PrivateLink for Amazon S3 に適用されます。詳細については、AWS PrivateLink ガイドの インターフェースエンドポイントのプロパティと制限 と AWS PrivateLink クォータ を参照してください。また、以下の制約も適用されます。
AWS PrivateLink for Amazon S3 では、以下はサポートされていません。
Amazon S3 インターフェイスエンドポイントへのアクセス
AWS PrivateLink を使用して Amazon S3 にアクセスするには、エンドポイント固有の DNS 名を使用するようにアプリケーションを更新する必要があります。
インターフェイスエンドポイントを作成すると、Amazon S3 はエンドポイント固有の 2 つのタイプの S3 DNS 名 (Regional および zonal) を生成します。
-
Regional DNS 名には、一意の VPC エンドポイント ID、サービス識別子、AWS リージョン、およびその名前の
vpce.amazonaws.com
が含まれます。例えば、VPC エンドポイント ID
の場合、生成される DNS 名はvpce-1a2b3c4d
に似ている場合があります。vpce-1a2b3c4d-5e6f
.s3.us-east-1.vpce.amazonaws.com -
Zonal DNS 名には、アベイラビリティーゾーンが含まれます (
など)。このオプションは、アーキテクチャがアベイラビリティーゾーンを分離する場合に使用できます。例えば、障害を隔離し、リージョン間のデータ転送コストを削減するために使用できます。vpce-1a2b3c4d-5e6f
-us-east-1a.s3.us-east-1.vpce.amazonaws.com
エンドポイント固有の S3 DNS 名は、S3 パブリック DNS ドメインから解決できます。
Amazon S3 インターフェイスエンドポイントは、インターフェイスエンドポイントのプライベート DNS 機能をサポートしていません。インターフェイスエンドポイントのプライベート DNS の詳細については、AWS PrivateLink ガイドを参照してください。
S3 インターフェイスエンドポイントからのバケットおよび S3 アクセスポイントへのアクセス
AWS CLI または AWS SDK を使用し、S3 インターフェイスエンドポイントを介してバケット、S3 アクセスポイント、および S3 コントロール API にアクセスできます。
次の図は、VPC コンソールの [Details] (詳細) タブを示しています。ここでは、VPC エンドポイントの DNS 名を確認できます。この例では、VPC エンドポイント ID (vpce−id) は vpce-0e25b8cdd720f900e
で、DNS 名は *.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
です。DNS 名を使用するときに、*
を忘れずに置き換えてください。例えば、バケットにアクセスするには、DNS 名は bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
のようになります。URL の先頭にバケットの名前を追加することもできます。例えば、my-bucket
にアクセスする場合、URL は my-bucket.bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com
になります。
![VPC コンソールの [Details] (詳細) タブのスクリーンショット。](images/vpc-console-details-tab.png)
エンドポイント固有の DNS 名の表示方法の詳細については、VPC ユーザーガイドのエンドポイントサービスのプライベート DNS 名設定の表示をご参照ください。
AWS CLI の例
--region
および --endpoint-url
パラメータを使用して、S3 インターフェイスエンドポイントを介して S3 バケット、S3 アクセスポイント、または S3 コントロール API にアクセスします。
例: エンドポイント URL を使用したバケット内のオブジェクトのリスト化
次の例では、リージョン
、VPC エンドポイント ID us-east-1
、およびバケット名 vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
を適切な情報に置き換えます。my-bucket
aws s3 --region
us-east-1
--endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
ls s3://my-bucket
/
例: エンドポイント URL を使用したアクセスポイントのオブジェクトのリスト化
次の例では、ARN
、リージョン us-east-1:123456789012:accesspoint/test
、および VPC エンドポイント ID us-east-1
を適切な情報に置き換えます。vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
aws s3api list-objects-v2 --bucket arn:aws:s3:
us-east-1:123456789012:accesspoint/test
--regionus-east-1
--endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
例: エンドポイント URL を使用した S3 コントロールでのジョブのリスト化
次の例では、リージョン
、VPC エンドポイント ID us-east-1
、およびアカウント ID vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
を適切な情報に置き換えます。12345678
aws s3control --region
us-east-1
--endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
list-jobs --account-id12345678
AWS SDK の例
SDK を最新バージョンに更新し、S3 インターフェイスエンドポイントを介してバケット、アクセスポイント、または S3 コントロール API にアクセスするためのエンドポイント URL を使用するようにクライアントを設定します。
オンプレミスの DNS 設定の更新
エンドポイント固有の DNS 名を使用して Amazon S3 のインターフェイスエンドポイントにアクセスする場合、オンプレミス DNS リゾルバーを更新する必要はありません。パブリック Amazon S3 DNS ドメインからのインターフェイスエンドポイントのプライベート IP アドレスを使用して、エンドポイント固有の DNS 名を解決できます。
Amazon S3 にアクセスするためのインターフェイスエンドポイントの使用 (VPC 内のゲートウェイエンドポイントまたはインターネットゲートウェイの使用なし)
次の図に示すように、VPC 内のインターフェイスエンドポイントは、VPC 内アプリケーションとオンプレミスアプリケーションの両方を Amazon ネットワーク経由で Amazon S3 にルーティングできます。

図は、以下を示しています。
-
オンプレミスネットワークでは、AWS Direct Connect または AWS VPN を使用して VPC A に接続します。
-
オンプレミスと VPC A のアプリケーションでは、エンドポイント固有の DNS 名を使用して S3 インターフェイスエンドポイントを介して Amazon S3 にアクセスします。
-
オンプレミスのアプリケーションは、AWS Direct Connect (または AWS VPN) を介して VPC 内のインターフェイスエンドポイントにデータを送信します。AWS PrivateLink は、AWS ネットワークを経由してデータをインターフェイスエンドポイントから Amazon S3 に移動します。
-
VPC 内アプリケーションは、インターフェイスエンドポイントにトラフィックの送信も行います。AWS PrivateLink は、AWS ネットワークを経由してデータをインターフェイスエンドポイントから Amazon S3 に移動します。
Amazon S3 にアクセスするための、ゲートウェイエンドポイントとインターフェイスエンドポイントの同じ VPC における併用
次の図に示すように、インターフェイスエンドポイントを作成し、同じ VPC 内に既存のゲートウェイエンドポイントを保持できます。これにより、VPC 内アプリケーションがゲートウェイエンドポイントを介して Amazon S3 に引き続きアクセスすることを許可します。これについての請求はありません。その後、オンプレミスのアプリケーションだけがインターフェイスエンドポイントを使用して Amazon S3 にアクセスします。この方法で S3 にアクセスするには、Amazon S3 のエンドポイント固有の DNS 名を使用するようにオンプレミスのアプリケーションを更新する必要があります。

図は、以下を示しています。
-
オンプレミスのアプリケーションは、エンドポイント固有の DNS 名を使用し、AWS Direct Connect (または AWS VPN) を介して VPC 内のインターフェイスエンドポイントにデータを送信します。AWS PrivateLink は、AWS ネットワークを経由してデータをインターフェイスエンドポイントから Amazon S3 に移動します。
-
VPC 内アプリケーションは、デフォルトのリージョンの Amazon S3 名を使用し、AWS ネットワークを介して Amazon S3 に接続するゲートウェイエンドポイントにデータを送信します。
ゲートウェイエンドポイントの詳細については、VPC ユーザーガイドのゲートウェイ VPC エンドポイントをご参照ください。
Amazon S3 用の VPC エンドポイントポリシーの作成
VPC エンドポイントに Amazon S3 へのアクセスをコントロールするエンドポイントポリシーをアタッチできます。このポリシーでは、以下の情報を指定します。
-
アクションを実行できる AWS Identity and Access Management (IAM) プリンシパル
-
実行可能なアクション
-
このアクションを実行できるリソース
Amazon S3 バケットポリシーを使用して、バケットポリシーの aws:sourceVpce
条件を使用して、特定の VPC エンドポイントからの特定のバケットへのアクセスを制限することもできます。次の例は、バケットまたはエンドポイントへのアクセスを制限するポリシーを示しています。
トピック
-
このセクションで説明している VPC エンドポイントに Amazon S3 のバケットポリシーを適用すると、バケットへのアクセスが意図せずにブロックされる場合があります。特に VPC エンドポイントからの接続に対するバケットのアクセスを制限することを目的としたバケットのアクセス許可により、バケットへのすべての接続がブロックされる場合があります。この問題を修正する方法については、バケットポリシーの VPC または VPC エンドポイント ID が間違っていますを参照してください。ポリシーを修正してバケットにアクセスできるようにするにはどうすれば良いですか?
」(AWS Support ナレッジセンター) を参照してください。 -
次のポリシーの例を使用する前に、VPC エンドポイントの ID をユースケースに応じた値に置き換えてください。そうしないと、バケットにアクセスできません。
-
このポリシーは、コンソールリクエストが指定の VPC エンドポイントを経由していない場合、指定先のバケットへのコンソールアクセスを無効にします。
例: VPC エンドポイントから特定のバケットへのアクセスの制限
特定の Amazon S3 バケットへのアクセスのみを制限するエンドポイントポリシーを作成できます。これは、VPC でバケットを使用する他の AWS のサービスがある場合に便利です。次のバケットポリシーは、
へのアクセスのみを制限します。DOC-EXAMPLE-BUCKET1
をバケットの名前に置き換えます。DOC-EXAMPLE-BUCKET1
{ "Version": "2012-10-17", "Id": "Policy1415115909151", "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::
", "arn:aws:s3:::
DOC-EXAMPLE-BUCKET1
/*"] } ] }
DOC-EXAMPLE-BUCKET1
例: VPC エンドポイントから特定のアカウントのバケットへのアクセスの制限
特定の AWS アカウントの S3 バケットへのアクセスのみを制限するポリシーを作成できます。これを使用して、所有していないバケットに VPC 内のクライアントがアクセスできないようにします。次の例では、単一の AWS アカウント ID 111122223333
が所有するリソースへのアクセスを制限するポリシーを作成します。
{ "Statement": [ { "Sid": "Access-to-bucket-in-specific-account-only", "Principal": "*", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Deny", "Resource": "arn:aws:s3:::*", "Condition": { "StringNotEquals": { "s3:ResourceAccount": "
111122223333
" } } } ] }
例: S3 バケットポリシーでの特定の VPC エンドポイントへのアクセスの制限
例: S3 バケットポリシーでの特定の VPC エンドポイントへのアクセスの制限
次の Amazon S3 バケットポリシーは、エンドポイント
からのみ、特定のバケット vpce-1a2b3c4d
へのアクセスを許可します。指定されたエンドポイントを使用していない場合、ポリシーによりバケットへのすべてのアクセスが拒否されます。DOC-EXAMPLE-BUCKET2
aws:sourceVpce
条件はエンドポイントを指定するために使用され、VPC エンドポイントリソースの Amazon リソースネーム (ARN) を必要とせず、エンドポイント ID のみを指定します。
および DOC-EXAMPLE-BUCKET2
を実際のバケット名とエンドポイントに置き換えます。vpce-1a2b3c4d
{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Access-to-specific-VPCE-only", "Principal": "*", "Action": "s3:*", "Effect": "Deny", "Resource": ["arn:aws:s3:::
", "arn:aws:s3:::
DOC-EXAMPLE-BUCKET2
"], "Condition": {"StringNotEquals": {"aws:sourceVpce": "
DOC-EXAMPLE-BUCKET2
/*vpce-1a2b3c4d
"}} } ] }
ポリシーの例については、VPC ユーザーガイドの Amazon S3 のエンドポイントを参照してください。
VPC 接続の詳細については、 ホワイトペーパー Amazon Virtual Private Cloud 接続オプションAWSのネットワークから VPC への接続オプション を参照してください。