

# S3 Transfer Acceleration の有効化と使用
<a name="transfer-acceleration-examples"></a>

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

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

Transfer Acceleration の要件の詳細については、[[Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定](transfer-acceleration.md)] を参照してください。

## S3 コンソールの使用
<a name="enable-transfer-acceleration"></a>

**注記**  
高速アップロード速度と非高速アップロード速度を比較する場合は、[Amazon S3 Transfer Acceleration 速度比較ツール](https://s3-accelerate-speedtest.s3-accelerate.amazonaws.com/en/accelerate-speed-comparsion.html)を開きます。  
速度比較ツールでは、マルチパートアップロードを使用して、ブラウザからさまざまな AWS リージョンにファイルを転送し、Amazon S3 Transfer Acceleration を使用した場合と使用していない場合の速度を比較します。リージョン別に、ダイレクトアップロードの速度と、高速化アップロードの速度を比較できます。

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

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

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

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

1. [**Transfer Acceleration**] で、[**編集**] を選択します。

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

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

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

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

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

## AWS CLI の使用
<a name="transfer-acceleration-examples-aws-cli"></a>

以下は、Transfer Acceleration で使用される AWS CLI コマンドの例です。AWS CLI の設定手順については、「*Amazon S3 API リファレンス*」の「[AWS CLI を使用した Amazon S3 での開発](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html)」を参照してください。

### バケットでの Transfer Acceleration の有効化
<a name="transfer-acceleration-examples-aws-cli-1"></a>

AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-accelerate-configuration.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-accelerate-configuration.html) コマンドを使用して、バケットの Transfer Acceleration を有効または一時停止します。

次の例では、`Status=Enabled` を設定して、`amzn-s3-demo-bucket` という名前のバケットで Transfer Acceleration を有効にしています。Transfer Acceleration を一時停止するには、`Status=Suspended` を使用します。

**Example**  

```
$ aws s3api put-bucket-accelerate-configuration --bucket amzn-s3-demo-bucket --accelerate-configuration Status=Enabled
```

### Transfer Acceleration の使用
<a name="transfer-acceleration-examples-aws-cli-2"></a>

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

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

`use_accelerate_endpoint` の詳細については、*AWS CLI CLI コマンドリファレンス*の「[AWS CLI S3 の設定](https://docs.aws.amazon.com/cli/latest/topic/s3-config.html)」を参照してください。

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

**Example**  

```
$ aws configure set default.s3.use_accelerate_endpoint true
```

一部の AWS CLI コマンドについてのみ高速化エンドポイントを使用するには、次のいずれかの方法を使用できます。
+ `s3` または `s3api` コマンドで高速化エンドポイントを使用するには、必ず `--endpoint-url` パラメータを `https://s3-accelerate.amazonaws.com` に設定します。
+ AWS Config ファイルで別々のプロファイルを設定できます。たとえば、`use_accelerate_endpoint` を `true` に設定するプロファイルと `use_accelerate_endpoint` を設定しないプロファイルを作成します。コマンドを実行する際は、高速化エンドポイントを使用するかどうかによって、適切なプロファイルを指定します。

### Transfer Acceleration が有効になっているバケットにオブジェクトをアップロードする
<a name="transfer-acceleration-examples-aws-cli-3"></a>

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

**Example**  

```
$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/key-name --region region
```

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

**Example**  

```
$ aws configure set s3.addressing_style virtual
$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/key-name --region region --endpoint-url https://s3-accelerate.amazonaws.com
```

## AWS SDK の使用
<a name="transfer-acceleration-examples-sdk"></a>

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

------
#### [ Java ]

高速化エンドポイントを使用して AWS SDK for Java で Amazon S3 にオブジェクトをアップロードするには、次の手順を実行します。
+ 高速化エンドポイントを使用するために設定する S3Client を作成します。クライアントがアクセスするすべてのバケットで、Transfer Acceleration が有効になっている必要があります。
+ 指定したバケットで Transfer Acceleration を有効にします。このステップは、指定したバケットで Transfer Acceleration が有効になっていない場合に限り必要です。
+ 指定したバケットで Transfer Acceleration が有効になっていることを確認します。
+ バケットの高速化エンドポイントを使用して、指定したバケットに新しいオブジェクトをアップロードします。

Transfer Acceleration の使用方法については、「[Amazon S3 Transfer Acceleration の開始方法](transfer-acceleration-getting-started.md)」を参照してください。

次のコード例は、AWS SDK for Java で Transfer Acceleration を設定する方法を示しています。

```
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.core.sync.RequestBody;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
import software.amazon.awssdk.services.s3.model.BucketAccelerateStatus;
import software.amazon.awssdk.services.s3.model.GetBucketAccelerateConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutBucketAccelerateConfigurationRequest;
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
import software.amazon.awssdk.services.s3.model.AccelerateConfiguration;
import software.amazon.awssdk.services.s3.model.S3Exception;
import software.amazon.awssdk.core.exception.SdkClientException;

public class TransferAcceleration {
    public static void main(String[] args) {
        Region clientRegion = Region.US_EAST_1;
        String bucketName = "*** Provide bucket name ***";
        String keyName = "*** Provide key name ***";

        try {
            // Create an Amazon S3 client that is configured to use the accelerate endpoint.
            S3Client s3Client = S3Client.builder()
                    .region(clientRegion)
                    .credentialsProvider(ProfileCredentialsProvider.create())
                    .accelerate(true)
                    .build();

            // Enable Transfer Acceleration for the specified bucket.
            s3Client.putBucketAccelerateConfiguration(
                    PutBucketAccelerateConfigurationRequest.builder()
                            .bucket(bucketName)
                            .accelerateConfiguration(AccelerateConfiguration.builder()
                                    .status(BucketAccelerateStatus.ENABLED)
                                    .build())
                            .build());

            // Verify that transfer acceleration is enabled for the bucket.
            String accelerateStatus = s3Client.getBucketAccelerateConfiguration(
                    GetBucketAccelerateConfigurationRequest.builder()
                            .bucket(bucketName)
                            .build())
                    .status().toString();
            System.out.println("Bucket accelerate status: " + accelerateStatus);

            // Upload a new object using the accelerate endpoint.
            s3Client.putObject(PutObjectRequest.builder()
                            .bucket(bucketName)
                            .key(keyName)
                            .build(),
                    RequestBody.fromString("Test object for transfer acceleration"));
            System.out.println("Object \"" + keyName + "\" uploaded with transfer acceleration.");
        } catch (S3Exception 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 を有効にする方法を示しています。コード例を設定および実行する方法の詳細については、「AWS SDK for .NET デベロッパーガイド」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」を参照してください。**

**Example**  

```
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 コマンド](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAccelerateConfigurationCommand/)」を参照してください。

------
#### [ Python (Boto) ]

SDK for Python を使用して Transfer Acceleration を有効にする例については、「*AWS SDK for Python (Boto3) API リファレンス*」の「[put\$1bucket\$1accelerate\$1configuration](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_bucket_accelerate_configuration)」を参照してください。

------
#### [ Other ]

他の AWS SDK の使用については、[サンプルコードとライブラリ](https://aws.amazon.com/code/)のページを参照してください。

------

## REST API の使用
<a name="transfer-acceleration-examples-api"></a>

REST API `PutBucketAccelerateConfiguration` オペレーションを使用して、既存のバケットでアクセラレーション設定を有効にします。

詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketAccelerateConfiguration.html)」を参照してください。