S3 on Outposts の AWS PrivateLink - Amazon Simple Storage Service

S3 on Outposts の AWS PrivateLink

S3 on Outposts は AWS PrivateLink をサポートしているため、仮想プライベートネットワーク内のプライベートエンドポイント経由で S3 on Outposts ストレージに直接管理アクセスを提供します。これにより、仮想プライベートクラウド (VPC) のプライベート IP アドレスを使用して、内部ネットワークアーキテクチャを簡素化し、Outposts オブジェクトストレージに対して管理オペレーションを実行できます。AWS PrivateLink を使用することで、パブリック IP アドレスやプロキシサーバーを使用する必要がなくなります。

Amazon S3 on Outposts の AWS PrivateLink では、インターフェイス VPC エンドポイントを仮想プライベートクラウド (VPC) でプロビジョニングし、S3 on Outposts のバケット管理およびエンドポイント管理 API にアクセスできます。インターフェイス VPC エンドポイントには、VPC またはオンプレミスにデプロイしたアプリケーションから、仮想プライベートネットワーク (VPN) や AWS Direct Connect 経由で直接アクセスできます。バケット管理 API とエンドポイント管理 API には、AWS PrivateLink を介してアクセスできます。AWS PrivateLink は、データ転送 API オペレーション (GET、PUT、同様の API など) をサポートしていません。これらのオペレーションは、S3 on Outposts エンドポイントとアクセスポイントの設定を通じて既にプライベートに転送されています。詳細については、「S3 on Outposts のネットワーキング」を参照してください。

インターフェイスエンドポイントは、VPC 内のサブネットからプライベート IP アドレスが割り当てられた 1 つ以上の Elastic Network Interface (ENI) で表されます。S3 on Outposts のインターフェイスエンドポイントに対するリクエストは、AWS ネットワーク上の S3 on Outposts バケット管理およびエンドポイント管理 API に自動的にルーティングされます。AWS Direct Connect または AWS Virtual Private Network (AWS VPN) を介して、オンプレミスのアプリケーションから VPC 内のインターフェイスエンドポイントにアクセスすることもできます。VPC をオンプレミスネットワークに接続する方法の詳細については、AWS Direct Connect ユーザーガイドおよび AWS Site-to-Site VPN ユーザーガイドを参照してください。

次の図に示すように、インターフェイスエンドポイントは、AWS ネットワークおよび AWS PrivateLink を介してリクエストを S3 on Outposts のバケット管理およびエンドポイント管理 API にルーティングします。

データフロー図は、インターフェイスエンドポイントが Outposts バケットおよびエンドポイント管理 API 上の S3 へのリクエストをどのようにルーティングするかを説明しています。

インターフェイスエンドポイントの一般的な情報については、AWS PrivateLink ガイドインターフェイス VPC エンドポイント (AWS PrivateLink) を参照してください。

AWS PrivateLink を介して S3 on Outposts のバケット管理およびエンドポイント管理 API にアクセスする場合は、VPC の制限が適用されます。詳細については、AWS PrivateLink ガイドインターフェイスエンドポイントのプロパティと制限AWS PrivateLink クォータ を参照してください。

また、AWS PrivateLink では、以下の機能はサポートされていません。

S3 on Outposts インターフェイスエンドポイントへのアクセス

AWS PrivateLink を使用して S3 on Outposts バケット管理およびエンドポイント管理 API にアクセスするには、エンドポイント固有の DNS 名を使用するようにアプリケーションを更新する必要があります。インターフェイスエンドポイントを作成すると、AWS PrivateLink は、Amazon S3 はエンドポイント固有の 2 つのタイプの S3 on Outposts 名 (Regional および zonal) を生成します。

  • Regional DNS 名 – 一意の VPC エンドポイント ID、サービス識別子、AWS リージョン、および vpce.amazonaws.com.rproxy.goskope.comvpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com などが含まれます。

  • Zonal DNS 名— 一意の VPC エンドポイント ID、アベイラビリティーゾーン、サービス識別子、AWS リージョン、および vpce.amazonaws.com たとえば vpce-1a2b3c4d-5e6f-us-east-1a.s3-outposts.us-east-1.vpce.amazonaws.com が含まれます。このオプションは、アーキテクチャがアベイラビリティーゾーンを分離する場合に使用できます。例えば、障害を隔離し、リージョン間のデータ転送コストを削減するために Zonal DNS 名を使用できます。

重要

S3 on Outposts のインターフェイスエンドポイントは、パブリック DNS ドメインから解決されます。S3 on Outposts はプライベート DNS をサポートしていません。すべてのバケット管理およびエンドポイント管理 API には --endpoint-url パラメータを使用します。

--region および --endpoint-url パラメータを使用して S3 on Outposts インターフェイスエンドポイントを介してバケット管理およびエンドポイント管理 API にアクセスします。

例 : エンドポイント URL を使用して S3 コントロール API のバケットをリスト化します。

次の例では、リージョン us-east-1、VPC エンドポイント URL vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com、およびアカウント ID 111122223333 を適切な情報に置き換えます。

aws s3control list-regional-buckets --region us-east-1 --endpoint-url https://vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com --account-id 111122223333

S3 on Outpostsインターフェイスエンドポイントの S3 コントロール API にアクセスするように、SDK を最新バージョンに更新して、エンドポイント URL を使用するようにクライアントを設定します。詳細については、「AWSSDKの例AWS PrivateLink」を参照してください。

SDK for Python (Boto3)
例 : エンドポイント URL を使用して S3 コントロール API にアクセスする

次の例では、リージョン us-east-1と VPC エンドポイント URLURL vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com を適切な情報に置き換えます。

control_client = session.client( service_name='s3control', region_name='us-east-1', endpoint_url='https://vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com' )

詳細については、Boto3 デベロッパーガイドの「Amazon S3 の AWS PrivateLink」を参照してください。

SDK for Java 2.x
例 : エンドポイント URL を使用して S3 コントロール API にアクセスする

次の例では、VPC エンドポイント URL vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com とリージョン Region.US_EAST_1 を適切な情報に置き換えます。

// control client Region region = Region.US_EAST_1; s3ControlClient = S3ControlClient.builder().region(region) .endpointOverride(URI.create("https://vpce-1a2b3c4d-5e6f.s3-outposts.us-east-1.vpce.amazonaws.com")) .build()

詳細については、AWS SDK for Java API リファレンスの「S3ControlClient」を参照してください。

オンプレミスの DNS 設定の更新

エンドポイント固有の DNS 名を使用して S3 on Outposts バケット管理およびエンドポイント管理 API にアクセスする場合、オンプレミス DNS リゾルバーを更新する必要はありません。パブリック S3 on Outposts DNS ドメインからのインターフェイスエンドポイントのプライベート IP アドレスを使用して、エンドポイント固有の DNS 名を解決できます。

S3 on Outposts 用の VPC エンドポイントの作成

S3 on Outposts の VPC インターフェイスエンドポイントを作成するには、「AWS PrivateLink ガイド」の「VPC エンドポイントの作成」を参照してください。

S3 on Outposts のバケットポリシーと VPC エンドポイントポリシーの作成

VPC エンドポイントに S3 on Outposts へのアクセスをコントロールするエンドポイントポリシーをアタッチできます。また、S3 on Outposts バケットポリシーの aws:sourceVpce 条件を使用して、特定の VPC エンドポイントからの特定のバケットへのアクセスを制限することもできます。VPC エンドポイントポリシーを使用すると、S3 on Outposts バケット管理 API およびエンドポイント管理 API へのアクセスを制御できます。バケットポリシーを使用すると、S3 on Outposts バケット管理 API へのアクセスを制御できます。ただし、aws:sourceVpce を使用して S3 on Outposts のオブジェクトアクションへのアクセスを管理することはできません。

S3 on Outposts のアクセスポリシーでは、以下の情報が指定されています。

  • アクションを許可または拒否する AWS Identity and Access Management (IAM) プリンシパル。

  • 許可または拒否されるS3 コントロールアクション。

  • アクションが許可または拒否される S3 on Outposts リソース。

次の例は、バケットまたはエンドポイントへのアクセスを制限するポリシーを示しています。VPC 接続の詳細については、 ホワイトペーパー Amazon Virtual Private Cloud 接続オプションAWSのネットワークから VPC への接続オプション を参照してください。

重要
  • このセクションで説明している VPC エンドポイントに例のポリシーを適用すると、バケットへのアクセスが意図せずにブロックされる場合があります。VPC エンドポイントからの接続に対するバケットのアクセスを制限するバケットのアクセス許可により、バケットへのすべての接続がブロックされる場合があります。この問題を修正する方法については、バケットポリシーの VPC または VPC エンドポイント ID が間違っています。「ポリシーを修正してバケットにアクセスできるようにするにはどうすれば良いですか?」(AWS Support ナレッジセンター) を参照してください。

  • 次のバケットポリシーの例を使用する前に、VPC エンドポイントの ID をユースケースに応じた値に置き換えてください。そうしないと、バケットにアクセスできません。

  • ポリシーで、特定の VPC エンドポイントからの S3 on Outposts バケットへのアクセスだけが許可されている場合、コンソールリクエストは指定の VPC エンドポイントから送信されないため、そのバケットのコンソールアクセスは無効になります。

特定の S3 on Outposts バケットへのアクセスのみを制限するエンドポイントポリシーを作成できます。次のポリシーは、GetBucketPolicy アクションのアクセスを example-outpost-bucket のみに制限します。このポリシーを使用するには、例の値を独自の値に置き換えます。

{ "Version": "2012-10-17", "Id": "Policy1415115909151", "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": {"AWS":"111122223333"}, "Action": "s3-outposts:GetBucketPolicy", "Effect": "Allow", "Resource": "arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket" } ] }

次の S3 on Outposts バケットポリシーは、vpce-1a2b3c4dVPC エンドポイントを使用する example-outpost-bucket バケットの GetBucketPolicy へのアクセスを拒否します。

aws:sourceVpce 条件はエンドポイントを指定し、VPC エンドポイントリソースの Amazon リソースネーム (ARN) を必要とせず、エンドポイント ID のみを指定します。このポリシーを使用するには、例の値を独自の値に置き換えます。

{ "Version": "2012-10-17", "Id": "Policy1415115909152", "Statement": [ { "Sid": "Deny-access-to-specific-VPCE", "Principal": {"AWS":"111122223333"}, "Action": "s3-outposts:GetBucketPolicy", "Effect": "Deny", "Resource": "arn:aws:s3-outposts:region:123456789012:outpost/op-01ac5d28a6a232904/bucket/example-outpost-bucket", "Condition": { "StringEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"} } } ] }