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.

通过 IPv6 向 Amazon S3 发出请求

除了 IPv4 协议,Amazon Simple Storage Service(Amazon S3) 还支持使用 Internet 协议版本 6 (IPv6) 访问 S3 存储桶。Amazon S3 双堆栈终端节点支持通过 IPv6 和 IPv4 向 S3 存储桶发出请求。通过 IPv6 访问 Amazon S3 不额外收费。有关定价的更多信息,请参阅 Amazon S3 定价

开始通过 IPv6 发出请求

要通过 IPv6 向 S3 存储桶发出请求,您需要使用双堆栈终端节点。下一节介绍如何使用双堆栈终端节点通过 IPv6 发出请求。

下面是在通过 IPv6 访问存储桶之前应了解的部分事项:

  • 访问存储桶的客户端和网络必须支持使用 IPv6。

  • 虚拟托管类型和路径类型请求必须都受支持,以便进行 IPv6 访问。有关更多信息,请参阅 Amazon S3 双堆栈终端节点

  • 如果您在 AWS Identity and Access Management (IAM) 用户或存储桶策略中使用源 IP 地址筛选,则需要更新策略以包括 IPv6 地址范围。有关更多信息,请参阅 在 IAM 策略中使用 IPv6 地址

  • 如果使用 IPv6,服务器访问日志文件以 IPv6 格式输出 IP 地址。您需要对用于分析 Amazon S3 日志文件的现有工具、脚本和软件进行更新,以便它们能够分析 IPv6 格式的 Remote IP 地址。有关更多信息,请参阅 服务器访问日志格式服务器访问日志记录

    注意

    如果在日志文件中遇到与 IPv6 地址相关的问题,请联系 AWS Support

使用双堆栈终端节点通过 IPv6 发出请求

您可以使用双堆栈终端节点和 Amazon S3 API 调用通过 IPv6 发出请求。无论是通过 IPv6 还是 IPv4 访问 Amazon S3,Amazon S3 API 操作的工作方式都是一样的。性能也应该是相同的。

如果使用 REST API,您是直接访问双堆栈终端节点。有关更多信息,请参阅 双堆栈终端节点

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

您可以通过以下任一方式,使用双堆栈终端节点通过 IPv6 访问存储桶:

在 IPv6 上不可用的功能

通过 IPv6 访问 S3 存储桶时,以下功能当前不受支持:

  • S3 存储桶的静态网站托管

  • BitTorrent

在 IAM 策略中使用 IPv6 地址

在使用 IPv6 访问存储桶之前,您必须确保用于 IP 地址筛选的所有 IAM 用户或 S3 存储桶策略已更新为包括 IPv6 地址范围。在开始使用 IPv6 时,未更新为处理 IPv6 地址的 IP 地址筛选策略可能导致客户端错误地丢失或获得存储桶访问权。有关 IAM 托管访问权限的更多信息,请参阅管理对 Amazon S3 资源的访问权限

筛选 IP 地址的 IAM 策略使用 IP 地址条件运算符。下面的存储桶策略通过使用 IP 地址条件运算符确定允许的 地址范围为 54.240.143.*IPv4 。此范围之外的所有 IP 地址对存储桶 (examplebucket) 的访问都会被拒绝。由于所有 IPv6 地址都在允许范围之外,此策略会阻止 IPv6 地址访问 examplebucket

Copy
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws-cn:s3:::examplebucket/*", "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

您可以存储桶策略的 Condition 元素修改为同时允许 IPv4 (54.240.143.0/24) 和 IPv6 (2001:DB8:1234:5678::/64) 地址范围,如以下示例所示。您可以使用示例中所示的相同类型 Condition 块来更新 IAM 用户和存储桶策略。

Copy
"Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } }

在使用 IPv6 之前,您必须对使用 IP 地址筛选来允许 IPv6 地址范围的所有相关 IAM 用户和存储桶策略进行更新。建议您使用组织的 IPv6 地址范围以及现有的 IPv4 地址范围来更新您的 IAM 策略。有关同时允许通过 IPv6 和 IPv4 进行访问的存储桶策略示例,请参阅限制对特定 IP 地址的访问权限

您可以在 https://console.amazonaws.cn/iam/ 使用 IAM 控制台检查您的 IAM 用户策略。有关 IAM 的更多信息,请参阅 IAM 用户指南。有关编辑 S3 存储桶策略的信息,请参阅如何添加 S3 存储桶策略? (在 Amazon Simple Storage Service 控制台用户指南 中)。

测试 IP 地址兼容性

如果使用 Linux/Unix 或 Mac OS X,则通过使用下例所示的 curl 命令,可以测试您能否通过 IPv6 访问双堆栈终端节点。

Copy
curl -v http://s3.dualstack.us-west-2.amazonaws.com/

您获得的信息如下例所示。如果通过 IPv6 连接,则连接的 IP 地址将会是 IPv6 地址。

Copy
* About to connect() to s3-us-west-2.amazonaws.com port 80 (#0) * Trying IPv6 address... connected * Connected to s3.dualstack.us-west-2.amazonaws.com (IPv6 address) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.18.1 (x86_64-unknown-linux-gnu) libcurl/7.18.1 OpenSSL/1.0.1t zlib/1.2.3 > Host: s3.dualstack.us-west-2.amazonaws.com

如果使用 Microsoft Windows 7,则通过使用下例所示的 ping 命令,可以测试您能否通过 IPv6 或 IPv4 访问双堆栈终端节点。

Copy
ping ipv6.s3.dualstack.us-west-2.amazonaws.com