

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 啟用和使用 S3 Transfer Acceleration
<a name="transfer-acceleration-examples"></a>

您可以使用 Amazon S3 Transfer Acceleration，在用戶端與 S3 一般用途儲存貯體之間長距離快速安全地傳輸檔案。您可以使用 S3 主控台、 AWS Command Line Interface (AWS CLI)、 API 或 AWS SDKs 啟用 Transfer Acceleration。

本節示範如何在儲存貯體上啟用 Amazon S3 Transfer Acceleration，以及使用已啟用儲存貯體的加速端點。

如需 Transfer Acceleratio 要求的更多資訊，請參閱「[使用 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 傳輸加速的各種 。您可以依區域比較直接上傳和傳輸加速上傳的上傳速度。

**啟用 S3 一般用途儲存貯體的 Transfer Acceleration**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

1. 在左側導覽窗格中，選擇**一般用途儲存貯體**。

1. 在**一般用途儲存貯體**清單中，選擇您要啟用 Transfer Acceleration 的儲存貯體名稱。

1. 選擇 **Properties (屬性)**。

1. 在**轉換加速**下，選擇**編輯**。

1. 依序選擇 **Enable (啟用)** 和 **Save changes (儲存變更)**。

**實現資料傳輸加速**

1. 在 Amazon S3 為儲存貯體啟用 Transfer Acceleration 後，請檢視儲存貯體的 **Properties (屬性)** 索引標籤。

1. 在**傳輸加速**下，**加速端點**會顯示儲存貯體的傳輸加速端點。使用此端點以實現進出儲存貯體的資料傳輸加速。

   若暫停傳輸加速，則加速端點將不會再運作。

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

以下是用於 Transfer Acceleration 的 AWS CLI 命令範例。如需設定 的指示 AWS CLI，請參閱《[Amazon S3 API 參考》中的使用 開發 AWS CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/setup-aws-cli.html) *Amazon S3*。

### 在儲存貯體上啟用 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。您可以使用 `Status=Suspended` 來暫停 Transfer Acceleration。

**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 檔案的設定檔`true`中`use_accelerate_endpoint`將組態值設為 。必須在儲存貯體上啟用 Transfer Acceleration，才能使用加速端點。

所有請求都是使用虛擬樣式的儲存貯體定址所傳送：`amzn-s3-demo-bucket.s3-accelerate.amazonaws.com`。不會將任何 `ListBuckets`、`CreateBucket` 和 `DeleteBucket` 請求傳送至加速端點，因為該端點不支援這些操作。

如需有關 `use_accelerate_endpoint` 的詳細資訊，請參閱 *AWS 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 命令，您可以使用下列兩種方法之一：
+ 透過將 `--endpoint-url` 參數設定為 `https://s3-accelerate.amazonaws.com`，使用適用於任何 `s3` 或 `s3api` 命令來加速端點。
+ 在 AWS Config 檔案中設定個別的設定檔。例如，您可以建立一個設定檔，將 `use_accelerate_endpoint` 設為 `true`，再建立另一個設定檔不設定 `use_accelerate_endpoint`。當您執行命令時，根據是否要使用加速端點來指定要使用的描述檔。

### 將物件上傳至已啟用 Transfer Acceleration 的儲存貯體
<a name="transfer-acceleration-examples-aws-cli-3"></a>

下列範例使用已設定成使用加速端點的預設設定檔，藉以將檔案上傳至名為 `amzn-s3-demo-bucket` 之已針對 Transfer Acceleration 啟用的儲存貯體。

**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 SDKs
<a name="transfer-acceleration-examples-sdk"></a>

以下是使用 AWS 開發套件使用 Transfer Acceleration 將物件上傳至 Amazon S3 的範例。某些 AWS SDK 支援的語言 （例如 Java和 .NET) 使用加速端點用戶端組態旗標，因此您不需要將 Transfer Acceleration 的端點明確設定為 `bucket-name.s3-accelerate.amazonaws.com`。

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

若要使用適用於 Java 的 AWS 開發套件，使用加速端點將物件上傳至 Amazon S3，您可以：
+ 建立設定為使用加速端點的 S3Client。所有客戶存取的儲存貯體，一定要啟用 Transfer Acceleration。
+ 在指定的儲存貯體上，啟用 Transfer Acceleration。此步驟僅在您所指定的儲存貯體並沒有啟用 Transfer Acceleration 時為必需。
+ 驗證已針對指定的儲存貯體啟用 Transfer Acceleration。
+ 使用儲存貯體的加速端點，上傳新物件至指定的儲存貯體中。

如需有關使用 Transfer Acceleration 的詳細資訊，請參閱 [Amazon S3 Transfer Acceleration 入門](transfer-acceleration-getting-started.md)。

下列程式碼範例示範如何使用適用於 Java 的 AWS SDK 設定 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 ]

下列範例示範如何使用 適用於 .NET 的 AWS SDK 在儲存貯體上啟用 Transfer Acceleration。如需設定和執行程式碼範例的資訊，請參閱《適用於 .NET 的 AWS SDK 開發人員指南》**中的 [適用於 .NET 的 AWS SDK入門](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 ]

如需使用 啟用 Transfer Acceleration 的範例 適用於 JavaScript 的 AWS SDK，請參閱 *適用於 JavaScript 的 AWS SDK API 參考*中的 [PutBucketAccelerateConfiguration命令](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/s3/command/PutBucketAccelerateConfigurationCommand/)。

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

如需透過使用適用於 Python 的 SDK 來啟用 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 SDKs的詳細資訊，請參閱[範例程式碼和程式庫](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)。