啟用和使用 S3 Transfer Acceleration - Amazon Simple Storage Service

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

啟用和使用 S3 Transfer Acceleration

您可以使用 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 設定快速安全的檔案傳輸」。

注意

如果您想要比較加速和非加速的上傳速度,請開啟 Amazon S3 Transfer Acceleration 速度比較工具

速度比較工具使用分段上傳,將檔案從瀏覽器傳輸到 AWS 區域 具有和沒有 Amazon S3 傳輸加速的各種 。您可以依區域比較直接上傳和傳輸加速上傳的上傳速度。

啟用 S3 一般用途儲存貯體的傳輸加速
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/s3/:// 開啟 Amazon S3 主控台。

  2. 在左側導覽窗格中,選擇一般用途儲存貯體

  3. 一般用途儲存貯體清單中,選擇您要啟用傳輸加速的儲存貯體名稱。

  4. 選擇 Properties (屬性)

  5. 轉換加速下,選擇編輯

  6. 依序選擇 Enable (啟用)Save changes (儲存變更)

實現資料傳輸加速
  1. 在 Amazon S3 為儲存貯體啟用 Transfer Acceleration 後,請檢視儲存貯體的 Properties (屬性) 索引標籤。

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

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

以下是用於 Transfer Acceleration 的 AWS CLI 命令範例。如需設定 的指示 AWS CLI,請參閱《Amazon S3 API 參考》中的使用 開發 AWS CLI Amazon S3

在儲存貯體上啟用 Transfer Acceleration

使用 AWS CLI put-bucket-accelerate-configuration命令在儲存貯體上啟用或停用 Transfer Acceleration。

下列範例會設定 Status=Enabled 在名為 的儲存貯體上啟用 Transfer Accelerationamzn-s3-demo-bucket。若要暫停 Transfer Acceleration,請使用 Status=Suspended

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

使用 Transfer Acceleration

您可以將 s3s3api AWS CLI 命令提出的所有 Amazon S3 請求導向加速端點:s3-accelerate.amazonaws.com。若要這樣做,請在 AWS Config 檔案的設定檔trueuse_accelerate_endpoint將組態值設為 。必須在儲存貯體上啟用 Transfer Acceleration,才能使用加速端點。

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

如需有關 use_accelerate_endpoint 的詳細資訊,請參閱 AWS CLI 命令參考中的 AWS CLI S3 組態

下列範例會將預設描述檔中的 use_accelerate_endpoint 設為 true

$ aws configure set default.s3.use_accelerate_endpoint true

如果您想要將加速端點用於某些命令,而不是其他 AWS CLI 命令,您可以使用下列兩種方法之一:

  • --endpoint-url 參數設定為 ,以針對任何 s3s3api命令使用加速端點https://s3-accelerate.amazonaws.com

  • 在 AWS Config 檔案中設定個別的設定檔。例如,您可以建立一個設定檔,將 use_accelerate_endpoint 設為 true,再建立另一個設定檔不設定 use_accelerate_endpoint。當您執行命令時,根據是否要使用加速端點來指定要使用的描述檔。

將物件上傳至已啟用 Transfer Acceleration 的儲存貯體

下列範例使用已設定為使用加速端點的預設設定檔,將檔案上傳至名為 且amzn-s3-demo-bucket已啟用 Transfer Acceleration 的儲存貯體。

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

下列範例使用 --endpoint-url 參數指定加速端點,以將檔案上傳至已啟用 Transfer Acceleration 的儲存貯體。

$ 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 開發套件使用 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 的詳細資訊,請參閱 Amazon S3 Transfer Acceleration 入門

下列程式碼範例示範如何使用適用於 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入門

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命令

Python (Boto)

如需使用適用於 Python 的 SDK 啟用 Transfer Acceleration 的範例,請參閱《AWS 適用於 Python (Boto3) 的 SDK API 參考》中的 put_bucket_accelerate_configuration

Other

如需使用 AWS SDKs的詳細資訊,請參閱範例程式碼和程式庫

使用 REST API PutBucketAccelerateConfiguration 操作,以在現有儲存貯體上啟用加速設定。

如需詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的 PutBucketAccelerateConfiguration