Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

Amazon S3 Transfer Acceleration の例

このセクションでは、バケットに対する Amazon S3 Transfer Acceleration を有効にして、有効にしたバケットに高速化エンドポイントを使用する方法の例を示します。AWS SDK でサポートされている一部の言語 (Java、.NET など) では高速化エンドポイントのクライアント設定フラグを使用できるため、Transfer Acceleration 用のエンドポイントを明示的に bucketname.s3-accelerate.amazonaws.com に設定する必要はありません。Transfer Acceleration の詳細については、「Amazon S3 Transfer Acceleration」を参照してください。

Amazon S3 コンソールの使用

Amazon S3 コンソールを使用してバケットに対する Transfer Acceleration を有効にする方法については、Amazon Simple Storage Service コンソールユーザーガイドの「Transfer Acceleration を有効にする」を参照してください。

AWS Command Line Interface (AWS CLI) から Transfer Acceleration を使用する

このセクションでは、Transfer Acceleration に使用する AWS CLI コマンドの例を紹介します。AWS CLI をセットアップする手順については、「AWS CLI のセットアップ」を参照してください。

AWS CLI を使用してバケットに対する Transfer Acceleration を有効にする

AWS CLI put-bucket-accelerate-configuration コマンドを使用すると、バケットに対する Transfer Acceleration の使用を有効化または停止できます。次の例では、Status=Enabled を設定することにより、バケットに対する Transfer Acceleration を有効にしています。Transfer Acceleration を停止するには、Status=Suspended を使用します。

$ aws s3api put-bucket-accelerate-configuration --bucket bucketname --accelerate-configuration Status=Enabled

AWS CLI から Transfer Acceleration を使用する

AWS Config ファイル内で設定値 use_accelerate_endpointtrue に設定すると、s3 および s3api の AWS CLI コマンドによるすべての Amazon S3 リクエストが高速化エンドポイント s3-accelerate.amazonaws.com に転送されます。高速化エンドポイントを使用するには、バケットに対する Transfer Acceleration を有効にしておく必要があります。

リクエストはすべて、仮想形式のバケットのアドレス指定 (my-bucket.s3-accelerate.amazonaws.com) を使用して送信されます。ListBucketsCreateBucket、および DeleteBucket のオペレーションはサポートされていないため、これらのリクエストは高速化エンドポイントに送信されません。use_accelerate_endpoint の詳細については、「AWS CLI S3 Configuration」を参照してください。

次の例では、デフォルトのプロファイル内で use_accelerate_endpointtrue に設定しています。

$ aws configure set default.s3.use_accelerate_endpoint true

一部の AWS CLI コマンドについてのみ高速化エンドポイントを使用するには、次のいずれかの方法を使用できます。

  • コマンドで高速化エンドポイントを使用する。その場合は、すべての s3 または s3api コマンドで、--endpoint-url パラメータを https://s3-accelerate.amazonaws.com または http://s3-accelerate.amazonaws.com に設定します。

  • AWS Config ファイル内で別々のプロファイルを設定する。たとえば、use_accelerate_endpointtrue に設定するプロファイルと use_accelerate_endpoint を設定しないプロファイルを作成します。コマンドを実行する際には、高速化エンドポイントを使用するかどうかによって、適切なプロファイルを指定します。

Transfer Acceleration が有効になっているバケットにオブジェクトをアップロードするための AWS CLI の例

次の例では、高速化エンドポイントの使用が設定されているデフォルトプロファイルを使用して、Transfer Acceleration が有効になっているバケットにファイルをアップロードします。

$ aws s3 cp file.txt s3://bucketname/keyname --region region

次の例では、--endpoint-url パラメータで高速化エンドポイントを指定して、Transfer Acceleration が有効になっているバケットにファイルをアップロードします。

$ aws configure set s3.addressing_style virtual $ aws s3 cp file.txt s3://bucketname/keyname --region region --endpoint-url http://s3-accelerate.amazonaws.com

AWS SDK for Java での Transfer Acceleration の使用

次の例では、高速化エンドポイントを使用して、オブジェクトを Amazon S3 にアップロードする方法を示しています。この例では、次のような処理を実行します。

  • 高速化エンドポイントを使用するために設定される AmazonS3Client を作成します。クライアントがアクセスするすべてのバケットで、Transfer Acceleration が有効になっている必要があります。

  • 指定したバケットで Transfer Acceleration を有効にします。このステップが必要なのは、指定したバケットですでに Transfer Acceleration が有効になっていない場合です。

  • 指定されたバケットで Transfer Acceleration が有効になっていることを確認します。

  • バケットの高速化エンドポイントを使用して、指定されたバケットに新しいオブジェクトをアップロードします。

Transfer Acceleration の使用方法の詳細については、「Amazon S3 Transfer Acceleration の使用開始」を参照してください。作業サンプルを作成およびテストする方法については、「Amazon S3 Java コード例のテスト」を参照してください。

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketAccelerateConfiguration; import com.amazonaws.services.s3.model.BucketAccelerateStatus; import com.amazonaws.services.s3.model.GetBucketAccelerateConfigurationRequest; import com.amazonaws.services.s3.model.SetBucketAccelerateConfigurationRequest; public class TransferAcceleration { public static void main(String[] args) { String clientRegion = "*** Client region ***"; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ***"; try { // Create an Amazon S3 client that is configured to use the accelerate endpoint. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(clientRegion) .withCredentials(new ProfileCredentialsProvider()) .enableAccelerateMode() .build(); // Enable Transfer Acceleration for the specified bucket. s3Client.setBucketAccelerateConfiguration( new SetBucketAccelerateConfigurationRequest(bucketName, new BucketAccelerateConfiguration( BucketAccelerateStatus.Enabled))); // Verify that transfer acceleration is enabled for the bucket. String accelerateStatus = s3Client.getBucketAccelerateConfiguration( new GetBucketAccelerateConfigurationRequest(bucketName)) .getStatus(); System.out.println("Bucket accelerate status: " + accelerateStatus); // Upload a new object using the accelerate endpoint. s3Client.putObject(bucketName, keyName, "Test object for transfer acceleration"); System.out.println("Object \"" + keyName + "\" uploaded with transfer acceleration."); } 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(); } } }

AWS SDK for .NET から Transfer Acceleration を使用する

次の例は、AWS SDK for .NET を使用してバケットで Transfer Acceleration を有効にする方法を示しています。作業サンプルを作成およびテストする方法については、「Amazon S3 .NET コード例の実行」を参照してください。

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class TransferAccelerationTest { 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 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); EnableAccelerationAsync().Wait(); } static async Task EnableAccelerationAsync() { try { var putRequest = new PutBucketAccelerateConfigurationRequest { BucketName = bucketName, AccelerateConfiguration = new AccelerateConfiguration { Status = BucketAccelerateStatus.Enabled } }; await s3Client.PutBucketAccelerateConfigurationAsync(putRequest); var getRequest = new GetBucketAccelerateConfigurationRequest { BucketName = bucketName }; var response = await s3Client.GetBucketAccelerateConfigurationAsync(getRequest); Console.WriteLine("Acceleration state = '{0}' ", response.Status); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine( "Error occurred. Message:'{0}' when setting transfer acceleration", amazonS3Exception.Message); } } } }

Transfer Acceleration が有効になっているバケットにオブジェクトをアップロードするときは、次に示すように、クライアントの作成時に高速化エンドポイントの使用を指定します。

var client = new AmazonS3Client(new AmazonS3Config { RegionEndpoint = TestRegionEndpoint, UseAccelerateEndpoint = true }

AWS SDK for JavaScript から Transfer Acceleration を使用する

AWS SDK for JavaScript を使用して Transfer Acceleration を有効にする例については、AWS SDK for JavaScript API リファレンスputBucketAccelerateConfiguration オペレーションの呼び出しを参照してください。

AWS SDK for Python (Boto) から Transfer Acceleration を使用する

SDK for Python を使用して Transfer Acceleration を有効にする例については、AWS SDK for Python (Boto 3) API Reference put_bucket_accelerate_configuration を参照してください。

他の AWS SDK の使用

他の AWS SDK の使用については、サンプルコードとライブラリのページを参照してください。