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

本節示範如何在儲存貯體上啟用 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 提出的所有 Amazon S3 請求 AWS CLI 指令到加速端點:s3-accelerate.amazonaws.com。若要執行此操作,請在您的設定檔trueuse_accelerate_endpoint將組態值設定為 AWS Config 文件。必須在儲存貯體上啟用 Transfer Acceleration,才能使用加速端點。

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

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

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

$ 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 的儲存貯體

下列範例使用已設定成使用加速端點的預設描述檔,以將檔案上傳至已啟用 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為. NETAWS 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

如需使用啟用傳輸加速的範例 AWS SDK如需詳細資訊 JavaScript,請參閱呼叫中的 putBucketAccelerate組態作業 AWS SDK以供 JavaScript API參考

Python (Boto)

如需使用 Python 啟用傳輸加速的範例,請參閱 SDK AWS SDK對於 Python(肉毒桿 3)API參考。

Other

有關使用其他的信息 AWS SDKs,請參閱範例程式碼和程式庫

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

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