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 エンドポイントの詳細については、「AWS PrivateLink for Amazon S3」を参照してください。
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_endpoint
を true
に設定すると、s3
と s3api
AWS CLI コマンドによるすべての Amazon S3 リクエストが指定されたリージョンのデュアルスタックのエンドポイントに転送されます。--region
オプションを使用して設定ファイルまたはコマンドでリージョンを指定します。
AWS CLI でデュアルスタックのエンドポイントを使用する場合、path
と virtual
の両方のアドレス形式がサポートされます。バケット名がホスト名または URL の一部にある場合、設定ファイルにあるアドレス形式が統制します。デフォルトでは、CLI は可能な限り仮想形式の使用を試みますが、必要に応じてパス形式に戻します。詳細については、AWS CLI Amazon S3 の設定を参照してください。
以下の例に示すように、デフォルトプロファイルで use_dualstack_endpoint
を true
に、また addressing_style
を virtual
に設定するようコマンドを使用して構成を変更することもできます。
$
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.comhttp://s3.dualstack.
パラメータをaws-region
.amazonaws.coms3
またはs3api
に設定します。$
aws s3api list-objects --bucketbucketname
--endpoint-url https://s3.dualstack.aws-region
.amazonaws.comAWS Config ファイル内で別々のプロファイルを設定する。たとえば、
use_dualstack_endpoint
をtrue
に設定するプロファイルと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 サンプルの作成およびテストの手順については、「AWS SDK for 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 のサンプルの一覧については、プログラムによるオブジェクトキーのリスト化を参照してください。
コード例を設定および実行する方法の詳細については、「AWS SDK for .NET デベロッパーガイド」の「AWS SDK for .NET の開始方法」 を参照してください。
REST API からのデュアルスタックのエンドポイントの使用
REST API を使用したデュアルスタックのエンドポイントへのリクエストについては、「REST API を使用したデュアルスタックのエンドポイントへのリクエストの実行」を参照してください。