S3 Transfer Acceleration の有効化と使用 - Amazon Simple Storage Service

S3 Transfer Acceleration の有効化と使用

Amazon S3 Transfer Acceleration を使用すると、クライアントと S3 バケットの間で、長距離にわたるファイル転送を迅速かつ安全に行うことができます。S3 コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用して Transfer Acceleration を有効にします。

このセクションでは、バケットに対する Amazon S3 Transfer Acceleration を有効にして、有効にしたバケットに高速化エンドポイントを使用する方法の例を示します。

Transfer Acceleration の要件の詳細については、「Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定」を参照してください。

注記

高速アップロード速度と非高速アップロード速度を比較する場合は、Amazon S3 Transfer Acceleration 速度比較ツールを開きます。

速度比較ツールでは、マルチパートアップロードを使用して、ブラウザからさまざまな AWS リージョン にファイルを転送し、Amazon S3 Transfer Acceleration を使用した場合と使用していない場合の速度を比較します。リージョン別に、ダイレクトアップロードの速度と、高速化アップロードの速度を比較できます。

S3 バケットの Transfer Acceleration を有効にするには

  1. AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [バケット] のリストで、Transfer Acceleration を有効にするバケットの名前を選択します。

  3. [プロパティ] を選択します。

  4. [Transfer Acceleration] で、[Edit (編集)] を選択します。

  5. [有効化] を選択し、[変更を保存] を選択します。

高速データ転送にアクセスするには

  1. Amazon S3 によってバケットの Transfer Acceleration が有効になると、バケットの [プロパティ] タブが表示されます。

  2. [Transfer acceleration] の [Accelerated endpoint (高速化エンドポイント)] には、バケットの Transfer Acceleration エンドポイントが表示されます。このエンドポイントを使用して、バケットとの間の高速データ転送にアクセスします。

    Transfer Acceleration を停止した場合、高速化エンドポイントは機能しなくなります。

以下は、Transfer Acceleration で使用される AWS CLI コマンドの例です。AWS CLI をセットアップする手順については、「AWS CLI を使用した Amazon S3 での開発」を参照してください。

バケットでの Transfer Acceleration の有効化

AWS CLI put-bucket-accelerate-configuration コマンドを使用すると、バケットで Transfer Acceleration の使用を有効化または停止できます。

次の例では、Status=Enabled を設定することにより、バケットに対する Transfer Acceleration を有効にしています。Status=Suspended を使用して、Transfer Acceleration を一時停止します。

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

Transfer Acceleration の使用

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

すべてのリクエストはバケットアドレス指定の仮想スタイル ( my-bucket.s3-accelerate.amazonaws.com. ) を使用して送信されます。高速化エンドポイントでは、これらのオペレーションをサポートしていないため、ListBucketsCreateBucketDeleteBucket リクエストは高速化エンドポイントには送信されません。

use_accelerate_endpoint の詳細については、AWS CLI CLI コマンドリファレンスAWS CLI S3 の設定を参照してください。

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

$ aws configure set default.s3.use_accelerate_endpoint true

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

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

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

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

次の例では、高速化エンドポイントの使用が設定されているデフォルトプロファイルを使用して、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 https://s3-accelerate.amazonaws.com

以下は、AWS SDK で Transfer Acceleration を使用して Amazon S3 にオブジェクトをアップロードする例です。AWS SDK でサポートされている一部の言語 (Java、.NET など) では高速化エンドポイントのクライアント設定フラグを使用できるため、Transfer Acceleration 用のエンドポイントを明示的に bucketname.s3-accelerate.amazonaws.com に設定する必要はありません。

Java

次の例では、高速化エンドポイントを使用して、オブジェクトを 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.regions.Regions; 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) { Regions clientRegion = Regions.DEFAULT_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(); } } }
.NET

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

using Amazon; 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 }
Javascript

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

Python (Boto)

SDK for Python を使用して Transfer Acceleration を有効にする例については、AWS SDK for Python (Boto3) API リファレンスput_bucket_accelerate_configuration を参照してください。

Other

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