Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 Amazon S3 双堆栈终端节点

Amazon S3 双堆栈终端节点支持通过 IPv6 和 IPv4 向 S3 存储桶发出请求。本节介绍如何使用双堆栈终端节点。

Amazon S3 双堆栈终端节点

当您向双堆栈终端节点发出请求时,存储桶 URL 解析为 IPv6 或 IPv4 地址。有关如何通过 IPv6 访问存储桶的更多信息,请参阅通过 IPv6 向 Amazon S3 发出请求

当使用 REST API 时,您通过使用终端节点名称 (URI) 直接访问 Amazon S3 终端节点。通过使用虚拟托管类型或路径类型终端节点名称,您可以通过双堆栈终端节点访问 S3 存储桶。Amazon S3 只支持区域双堆栈终端节点名称,这意味着,您必须在名称中指定区域。

双堆栈虚拟托管类型和路径类型终端节点名称使用以下命名惯例:

  • 虚拟托管型双堆栈终端节点:

    bucketname.s3.dualstack.aws-region.amazonaws.com

     

  • 路径型双堆栈终端节点:

    s3.dualstack.aws-region.amazonaws.com/bucketname

有关终端节点名称类型的更多信息,请参阅访问存储桶。有关 Amazon S3 终端节点的列表,请参阅 AWS General Reference 中的区域和终端节点

重要

您可对双堆栈终端节点使用传输加速。有关更多信息,请参阅 Amazon S3 Transfer Acceleration 入门

如果使用 AWS Command Line Interface (AWS CLI) 和 AWS 开发工具包,可使用参数或标志以更改为双堆栈终端节点。您还可以在配置文件中直接将双堆栈终端节点指定为覆盖 Amazon S3 终端节点。下面几节介绍如何从 AWS CLI 和 AWS 开发工具包使用双堆栈终端节点。

从 AWS CLI 使用双堆栈终端节点

本节提供用于向双堆栈终端节点发出请求的 AWS CLI 命令示例。有关设置 AWS CLI 的说明,请参阅设置 AWS CLI

在 AWS Config 文件中的配置文件中将配置值 use_dualstack_endpoint 设置为 true,使 s3s3api AWS CLI 命令发出的所有 Amazon S3 请求定向到指定区域的双堆栈终端节点。您可以在配置文件或命令中使用 --region 选项指定区域。

通过 AWS CLI 使用双堆栈终端节点时,支持 pathvirtual 寻址类型。配置文件中设置的寻址类型控制着主机名或 URL 中是否包含存储桶名称。默认情况下,CLI 尝试使用虚拟类型,但是如果需要,会改为使用路径类型。有关更多信息,请参阅 AWS CLI Amazon S3 配置

您也可以使用命令进行配置更改,如下例所示,在默认配置文件中将 use_dualstack_endpoint 设置为 true,将 addressing_style 设置为 virtual

Copy
$ aws configure set default.s3.use_dualstack_endpoint true $ aws configure set default.s3.addressing_style virtual

如果需要只对指定的 AWS CLI 命令 (并非所有命令) 使用双堆栈终端节点,可以使用以下任一方法:

  • 您可以通过将任何 s3s3api 命令的 --endpoint-url 参数设置为 https://s3.dualstack.aws-region.amazonaws.comhttp://s3.dualstack.aws-region.amazonaws.com 来对每条命令使用双堆栈终端节点。

    Copy
    $ aws s3api list-objects --bucket bucketname --endpoint-url https://s3.dualstack.aws-region.amazonaws.com
  • 您可以在 AWS Config 文件中设置单独的配置文件。例如,创建一个将 use_dualstack_endpoint 设置为 true 的配置文件和一个不设置 use_dualstack_endpoint 的配置文件。在运行命令时,根据是否需要使用双堆栈终端节点来指定要使用的配置文件。

注意

当使用 AWS CLI 时,当前不能对双堆栈终端节点使用传输加速。但是,即将推出对 AWS CLI 的支持。有关更多信息,请参阅 从 AWS Command Line Interface (AWS CLI) 使用 Transfer Acceleration

从 AWS 开发工具包使用双堆栈终端节点

本节提供一些示例,介绍如何使用 AWS 开发工具包来访问双堆栈终端节点。

AWS Java 开发工具包双堆栈终端节点示例

在创建 setS3ClientOptions 实例时,使用 AWS Java 开发工具包中的 AmazonS3Client 方法来启用双堆栈终端节点,如下例所示。

Copy
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.setRegion(Region.getRegion(Regions.US_WEST_2)); s3Client.setS3ClientOptions(S3ClientOptions.builder().enableDualstack().build());

如果要在 Microsoft Windows 上使用 AWS Java 开发工具包,您可能需要设置以下 Java 虚拟机 (JVM) 属性。

Copy
java.net.preferIPv6Addresses=true

有关如何创建和测试有效 Java 示例的信息,请参阅测试 Java 代码示例

AWS .NET 开发工具包双堆栈终端节点示例

在使用适用于 .NET 的 AWS 开发工具包时,请使用 AmazonS3Config 类来启用双堆栈终端节点,如下例所示。

Copy
var config = new AmazonS3Config { UseDualstackEndpoint = true, RegionEndpoint = RegionEndpoint.USWest2 }; using (var s3Client = new AmazonS3Client(config)) { var request = new ListObjectsRequest { BucketName = “myBucket” }; var response = s3Client.ListObjects(request); }

有关所列对象的完整 .NET 示例,请参阅使用 适用于 .NET 的 AWS 开发工具包 列出键

注意

当前不能对双堆栈终端节点使用传输加速。如果您在配置对象上同时配置 UseAccelerateEndpointUseDualstackEndpoint,.NET 开发工具包会引发异常。有关更多信息,请参阅 从适用于 .NET. 的 AWS 开发工具包使用 Transfer Acceleration

有关如何创建和测试有效 .NET 示例的信息,请参阅运行 Amazon S3 .NET 代码示例

从 REST API 使用双堆栈终端节点

有关如何使用 REST API 向双堆栈终端节点发出请求的信息,请参阅通过使用 REST API 向双堆栈终端节点发出请求