通过 IPv6 向 Amazon S3 发出请求 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

通过 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 双堆栈端点

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

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

    注意

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

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

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

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

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

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

不可通过 IPv6 使用的功能

当通过来自 S3 存储桶的 IPv6: Static 网站托管访问 S3 存储桶时,以下功能目前不受支持。

在 IAM 策略中使用 IPv6 地址

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws: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 用户和存储桶策略。

"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.aws.amazon.com/iam/ 上使用 IAM 控制台查看 IAM 用户策略。有关 IAM 的更多信息,请参阅 IAM 用户指南。有关编辑 S3 存储桶策略的信息,请参阅使用 Amazon S3 控制台添加存储桶策略

测试 IP 地址兼容性

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

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

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

* 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 或 Windows 10,则通过使用下例所示的 ping 命令,可以测试您能否通过 IPv6 或 IPv4 访问双堆栈终端节点。

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