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

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

啟用和使用 S3 Transfer Acceleration

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

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

如需 Transfer Acceleratio 要求的更多資訊,請參閱「使用 Amazon S3 Transfer Acceleration 設定快速安全的檔案傳輸」。

注意

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

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

啟用 S3 儲存貯體的 Transfer Acceleration
  1. 登入 AWS Management Console 並開啟 Amazon S3 主控台,位於https://console.aws.amazon.com/s3/

  2. Bucket (儲存貯體) 清單中,選擇您要啟用 Transfer Acceleration 的儲存貯體名稱。

  3. 選擇 Properties (屬性)

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

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

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

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

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

以下是用於傳輸加速的 AWS CLI 指令範例。如需有關設定的指示 AWS CLI,請參閱使用 AWS CLI 來透過 Amazon S3 進行開發

在儲存貯體上啟用 Transfer Acceleration

使用指 AWS CLI put-bucket-accelerate-configuration令可在值區上啟用或暫停傳輸加速。

下列範例設定 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若要這麼做,請true在 AWS Config 檔案的設定檔中use_accelerate_endpoint將組態值設定為。必須在儲存貯體上啟用 Transfer Acceleration,才能使用加速端點。

所有請求都是使用虛擬樣式的儲存貯體定址所傳送:my-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 參數設定為 https://s3-accelerate.amazonaws.com,使用任何 s3 或 s3api 命令加速端點。

  • 在您的 Config 文件中設置單獨的 AWS 配置文件。例如,您可以建立一個設定檔,將 use_accelerate_endpoint 設為 true,再建立另一個設定檔不設定 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

以下是使用傳輸加速將物件上傳到 Amazon S3 的範例 AWS SDK。部分 AWS SDK支援的語言 (例如 Java 和. NET)使用加速端點客戶端配置標誌,因此您無需將傳輸加速的端點明確設置為 bucketname. S3-加速. 亞馬遜.

Java

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

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

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

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

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

如需有關使用 Transfer Acceleration 的詳細資訊,請參閱 Amazon S3 Transfer Acceleration 入門。如需建立和測試工作範例的指示,請參閱 AWS SDK for 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 值區上啟用傳輸加速功能。如需有關設定和執行程式碼範例的詳細資訊,請參閱. AWS SDK NET在中AWS SDK的。 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

如需使用 for 啟用傳輸加速的範 AWS SDK例 JavaScript,請參閱〈呼叫 putBucketAccelerate組態作業〉以AWS SDK供 JavaScript API參考

Python (Boto)

如需使用 Python 啟用傳輸加速的範例,請參閱《Python (博托 3) 參考》中的〈加速配置〉。SDKAWS SDK API

Other

如需使用其他的相關資訊 AWS SDKs,請參閱範例程式碼和程式庫

使用此RESTAPIPutBucketAccelerateConfiguration作業可在現有儲存貯體上啟用加速設定。

如需詳細資訊,請參閱 Amazon 簡易儲存服務API參考PutBucketAccelerateConfiguration中的。