Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon S3 Transfer Acceleration 示例

本节提供了有关如何对存储桶启用 Amazon S3 Transfer Acceleration 和对启用的存储桶使用加速终端节点的示例。一些 AWS 开发工具包支持的语言(例如,Java 和 .NET)使用加速终端节点客户端配置标记,这样一来,您便无需显式将 Transfer Acceleration 的终端节点设置为 bucketname.s3-accelerate.amazonaws.com。有关 Transfer Acceleration 的更多信息,请参阅 Amazon S3 Transfer Acceleration

使用 Amazon S3 控制台

有关使用 Amazon S3 控制台对存储桶启用 Transfer Acceleration 的信息,请参阅 Amazon Simple Storage Service 控制台用户指南 中的启用 Transfer Acceleration

从 AWS Command Line Interface (AWS CLI) 使用 Transfer Acceleration

本节提供了用于 Transfer Acceleration 的 AWS CLI 命令的示例。有关设置 AWS CLI 的说明,请参阅设置 AWS CLI

使用 AWS CLI 对存储桶启用 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

从 AWS CLI 中使用 Transfer Acceleration

在 AWS Config 文件的配置文件中将配置值 use_accelerate_endpoint 设置为 true 会将通过 s3 和 s3api AWS CLI 命令发起的所有 Amazon S3 请求定向到加速终端节点:s3-accelerate.amazonaws.com。必须对存储桶启用 Transfer Acceleration 才能使用加速终端节点。

使用存储桶寻址的虚拟样式发送所有请求:my-bucket.s3-accelerate.amazonaws.com。 不会将任何 ListBucketsCreateBucketDeleteBucket 请求发送到加速终端节点,因为此终端节点不支持这些操作。有关 use_accelerate_endpoint 的更多信息,请参阅 AWS CLI S3 配置

以下示例在默认配置文件中将 use_accelerate_endpoint 设置为 true

$ aws configure set default.s3.use_accelerate_endpoint true

如果您需要对某些 AWS CLI 命令使用加速终端节点,但不对其他此类命令使用加速终端节点,则可使用以下两种方法中的任一方法:

  • 您可以通过将任何 s3 或 s3api 命令的 --endpoint-url 参数设置为 https://s3-accelerate.amazonaws.comhttp://s3-accelerate.amazonaws.com 来对每条命令使用加速终端节点。

  • 可以在 AWS Config 文件中设置单独的配置文件。例如,创建一个将 use_accelerate_endpoint 设置为 true 的配置文件和一个不设置 use_accelerate_endpoint 的配置文件。在执行一条命令时,根据是否需要使用加速终端节点来指定要使用的配置文件。

将对象上传到已启用 Transfer Acceleration 的存储桶的 AWS CLI 示例

以下示例通过使用已配置为使用加速终端节点的默认配置文件来将文件上传到已启用 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 http://s3-accelerate.amazonaws.com

将 Transfer Acceleration 与 AWS SDK for Java配合使用

以下示例演示如何使用加速终端节点将对象上传到 Amazon S3。本示例执行以下操作:

  • 创建配置为使用加速终端节点的 AmazonS3Client。客户端访问的所有存储桶都必须已启用传输加速。

  • 对指定存储桶启用传输加速。仅当您指定的存储桶尚未启用传输加速时,此步骤才是必需的。

  • 验证是否为指定存储桶启用了传输加速。

  • 使用存储桶的加速终端节点将新对象上传到指定存储桶。

有关使用 Transfer Acceleration 的更多信息,请参阅Amazon S3 Transfer Acceleration 入门。有关创建和测试有效示例的说明,请参阅测试 Amazon S3 Java 代码示例

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; 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) { String clientRegion = "*** Client 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 开发工具包使用 Transfer Acceleration

以下示例演示如何使用适用于 .NET 的 AWS 开发工具包对存储桶启用 Transfer Acceleration。有关如何创建和测试有效示例的说明,请参阅 运行 Amazon S3 .NET 代码示例

// Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-s3-developer-guide/blob/master/LICENSE-SAMPLECODE.) 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 开发工具包使用 Transfer Acceleration

有关通过使用适用于 JavaScript 的 AWS 开发工具包来启用 Transfer Acceleration 的示例,请参阅适用于 JavaScript 的 AWS 开发工具包 API 参考 中的调用 putBucketAccelerateConfiguration 操作

从AWS SDK for Python (Boto)使用 Transfer Acceleration

有关通过使用SDK for Python来启用 Transfer Acceleration 的示例,请参阅 AWS SDK for Python (Boto 3) API Reference 中的 put_bucket_accelerate_configuration

使用其他 AWS 开发工具包

有关使用其他 AWS 开发工具包的信息,请参阅示例代码和库