啟用和使用 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://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

下列範例示範如何使用加速端點,上傳物件至 Amazon S3。此範例執行下列操作:

  • 使用加速端點,建立已經過設定的 AmazonS3Client。所有客戶存取的儲存貯體,一定要啟用 Transfer Acceleration。

  • 在特定儲存貯體上,啟用 Transfer Acceleration。此步驟僅在您所指定的儲存貯體並沒有啟用 Transfer Acceleration 時為必需。

  • 驗證特定儲存貯體上,是否啟用 Transfer Acceleration。

  • 使用儲存貯體的加速端點,上傳新物件至指定的儲存貯體中。

如需有關使用 Transfer Acceleration 的詳細資訊,請參閱 Amazon S3 Transfer Acceleration 入門。如需建立和測試工作範例的說明,請參閱《 適用於 Java 的 AWS SDK 開發人員指南》中的入門

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

下列範例示範如何使用 適用於 .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