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

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

啟用和使用 S3 Transfer Acceleration

您可以使用 Amazon S3 Transfer Acceleration,在用戶端和 S3 儲存貯體之間以長距離快速安全地傳輸檔案。您可以使用 S3 主控台、 AWS Command Line Interface (AWS CLI)API、 或 啟用 Transfer Acceleration 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. 傳輸加速下,加速端點會顯示儲存貯體的傳輸加速端點。使用此端點以實現進出儲存貯體的資料傳輸加速。

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

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

在儲存貯體上啟用 Transfer Acceleration

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

下列範例設定 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 請求導向加速端點:s3-accelerate.amazonaws.com。 AWS CLI 若要這麼做,請在 AWS Config 檔案中的設定檔trueuse_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 命令加速端點。

  • 在 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

以下是使用 Transfer Acceleration 使用 將物件上傳至 Amazon S3 的範例 AWS SDK。部分 AWS SDK支援的語言 (例如 Java 和 。NET) 使用加速端點用戶端組態旗標,因此您不需要明確將 Transfer Acceleration 的端點設定為 bucketname.s3-accelerate.amazonaws.com。

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 ,在儲存貯體上啟用 Transfer Acceleration。如需設定和執行程式碼範例的相關資訊,請參閱適用於 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

如需使用 for AWS SDK 啟用 Transfer Acceleration 的範例 JavaScript,請參閱 AWS SDK for JavaScript API Reference 中的呼叫 putBucketAccelerate組態操作

Python (Boto)

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

Other

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

使用 RESTAPIPutBucketAccelerateConfiguration操作在現有儲存貯體上啟用加速組態。

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