

# AWS PrivateLink for Amazon S3
<a name="privatelink-interface-endpoints"></a>

AWS PrivateLink for Amazon S3 では、Virtual Private Cloud (VPC) で*インターフェイス VPC エンドポイント* (インターフェイスエンドポイント) をプロビジョニングできます。これらのエンドポイントは、オンプレミスにあるアプリケーションから VPN および Direct Connect 経由で、または別の AWS リージョン にあるアプリケーションから VPC ピアリング経由で直接アクセスできます。

インターフェイスエンドポイントは、VPC 内のサブネットからプライベート IP アドレスが割り当てられた 1 つ以上の Elastic Network Interface (ENI) で表されます。インターフェイスエンドポイントを介した Amazon S3 へのリクエストは、Amazon ネットワークに残ります。AWS Direct Connect または AWS Virtual Private Network (Site-to-Site VPN) を介して、オンプレミスのアプリケーションから VPC 内のインターフェイスエンドポイントにアクセスすることもできます。VPC をオンプレミスネットワークに接続する方法の詳細については、[Direct Connect ユーザーガイド](https://docs.aws.amazon.com/directconnect/latest/UserGuide/Welcome.html)および [AWS Site-to-Site VPN ユーザーガイド](https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html)を参照してください。

インターフェイスエンドポイントの一般的な情報については、*AWS PrivateLink ガイド*の[インターフェイス VPC エンドポイント (AWS PrivateLink) ](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html)を参照してください。

**Topics**
+ [Amazon S3 の VPC エンドポイントのタイプ](#types-of-vpc-endpoints-for-s3)
+ [AWS PrivateLink for Amazon S3 の制約と制限](#privatelink-limitations)
+ [VPC エンドポイントの作成](#s3-creating-vpc)
+ [Amazon S3 インターフェイスエンドポイントへのアクセス](#accessing-s3-interface-endpoints)
+ [VPC エンドポイントの IP アドレスタイプ](#privatelink-ip-address-types)
+ [VPC エンドポイントの DNS レコード IP タイプ](#privatelink-dns-record-types)
+ [プライベート DNS](#private-dns)
+ [S3 インターフェイスエンドポイントからバケット、アクセスポイント、および Amazon S3 コントロール API オペレーションにアクセスする](#accessing-bucket-and-aps-from-interface-endpoints)
+ [オンプレミスの DNS 設定の更新](#updating-on-premises-dns-config)
+ [Amazon S3 用の VPC エンドポイントポリシーの作成](#creating-vpc-endpoint-policy)

## Amazon S3 の VPC エンドポイントのタイプ
<a name="types-of-vpc-endpoints-for-s3"></a>

Amazon S3 へのアクセスには、*ゲートウェイエンドポイント*と*インターフェイスエンドポイント* (AWS PrivateLink を使用) の 2 つのタイプの VPC エンドポイントを使用できます。*ゲートウェイエンドポイント*は、AWS ネットワーク経由で VPC から Amazon S3 にアクセスするために、ルートテーブルで指定するゲートウェイです。*インターフェイスエンドポイント*は、プライベート IP アドレスを使用して、VPC 内、オンプレミス、または VPC ピアリングや AWS リージョン を使用する別の AWS Transit Gateway にある VPC から Amazon S3 にリクエストをルーティングすることにより、ゲートウェイエンドポイントの機能を拡張します。詳細については、「[VPC ピア機能とは](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html)」および「[Transit Gateway vs VPC peering](https://docs.aws.amazon.com/whitepapers/latest/building-scalable-secure-multi-vpc-network-infrastructure/transit-gateway-vs-vpc-peering.html)」(Transit Gateway と VPC ピアリング) を参照してください。

インターフェイスエンドポイントは、ゲートウェイエンドポイントと互換性があります。VPC 内に既存のゲートウェイエンドポイントがある場合は、同じ VPC で両方のタイプのエンドポイントを使用できます。


|  Amazon S3 のゲートウェイエンドポイント  |  Amazon S3 のインターフェイスエンドポイント  | 
| --- | --- | 
|  いずれの場合も、ネットワークトラフィックは AWS ネットワーク上に残ります。  | 
|  Amazon S3 パブリック IP アドレスを使用する  |  VPC のプライベート IP アドレスを使用して Amazon S3 にアクセスする  | 
|  同じ Amazon S3 DNS 名を使用する  |  [エンドポイント固有の Amazon S3 DNS 名を要求する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#accessing-s3-interface-endpoints)  | 
|  オンプレミスからのアクセスを許可しない  |  オンプレミスからのアクセスを許可する  | 
|  別の AWS リージョン からのアクセスを許可しない  |  VPC ピアリングまたは AWS Transit Gateway を使用する別の AWS リージョンにある VPC からのアクセスを許可する  | 
|  課金されない  |  請求される  | 

詳細については、「*AWS PrivateLink ガイド*」の「[ゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)」および「[インターフェイス VPC エンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html)」を参照してください。

## AWS PrivateLink for Amazon S3 の制約と制限
<a name="privatelink-limitations"></a>

VPC 制限は、AWS PrivateLink for Amazon S3 に適用されます。詳細については、*AWS PrivateLink ガイド*の「[インターフェイスエンドポイントの考慮事項](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-interface.html#vpce-interface-limitations)」と「[AWS PrivateLink クォータ](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-limits-endpoints.html)」を参照してください。また、以下の制約も適用されます。

Amazon S3 のインターフェースエンドポイントは、以下をサポートしていません。
+ [連邦情報処理規格 (FIPS) エンドポイント](https://aws.amazon.com/compliance/fips/)
+ [ウェブサイトエンドポイント](WebsiteEndpoints.md)
+ [レガシーグローバルエンドポイント](VirtualHosting.md#deprecated-global-endpoint)
+ [S3 ダッシュリージョンのエンドポイント](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html)
+ 異なる AWS リージョン のバケット間での [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) または [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) の使用
+ Transport Layer Security (TLS) 1.0
+ Transport Layer Security (TLS) 1.1
+ Transport Layer Security (TLS) 1.3
+ ハイブリッドポスト量子 Transport Layer Security (TLS)

## VPC エンドポイントの作成
<a name="s3-creating-vpc"></a>

VPC インターフェイスエンドポイントを作成するには、*AWS PrivateLink ガイド*の「[VPC エンドポイントの作成](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)」を参照してください。VPC ゲートウェイエンドポイントを作成するには、「*AWS PrivateLink ガイド*」の「[ゲートウェイエンドポイントを作成する](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#create-gateway-endpoint-s3)」を参照してください。

## Amazon S3 インターフェイスエンドポイントへのアクセス
<a name="accessing-s3-interface-endpoints"></a>

インターフェイスエンドポイントを作成すると、Amazon S3 はエンドポイント固有の 2 つのタイプの S3 DNS 名 (*Regional* および *zonal*) を生成します。
+ *Regional* DNS 名には、一意の VPC エンドポイント ID、サービス識別子、AWS リージョン、およびその名前の `vpce.amazonaws.com` が含まれます。例えば、VPC エンドポイント ID `vpce-1a2b3c4d` の場合、生成される DNS 名は `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 の VPC エンドポイントは、IPv4、IPv6、デュアルスタックなど、さまざまなタイプの IP アドレスをサポートしています。「[VPC エンドポイントの IP アドレスタイプ](#privatelink-ip-address-types)」および「[VPC エンドポイントの DNS レコード IP タイプ](#privatelink-dns-record-types)」を参照してください。

## VPC エンドポイントの IP アドレスタイプ
<a name="privatelink-ip-address-types"></a>

Amazon S3 の VPC エンドポイントは、次のようなさまざまなタイプの IP アドレスをサポートしています。
+ ** (IPv4**)

  VPC エンドポイントは、接続に IPv4 アドレスのみを使用するように設定できます。
+ **IPv6**

  VPC エンドポイントは、接続に IPv6 アドレスのみを使用するように設定できます。
+ **デュアルスタック**

  VPC エンドポイントはデュアルスタックモードで設定でき、IPv4 アドレスと IPv6 アドレスの両方を同時にサポートします。これにより、IPv4 または IPv6 ネットワーク経由で Amazon S3 に柔軟にアクセスできます。

VPC エンドポイントに選択する IP アドレスタイプは、アプリケーションとインフラストラクチャのネットワーク要件によって異なります。考慮事項には、VPC、オンプレミスネットワーク、Amazon S3 へのインターネット接続で使用される IP アドレス指定スキームが含まれる場合があります。詳細については、「*Amazon Virtual Private Cloud* ガイド」の「[インターフェイスエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-service-ip-address-type)」と「[ゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-ip-address-type)」の IP アドレスタイプを参照してください。

## VPC エンドポイントの DNS レコード IP タイプ
<a name="privatelink-dns-record-types"></a>

VPC エンドポイントを呼び出すとき、AWS のサービスは IP アドレスタイプに応じて `A` レコード、`AAAA` レコード、または `A` レコードと `AAAA` レコードの両方を返すことができます。AWS サービスが返すレコードタイプは、DNS レコード IP タイプを変更することでカスタマイズできます。以下の表には、サポートされている DNS レコードの IP タイプと IP アドレスタイプが記載されています。


| サポートされている IP アドレスのタイプ | DNS レコード IP タイプ | 
| --- | --- | 
| IPv4 | IPv4 | 
| IPv6 | IPv6 | 
| デュアルスタック | デュアルスタック、IPv4、IPv6、サービス定義 | 

### Amazon S3 のサービス定義 DNS レコード IP タイプの設定
<a name="privatelink-dns-record-types-configure"></a>

Amazon S3 のゲートウェイエンドポイントを作成し、DNS レコード IP タイプをサービス定義として設定し、リージョンサービスエンドポイント (`s3.us-east-2.amazonaws.com` など) を使用する場合、Amazon S3 はクライアントに `A` レコードを返します。対照的に、ゲートウェイエンドポイントを作成し、デュアルスタックサービスエンドポイント (`s3.dualstack.us-east-2.amazonaws.com` など) を使用していて、DNS レコード IP タイプを `service-defined` として選択すると、Amazon S3 は `A` と `AAAA` の両方のレコードをクライアントに返します。

同様に、プライベート DNS を有効にしてインターフェイスエンドポイントを作成し、DNS レコードタイプとして定義されたサービスを選択した場合、リージョンのサービスエンドポイント (`s3.us-east-2.amazonaws.com` など) について、Amazon S3 はクライアントに `A` レコードを返します。一方、デュアルスタックサービスエンドポイント (`s3.dualstack.us-east-2.amazonaws.com` など) の場合、Amazon S3 は `A` と `AAAA` の両方のレコードを返します。詳細については、「*VPC ユーザーガイド*」の「[インターフェイスエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/privatelink-access-aws-services.html#aws-services-dns-record-ip-type)」と「[ゲートウェイエンドポイント](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html#gateway-endpoint-dns-record-ip-type)」の DNS レコード IP タイプを参照してください。

以下の表には、ゲートウェイおよびインターフェイスエンドポイントでサポートされている DNS レコード IP タイプが記載されています。


| IP アドレスタイプ | S3 ゲートウェイエンドポイントでサポートされている DNS レコード IP タイプ | S3 インターフェイスエンドポイントでサポートされている DNS レコード IP タイプ  | 
| --- | --- | --- | 
| IPv4 | IPv4、サービス定義\$1 | IPv4 | 
| IPv6 | IPv6、サービス定義\$1 | IPv6 | 
| デュアルスタック | IPv4、IPv6、デュアルスタック、サービス定義\$1 | デュアルスタック\$1、IPv4、IPv6、サービス定義 | 

\$1デフォルトの DNS レコード IP タイプを表します。

既存の S3 ゲートウェイまたはインターフェイスエンドポイントで IPv6 接続を有効にするには、エンドポイントの IP アドレスタイプを **Dualstack** に更新します。更新すると、Amazon S3 はゲートウェイエンドポイントの IPv6 アドレスでルーティングテーブルを自動的に更新します。その後、`s3.dualstack.us-east-2.amazonaws.com` などのデュアルスタックサービスエンドポイントを使用できます。Amazon S3 はデュアルスタック S3 DNS クエリの `A` と `AAAA` の両方のレコードを返します。`s3.us-east-2.amazonaws.com` などのリージョンサービスエンドポイントで IPV6 を使用する場合は、エンドポイントの IP アドレスタイプを **Dualstack** に変更し、DNS レコードの IP タイプを **Dualstack** に変更します。その後、Amazon S3 はリージョン S3 DNS クエリの `A` と `AAAA` の両方のレコードを返します。

**考慮事項**  
ゲートウェイエンドポイントの IP アドレスタイプが `IPv4`、DNS レコード IP タイプが `service-defined` のデフォルト設定である場合、デュアルスタックサービスエンドポイント (`s3.dualstack.us-east-2.amazonaws.com` など) は、`AAAA` レコードを使用するトラフィックをゲートウェイエンドポイント経由でルーティングしません。代わりに、IPv6 互換パスが存在する場合、このトラフィックはドロップまたはルーティングされます。例えば、仮想プライベートクラウド (VPC) にインターネットゲートウェイがある場合、このシナリオでは IPv6 トラフィックは VPC のインターネットゲートウェイ経由でルーティングされます。トラフィックが常に VPC エンドポイント経由でルーティングされるようにする場合は、指定した VPC エンドポイントが使用されていない場合に特定のバケットへのアクセスを制限する Amazon S3 バケットポリシーを使用できます。詳細については、「[特定の VPC エンドポイントへのアクセスの制限](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies-vpc-endpoint.html#example-bucket-policies-restrict-accesss-vpc-endpoint)」を参照してください。
インターフェイスエンドポイントの IP アドレスタイプのデフォルト設定が IPv4 で、DNS レコード IP タイプが IPv4 の場合、`ass3.dualstack.us-east-2.amazonaws.com` などのデュアルスタックサービスエンドポイントはサポートされていません。デュアルスタックサービスエンドポイントの `A` または `AAAA` レコードを使用するトラフィックは、インターフェイスエンドポイントを介してルーティングされません。代わりに、このトラフィックはドロップされるか、別の互換性のある別のパス (存在する場合) を介してルーティングされます。
サービス定義以外の DNS レコード IP タイプでゲートウェイエンドポイントを作成または変更するには、`enableDnsSupport` と `enableDnsHostnames` VPC 属性の両方を true に設定する必要があります。

## プライベート DNS
<a name="private-dns"></a>

VPC インターフェイスエンドポイント用のプライベート DNS オプションを使用すると、VPC エンドポイント経由の S3 トラフィックのルーティングが簡単になり、アプリケーションで使用できる最も低コストのネットワークパスを活用できます。プライベート DNS オプションを使用すると、インターフェイスエンドポイントのエンドポイント固有の DNS 名を使用するように S3 クライアントを更新したり、DNS インフラストラクチャを管理したりすることなく、Regional S3 トラフィックをルーティングできます。プライベート DNS 名を有効にすると、Regional S3 DNS クエリは次のエンドポイントの AWS PrivateLink のプライベート IP アドレスに解決されます。
+ Regional バケットエンドポイント (例: `s3.us-east-1.amazonaws.com`)
+ 制御エンドポイント (例: `s3-control.us-east-1.amazonaws.com`)
+ アクセスポイントエンドポイント (例: `s3-accesspoint.us-east-1.amazonaws.com`)

VPC にゲートウェイエンドポイントがある場合は、VPC 内リクエストを既存の S3 ゲートウェイエンドポイントに、オンプレミスリクエストをインターフェイスエンドポイントに自動的にルーティングできます。このアプローチでは、VPC 内のトラフィックに課金されないゲートウェイエンドポイントを使用することで、ネットワークコストを最適化できます。オンプレミスアプリケーションは、インバウンドリゾルバーエンドポイントを利用して AWS PrivateLink を使用できます。Amazon は、「Route 53 Resolver」と呼ばれる VPC 用の DNS サーバーを提供しています。インバウンドリゾルバーエンドポイントは、DNS クエリをオンプレミスネットワークから Route 53 Resolver に転送します。

**重要**  
**[インバウンドエンドポイントでのみプライベート DNS を有効にする]** を使用するときに最も低コストのネットワークパスを利用するには、ゲートウェイエンドポイントが VPC に存在している必要があります。ゲートウェイエンドポイントが存在すると、**[インバウンドエンドポイントでのみプライベート DNS を有効にする]** オプションが選択されている場合でも、VPC 内のトラフィックは常に AWS プライベートネットワーク経由でルーティングされます。**[インバウンドエンドポイントでのみプライベート DNS を有効にする]** オプションが選択されている間は、このゲートウェイエンドポイントを維持する必要があります。ゲートウェイエンドポイントを削除する場合は、まず **[インバウンドエンドポイントでのみプライベート DNS を有効にする]** をオフにする必要があります。  
既存のインターフェイスエンドポイントを **[インバウンドエンドポイントでのみプライベート DNS を有効にする]** に更新する場合は、まず VPC に S3 ゲートウェイエンドポイントがあることを確認します。ゲートウェイエンドポイントとプライベート DNS 名の管理の詳細については、*AWS PrivateLink ガイド*の「[ゲートウェイ VPC エンドポイント](https://docs.aws.amazon.com//vpc/latest/privatelink/vpce-gateway.html)」と「[VPC エンドポイントサービスの DNS 名を管理する](https://docs.aws.amazon.com//vpc/latest/privatelink/manage-dns-names.html)」をそれぞれ参照してください。  
**[インバウンドリゾルバーに対してのみプライベート DNS]** を有効にする場合、ゲートウェイエンドポイントとインターフェイスエンドポイントの `dnsRecordIpType` が一致するか、**サービス定義**である必要があります。

**[インバウンドエンドポイントでのみプライベート DNS を有効にする]** オプションは、ゲートウェイエンドポイントをサポートするサービスでのみ使用できます。

**[インバウンドエンドポイントでのみプライベート DNS を有効にする]** を使用する VPC エンドポイントの作成の詳細については、*AWS PrivateLink ガイドの*の「[VPC エンドポイントの作成](https://docs.aws.amazon.com//vpc/latest/privatelink/create-interface-endpoint.html)」を参照してください。

**Amazon VPC コンソールの使用**

コンソールには、**[DNS 名を有効にする]** と **[インバウンドエンドポイントに対してのみプライベート DNS を有効にする]** の 2 つのオプションがあります。**[DNS 名を有効にする]** は、AWS PrivateLink でサポートされているオプションです。**[DNS 名を有効にする]** オプションを使用すると、デフォルトのパブリックエンドポイント DNS 名にリクエストを送信しながら、Amazon S3 への Amazon のプライベート接続を使用できます。このオプションを有効にすると、お客様はアプリケーションで使用できる最も低コストのネットワークパスを利用できます。

Amazon S3 の既存または新しい VPC インターフェイスエンドポイントでプライベート DNS 名を有効にすると、デフォルトで **[インバウンドエンドポイントに対してのみプライベート DNS を有効にする]** オプションが選択されます。このオプションを選択すると、アプリケーションはオンプレミストラフィックのインターフェイスエンドポイントのみを使用します。この VPC 内トラフィックは、低コストのゲートウェイエンドポイントを自動的に使用します。または、**[インバウンドエンドポイントのみプライベート DNS を有効にする]** をオフにして、すべての S3 リクエストをインターフェイスエンドポイントにルーティングすることもできます。

** の使用AWS CLI**

`PrivateDnsOnlyForInboundResolverEndpoint` の値を指定しない場合は、デフォルトで `true` になります。ただし、VPC は設定を適用する前に、VPC にゲートウェイエンドポイントが存在することを確認します。ゲートウェイエンドポイントが VPC に存在する場合、呼び出しは成功します。そうでない場合は、以下のエラーメッセージが表示されます。

PrivateDnsOnlyForInboundResolverEndpoint を true に設定するには、VPC *vpce\$1id* にサービスのゲートウェイエンドポイントが必要です。

**新しい VPC インターフェイスエンドポイントの場合**

`private-dns-enabled` および `dns-options` 属性を使用して、コマンドラインからプライベート DNS を有効にします。`dns-options` 属性の `PrivateDnsOnlyForInboundResolverEndpoint` オプションは `true` に設定する必要があります。`user input placeholders` を、ユーザー自身の情報に置き換えます。

```
aws ec2 create-vpc-endpoint \
--region us-east-1 \
--service-name s3-service-name \
--vpc-id client-vpc-id \
--subnet-ids client-subnet-id \ 
--vpc-endpoint-type Interface  \
--private-dns-enabled  \
--ip-address-type ip-address-type \ 
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true \
--security-group-ids client-sg-id
```

**既存の VPC エンドポイントの場合**

既存の VPC エンドポイントにプライベート DNS を使用する場合は、以下のコマンド例を使用して、`user input placeholders` を独自の情報に置き換えます。

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=false
```

既存の VPC エンドポイントを更新して Inbound Resolver のプライベート DNS のみを有効にする場合は、次の例を使用して、サンプル値を独自の値に置き換えてください。

```
aws ec2 modify-vpc-endpoint \
--region us-east-1 \
--vpc-endpoint-id client-vpc-id \
--private-dns-enabled \
--dns-options PrivateDnsOnlyForInboundResolverEndpoint=true
```

## S3 インターフェイスエンドポイントからバケット、アクセスポイント、および Amazon S3 コントロール API オペレーションにアクセスする
<a name="accessing-bucket-and-aps-from-interface-endpoints"></a>

AWS CLI または AWS SDK を使用し、S3 インターフェイスエンドポイントを介してバケット、S3 アクセスポイント、および Amazon S3 コントロール API オペレーションにアクセスできます。

次の図は、VPC コンソールの [**Details**] (詳細) タブを示しています。ここでは、VPC エンドポイントの DNS 名を確認できます。この例では、*VPC エンドポイント ID (vpce−id)* は `vpce-0e25b8cdd720f900e` で、*DNS 名*は `*.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com` です。







![\[VPC コンソールの [詳細] タブ。\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/vpc-console-details-tab.png)


DNS 名を使用してリソースにアクセスする場合は、*\$1* を適切な値に置き換えてください。`*` の代わりに使用する適切な値は次のとおりです。
+ `bucket`
+ `accesspoint`
+ `control`

例えば、バケットにアクセスするには、次のような *DNS 名*を使用します。

 `bucket.vpce-0e25b8cdd720f900e-argc85vg.s3.us-east-1.vpce.amazonaws.com`

DNS 名を使用してバケット、アクセスポイント、Amazon S3 Control API オペレーションにアクセスする方法の例については、[AWS CLI の例](#privatelink-aws-cli-examples) および [AWS SDK の例](#privatelink-aws-sdk-examples) の以下のセクションを参照してください。

エンドポイント固有の DNS 名の表示方法の詳細については、[VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/privatelink/view-vpc-endpoint-service-dns-name.html)の「*Viewing endpoint service private DNS name configuration*」(エンドポイントサービスのプライベート DNS 名設定の表示) を参照してください。

### AWS CLI の例
<a name="privatelink-aws-cli-examples"></a>

AWS CLI コマンドで S3 インターフェイスエンドポイントを介して S3 バケット、S3 アクセスポイント、または Amazon S3 コントロール API 操作にアクセスするには、`--region` および `--endpoint-url` パラメータを使用します。

**例: エンドポイント URL を使用したバケット内のオブジェクトのリスト化**  
次の例では、バケット名 `my-bucket`、リージョン `us-east-1`、VPC エンドポイント ID の DNS 名 `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

```
aws s3 ls s3://my-bucket/ --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
```

**例: エンドポイント URL を使用したアクセスポイントのオブジェクトのリスト化**
+ **方法 1** — アクセスポイントエンドポイントでアクセスポイントの Amazon リソースネーム (ARN) を使用する

  ARN `us-east-1:123456789012:accesspoint/accesspointexamplename`、リージョン `us-east-1`、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

  ```
  aws s3api list-objects-v2 --bucket arn:aws:s3:us-east-1:123456789012:accesspoint/accesspointexamplename --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```

  コマンドを正常に実行できない場合は、AWS CLI を最新バージョンに更新してからやり直してください。更新手順について詳細は、*AWS Command Line Interface ユーザーガイド*の「[AWS CLI の最新バージョンをインストールまたは更新](https://docs.aws.amazon.com//cli/latest/userguide/getting-started-install.html#getting-started-install-instructions)」を参照してください。
+ **方法 2** — リージョンバケットエンドポイントでアクセスポイントのエイリアスを使用する

  次の例では、アクセスポイントエイリアス `accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias`、リージョン `us-east-1`、および VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

  ```
  aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```
+ **方法 3** — アクセスポイントのエイリアスをアクセスポイントエンドポイントで使用する

  まず、バケットをホスト名の一部として含む S3 エンドポイントを作成するには、`aws s3api` が使用するアドレス指定スタイルを `virtual` に設定します。`AWS configure` の詳細については、*AWS Command Line Interface ユーザーガイド*の「[設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」を参照してください。

  ```
  aws configure set default.s3.addressing_style virtual
  ```

  次に、次の例では、アクセスポイントのエイリアス `accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias`、リージョン `us-east-1`、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。アクセスポイントエイリアスの詳細については、「[アクセスポイントエイリアス](access-points-naming.md#access-points-alias)」を参照してください。

  ```
  aws s3api list-objects-v2 --bucket accesspointexamplename-8tyekmigicmhun8n9kwpfur39dnw4use1a-s3alias --region us-east-1 --endpoint-url https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com
  ```

**例: エンドポイント URL を使用して、S3 コントロール API オペレーションでジョブを一覧表示する**  
次の例では、リージョン `us-east-1`、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com`、およびアカウント ID `12345678` をユーザー自身の情報に置き換えます。

```
aws s3control --region us-east-1 --endpoint-url https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com list-jobs --account-id 12345678
```

### AWS SDK の例
<a name="privatelink-aws-sdk-examples"></a>

AWS SDK を使用する際に S3 インターフェイス エンドポイントを介して S3 バケット、S3 アクセスポイント、または Amazon S3 コントロール API オペレーションにアクセスするには、SDK を最新バージョンに更新します。S3 インターフェイスエンドポイントを介してバケット、アクセスポイント、または S3 コントロール API オペレーションにアクセスするためのエンドポイント URL を使用するようにクライアントを設定します。

------
#### [ SDK for Python (Boto3) ]

**例: エンドポイント URL を使用して S3 バケットにアクセスする**  
次の例では、リージョン `us-east-1` および VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

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

**例: エンドポイント URL を使用して S3 アクセスポイントにアクセスする**  
次の例では、リージョン `us-east-1` および VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

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

**例: エンドポイント URL を使用して Amazon S3 コントロール API にアクセスする**  
次の例では、リージョン `us-east-1` および VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

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

------
#### [ SDK for Java 1.x ]

**例: エンドポイント URL を使用して S3 バケットにアクセスする**  
次の例では、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

```
// bucket client
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
List<Bucket> buckets = s3.listBuckets();
```

**例: エンドポイント URL を使用して S3 アクセスポイントにアクセスする**  
次の例では、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` と ARN `us-east-1:123456789012:accesspoint/prod` をユーザー自身の情報に置き換えます。

```
// accesspoint client
final AmazonS3 s3accesspoint = AmazonS3ClientBuilder.standard().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
ObjectListing objects = s3accesspoint.listObjects("arn:aws:s3:us-east-1:123456789012:accesspoint/prod");
```

**例: エンドポイント URL を使用して Amazon S3 コントロール API オペレーションにアクセスする**  
次の例では、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` をユーザー自身の情報に置き換えます。

```
// control client
final AWSS3Control s3control = AWSS3ControlClient.builder().withEndpointConfiguration(
        new AwsClientBuilder.EndpointConfiguration(
                "https://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com",
                Regions.DEFAULT_REGION.getName()
        )
).build();
final ListJobsResult jobs = s3control.listJobs(new ListJobsRequest());
```

------
#### [ SDK for Java 2.x ]

**例: エンドポイント URL を使用して S3 バケットにアクセスする**  
次の例では、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` とリージョン `Region.US_EAST_1` をユーザー自身の情報に置き換えます。

```
// bucket client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)
                   .endpointOverride(URI.create("https://bucket.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                   .build()
```

**例: エンドポイント URL を使用して S3 アクセスポイントにアクセスする**  
次の例では、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com` とリージョン `Region.US_EAST_1` をユーザー自身の情報に置き換えます。

```
// accesspoint client
Region region = Region.US_EAST_1;
s3Client = S3Client.builder().region(region)
                   .endpointOverride(URI.create("https://accesspoint.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                   .build()
```

**例: エンドポイント URL を使用して Amazon S3 コントロール API にアクセスする**  
次の例では、VPC エンドポイント ID `vpce-1a2b3c4d-5e6f.s3.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://control.vpce-1a2b3c4d-5e6f.s3.us-east-1.vpce.amazonaws.com"))
                                 .build()
```

------

## オンプレミスの DNS 設定の更新
<a name="updating-on-premises-dns-config"></a>

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

### Amazon S3 にアクセスするためのインターフェイスエンドポイントの使用 (VPC 内のゲートウェイエンドポイントまたはインターネットゲートウェイの使用なし)
<a name="using-interface-endpoints"></a>

次の図に示すように、VPC 内のインターフェイスエンドポイントは、VPC 内アプリケーションとオンプレミスアプリケーションの両方を Amazon ネットワーク経由で Amazon S3 にルーティングできます。

![\[インターフェイスエンドポイントと AWS PrivateLink を使用した、Amazon S3 へのアクセスを示すデータフロー図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/interface-endpoints.png)


図は、以下を示しています。
+ オンプレミスネットワークでは、Direct Connect または Site-to-Site VPN を使用して VPC A に接続します。
+ オンプレミスと VPC A のアプリケーションでは、エンドポイント固有の DNS 名を使用して S3 インターフェイスエンドポイントを介して Amazon S3 にアクセスします。
+ オンプレミスのアプリケーションは、Direct Connect (または Site-to-Site VPN) を介して VPC 内のインターフェイスエンドポイントにデータを送信します。AWS PrivateLink は、AWS ネットワークを経由してデータをインターフェイスエンドポイントから Amazon S3 に移動します。
+ VPC 内アプリケーションは、インターフェイスエンドポイントにトラフィックの送信も行います。AWS PrivateLink は、AWS ネットワークを経由してデータをインターフェイスエンドポイントから Amazon S3 に移動します。

### Amazon S3 にアクセスするための、ゲートウェイエンドポイントとインターフェイスエンドポイントの同じ VPC における併用
<a name="using-gateway-and-interface-endpoints"></a>

次の図に示すように、インターフェイスエンドポイントを作成し、同じ VPC 内に既存のゲートウェイエンドポイントを保持できます。このアプローチにより、VPC 内アプリケーションがゲートウェイエンドポイントを介して Amazon S3 に引き続きアクセスすることを許可します。これについての請求はありません。その後、オンプレミスのアプリケーションだけがインターフェイスエンドポイントを使用して Amazon S3 にアクセスします。この方法で Amazon S3 にアクセスするには、Amazon S3 のエンドポイント固有の DNS 名を使用するようにオンプレミスのアプリケーションを更新する必要があります。

![\[ゲートウェイエンドポイントとインターフェイスエンドポイントを使用した Amazon S3 へのアクセスを示すデータフロー図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/interface-and-gateway-endpoints.png)


この図表は、以下を示すものです: 
+ オンプレミスのアプリケーションは、エンドポイント固有の DNS 名を使用し、Direct Connect (または Site-to-Site VPN) を介して VPC 内のインターフェイスエンドポイントにデータを送信します。AWS PrivateLink は、AWS ネットワークを経由してデータをインターフェイスエンドポイントから Amazon S3 に移動します。
+ VPC 内アプリケーションは、デフォルトのリージョンの Amazon S3 名を使用し、AWS ネットワークを介して Amazon S3 に接続するゲートウェイエンドポイントにデータを送信します。

ゲートウェイエンドポイントの詳細については、[VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/privatelink/vpce-gateway.html)の*ゲートウェイ VPC エンドポイント*を参照してください。

## Amazon S3 用の VPC エンドポイントポリシーの作成
<a name="creating-vpc-endpoint-policy"></a>

VPC エンドポイントに Amazon S3 へのアクセスをコントロールするエンドポイントポリシーをアタッチできます。このポリシーでは、以下の情報を指定します。
+ アクションを実行できる AWS Identity and Access Management (IAM) プリンシパル 
+ 実行可能なアクション 
+ アクションを実行できるリソース 

Amazon S3 バケットポリシーを使用して、バケットポリシーの `aws:sourceVpce` 条件を使用して、特定の VPC エンドポイントからの特定のバケットへのアクセスを制限することもできます。次の例は、バケットまたはエンドポイントへのアクセスを制限するポリシーを示しています。

**Topics**
+ [例: VPC エンドポイントから特定のバケットへのアクセスの制限](#privatelink-example-restrict-access-to-bucket)
+ [例: VPC エンドポイントから特定のアカウントのバケットへのアクセスの制限](#privatelink-example-access-bucket-in-specific-account-only)
+ [例: S3 バケットポリシーでの特定の VPC エンドポイントへのアクセスの制限](#privatelink-example-restrict-access-to-vpc-endpoint)

### 例: VPC エンドポイントから特定のバケットへのアクセスの制限
<a name="privatelink-example-restrict-access-to-bucket"></a>

特定の Amazon S3 バケットへのアクセスのみを制限するエンドポイントポリシーを作成できます。このタイプのポリシーは、VPC で S3 バケットを使用する他の AWS のサービス がある場合に便利です。次のバケットポリシーは、`amzn-s3-demo-bucket1` へのアクセスのみを制限します。このエンドポイントポリシーを使用するには、`amzn-s3-demo-bucket1` をバケットの名前に置き換えます。

------
#### [ JSON ]

****  

```
{
  "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:::amzn-s3-demo-bucket1",
                   "arn:aws:s3:::amzn-s3-demo-bucket1/*"]
    }
  ]
}
```

------

### 例: VPC エンドポイントから特定のアカウントのバケットへのアクセスの制限
<a name="privatelink-example-access-bucket-in-specific-account-only"></a>

特定の AWS アカウント の S3 バケットへのアクセスのみを制限するエンドポイントポリシーを作成できます。VPC 内のクライアントが所有していないバケットにアクセスできないようにするには、エンドポイント ポリシーで次のステートメントを使用してください。次のステートメント例では、単一の AWS アカウント、*`111122223333`* が所有するリソースへのアクセスを制限するポリシーを作成します。

```
{
  "Statement": [
    {
      "Sid": "Access-to-bucket-in-specific-account-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Deny",
      "Resource": "arn:aws:s3:::*",
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceAccount": "111122223333"
        }
      }
    }
  ]
}
```

**注記**  
アクセスされるリソースの AWS アカウント ID を指定するには、IAM ポリシーで `aws:ResourceAccount` キーまたは `s3:ResourceAccount` キーを使用できます。ただし、一部の AWS のサービス は AWS マネージドバケットへのアクセスに依存していることに注意してください。したがって、IAM ポリシーで `aws:ResourceAccount` キーまたは `s3:ResourceAccount` キーを使用することは、これらのリソースへのアクセスにも影響する可能性があります。

### 例: S3 バケットポリシーでの特定の VPC エンドポイントへのアクセスの制限
<a name="privatelink-example-restrict-access-to-vpc-endpoint"></a>

次の Amazon S3 バケットポリシーは、VPC エンドポイント `vpce-1a2b3c4d` からのみ、特定のバケット、`amzn-s3-demo-bucket2` へのアクセスを許可します。指定されたエンドポイントを使用していない場合、ポリシーによりバケットへのすべてのアクセスが拒否されます。`aws:sourceVpce` 条件はエンドポイントを指定し、VPC エンドポイントリソースの Amazon リソースネーム (ARN) を必要とせず、エンドポイント ID のみを指定します。このバケットポリシーを使用するには、`amzn-s3-demo-bucket2` と `vpce-1a2b3c4d` をバケット名とエンドポイントに置き換えてください。

**重要**  
次の Amazon S3 バケットポリシーを適用して特定の VPC エンドポイントのみへのアクセスを制限すると、バケットへのアクセスが意図せずにブロックされる場合があります。特に VPC エンドポイントからの接続に対するバケットのアクセスを制限することを目的としたバケットのポリシーにより、バケットへのすべての接続がブロックされる場合があります。この問題を修正する方法については、[バケットポリシーの VPC または VPC エンドポイント ID が間違っています。ポリシーを修正してバケットにアクセスできるようにするにはどうすれば良いですか?](https://aws.amazon.com/premiumsupport/knowledge-center/s3-regain-access/)」(*サポート ナレッジセンター*) を参照してください。
次のポリシーの例を使用する前に、VPC エンドポイントの ID をユースケースに応じた値に置き換えてください。そうしないと、バケットにアクセスできません。
このポリシーは、*コンソール*リクエストが指定の VPC エンドポイントを経由していない場合、指定先のバケットへのコンソールアクセスを無効にします。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id": "Policy1415115909152",
  "Statement": [
    { "Sid": "Access-to-specific-VPCE-only",
      "Principal": "*",
      "Action": "s3:*",
      "Effect": "Deny",
      "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket2",
                   "arn:aws:s3:::amzn-s3-demo-bucket2/*"],
      "Condition": {"StringNotEquals": {"aws:sourceVpce": "vpce-1a2b3c4d"}}
    }
  ]
}
```

------

ポリシーの例については、[VPC ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html#vpc-endpoints-policies-s3)の *Amazon S3 のエンドポイント*を参照してください。

VPC 接続の詳細については、[ ホワイトペーパー ](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/network-to-amazon-vpc-connectivity-options.html)Amazon Virtual Private Cloud 接続オプションAWSの[ネットワークから VPC への接続オプション](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/welcome.html) を参照してください。