Amazon S3 デュアルスタックのエンドポイントの使用 - Amazon Simple Storage Service

Amazon S3 デュアルスタックのエンドポイントの使用

Amazon S3 デュアルスタックエンドポイントは、IPv6 および IPv4 を使用した S3 バケットへのリクエストをサポートしています。このセクションは、スタックのエンドポイントを使用する方法を説明します。

Amazon S3 デュアルスタックのエンドポイントを使用する

デュアルスタックのエンドポイントにリクエストを行うと、バケット URL は IPv6 または IPv4 アドレスに解決されます。IPv6 でのバケットへのアクセスに関する詳細は、「IPv6 経由で Amazon S3 へのリクエストを行う」を参照してください。

REST API を使用する場合、エンドポイント名 (URI) を使用して直接 Amazon S3 エンドポイントにアクセスします。仮想ホスト形式またはパス形式のエンドポイント名を使用することで、デュアルスタックのエンドポイント経由で S3 バケットにアクセスできます。Amazon S3 はリージョンのデュアルスタックエンドポイント名のみをサポートしており、名前の一部としてリージョンを指定する必要があります。

デュアルスタックの仮想ホスト形式とパス形式のエンドポイント名には、次の命名規則を使用します。

  • 仮想ホスティング形式のデュアルスタックのエンドポイント:

    bucketname.s3.dualstack.aws-region.amazonaws.com

     

  • パス形式のデュアルスタックのエンドポイント:

    s3.dualstack.aws-region.amazonaws.com/bucketname

エンドポイント名のスタイルの詳細については、「Amazon S3 バケットに対するアクセスと一覧表示」を参照してください。Amazon S3 エンドポイントのリストは、AWS 全般のリファレンス の「リージョンとエンドポイント」を参照してください。

重要

デュアルスタックのエンドポイントでは、Transfer Acceleration を使用できます。詳細については、「Amazon S3 Transfer Acceleration の開始方法」を参照してください。

注記

Amazon S3 へのアクセスに使用する 2 つのタイプの VPC エンドポイント (インターフェイス VPC エンドポイントとゲートウェイ VPC エンドポイント) は、デュアルスタックをサポートしていません。Amazon S3 向け VPC エンドポイントの詳細については、「Amazon S3 の場合は AWS PrivateLink」を参照してください。

AWS Command Line Interface (AWS CLI) や AWS SDK を使用する場合、パラメータまたはフラグを使ってデュアルスタックのエンドポイントに変更できます。設定ファイルの Amazon S3 エンドポイントに上書きしてデュアルスタックのエンドポイントを直接指定することもできます。以下のセクションでは、デュアルスタックのエンドポイントを AWS CLI と AWS SDK から使用する方法を説明します。

AWS CLI からのデュアルスタックのエンドポイントの使用

このセクションでは、デュアルスタックのエンドポイントへリクエストするのに使用される AWS CLI コマンドの例を示します。AWS CLI をセットアップする手順については、「AWS CLI を使用した Amazon S3 での開発」を参照してください。

AWS Config ファイルのプロファイル内で設定値 use_dualstack_endpointtrue に設定すると、s3s3api AWS CLI コマンドによるすべての Amazon S3 リクエストが指定されたリージョンのデュアルスタックのエンドポイントに転送されます。--region オプションを使用して設定ファイルまたはコマンドでリージョンを指定します。

AWS CLI でデュアルスタックのエンドポイントを使用する場合、pathvirtual の両方のアドレス形式がサポートされます。バケット名がホスト名または URL の一部にある場合、設定ファイルにあるアドレス形式が統制します。デフォルトでは、CLI は可能な限り仮想形式の使用を試みますが、必要に応じてパス形式に戻します。詳細については、AWS CLI Amazon S3 の設定を参照してください。

以下の例に示すように、デフォルトプロファイルで use_dualstack_endpointtrue に、また addressing_stylevirtual に設定するようコマンドを使用して構成を変更することもできます。

$ aws configure set default.s3.use_dualstack_endpoint true $ aws configure set default.s3.addressing_style virtual

すべてのコマンドではなく、指定した AWS CLI コマンドについてのみデュアルスタックのエンドポイントを使用するには、次のいずれかの方法を使用できます。

  • コマンドでデュアルスタックのエンドポイントを使用する。その場合は、すべての --endpoint-url または https://s3.dualstack.aws-region.amazonaws.com コマンドで、http://s3.dualstack.aws-region.amazonaws.com パラメータを s3 または s3api に設定します。

    $ aws s3api list-objects --bucket bucketname --endpoint-url https://s3.dualstack.aws-region.amazonaws.com
  • AWS Config ファイル内で別々のプロファイルを設定する。たとえば、use_dualstack_endpointtrue に設定するプロファイルと use_dualstack_endpoint を設定しないプロファイルを作成します。コマンドを実行する際には、デュアルスタックのエンドポイントを使用するかどうかによって、適切なプロファイルを指定します。

注記

AWS CLI を使用していると、現在は、デュアルスタックのエンドポイントでは Transfer Acceleration を使用できません。ただし、AWS CLI は間もなくサポートされるようになります。詳細については、「AWS CLI の使用」を参照してください。

AWS SDK からデュアルスタックのエンドポイントを使用する

このセクションでは、AWS SDK を使用してデュアルスタックのエンドポイントにアクセスする方法の例を示します。

AWS SDK for Java のデュアルスタックのエンドポイントの例

次の例では、AWS SDK for Java を使用して Amazon S3 クライアントの作成時にデュアルスタックエンドポイントを有効化する方法を示します。

有効な Java サンプルを作成してテストする手順については、「Amazon S3 Java コード例のテスト」を参照してください。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; public class DualStackEndpoints { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { // Create an Amazon S3 client with dual-stack endpoints enabled. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .withDualstackEnabled(true) .build(); s3Client.listObjects(bucketName); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

Windows で AWS SDK for Java を使用している場合は、必要に応じて、次の Java 仮想マシン (JVM) のプロパティを設定します。

java.net.preferIPv6Addresses=true

AWS .NET SDK のデュアルスタックのエンドポイントの例

AWS SDK for .NET を使用するときは、次の例に示すように、デュアルスタックのエンドポイントの使用を有効にするため AmazonS3Config クラスを使用します。

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DualStackEndpointTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { var config = new AmazonS3Config { UseDualstackEndpoint = true, RegionEndpoint = bucketRegion }; client = new AmazonS3Client(config); Console.WriteLine("Listing objects stored in a bucket"); ListingObjectsAsync().Wait(); } private static async Task ListingObjectsAsync() { try { var request = new ListObjectsV2Request { BucketName = bucketName, MaxKeys = 10 }; ListObjectsV2Response response; do { response = await client.ListObjectsV2Async(request); // Process the response. foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } Console.WriteLine("Next Continuation Token: {0}", response.NextContinuationToken); request.ContinuationToken = response.NextContinuationToken; } while (response.IsTruncated == true); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }

オブジェクトのリストの .NET のサンプルの一覧については、プログラムによるオブジェクトキーのリスト化を参照してください。

.NET の実用サンプルを作成およびテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

REST API からのデュアルスタックのエンドポイントの使用

REST API を使用したデュアルスタックのエンドポイントへのリクエストについては、「REST API を使用したデュアルスタックのエンドポイントへのリクエストの実行」を参照してください。