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

通过 IPv6 向 S3 on Outposts 发出请求

Amazon S3 on Outposts 和 S3 on Outposts 双堆栈端点支持使用 IPv6 或 IPv4 协议向 S3 on Outposts 桶发出的请求。借助 S3 on Outposts 对 IPv6 的支持,可以通过 IPv6 网络使用 S3 on Outposts API 访问和操作桶以及控制面板资源。

注意

不支持 IPv6 网络上的 S3 on Outposts 对象操作(例如 PutObjectGetObject)。

通过 IPv6 网络访问 S3 on Outposts 不额外收费。有关 S3 on Outposts 的更多信息,请参阅 S3 on Outposts 定价

IPv6 入门

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

下面是在尝试通过 IPv6 访问 S3 on Outposts 桶之前的重要注意事项:

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

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

  • 如果您在 Amazon Identity and Access Management(IAM)用户策略或 S3 on Outposts 桶策略中使用源 IP 地址筛选,则必须更新策略以包括 IPv6 地址范围。

    注意

    此要求仅适用于跨 IPv6 网络的 S3 on Outposts 桶操作和控制面板资源。不支持跨 IPv6 网络的 Amazon S3 on Outposts 对象操作

  • 如果使用 IPv6,服务器访问日志文件以 IPv6 格式输出 IP 地址。您必须对用于分析 S3 on Outposts 日志文件的现有工具、脚本和软件进行更新,以便它们能够分析 IPv6 格式的远程 IP 地址。然后,更新的工具、脚本和软件将正确解析 IPv6 格式的远程 IP 地址。

使用双堆栈端点通过 IPv6 网络发出请求

要通过 IPv6 使用 S3 on Outposts API 调用发出请求,可以通过 Amazon CLI 或 Amazon SDK 使用双堆栈端点。无论您是通过 IPv6 协议还是 IPv4 协议访问 S3 on Outposts,Amazon S3 控制 API 操作S3 on Outposts API 操作的工作方式都是相同的。但请注意,IPv6 网络不支持 S3 on Outposts 对象操作(例如 PutObjectGetObject)。

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

您可以通过以下任一方式,使用双堆栈端点通过 IPv6 访问 S3 on Outposts 桶:

在 IAM 策略中使用 IPv6 地址

在尝试使用 IPv6 协议访问 S3 on Outposts 桶之前,请确保用于 IP 地址筛选的 IAM 用户策略或 S3 on Outposts 桶策略已更新为包括 IPv6 地址范围。如果未更新 IP 地址筛选策略以便处理 IPv6 地址,则在尝试使用 IPv6 协议时,您可能会无法访问 S3 on Outposts 桶。

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "s3outposts:*", "Resource": "arn:aws:s3-outposts:region:111122223333:outpost/OUTPOSTS-ID/bucket/DOC-EXAMPLE-BUCKET/*", "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }

您可以将 S3 on Outposts 桶策略的 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 on Outposts 桶策略的信息,请参阅为 Amazon S3 on Outposts 存储桶添加或编辑存储桶策略

测试 IP 地址兼容性

如果您使用的是 Linux 或 Unix 实例或 macOS X 平台,则可以测试您通过 IPv6 对双堆栈端点的访问。例如,要测试通过 IPv6 与 Amazon S3 on Outposts 端点的连接,请使用 dig 命令:

dig s3-outposts.us-west-2.api.aws AAAA +short

如果正确设置了通过 IPv6 网络的双堆栈端点,则 dig 命令将返回连接的 IPv6 地址。例如:

dig s3-outposts.us-west-2.api.aws AAAA +short 2600:1f14:2588:4800:b3a9:1460:159f:ebce 2600:1f14:2588:4802:6df6:c1fd:ef8a:fc76 2600:1f14:2588:4801:d802:8ccf:4e04:817

S3 on Outposts 支持对 Amazon PrivateLink 服务和端点使用 IPv6 协议。由于 Amazon PrivateLink 支持 IPv6 协议,您可以通过 IPv6 网络,从本地或通过其它私有连接来连接到 VPC 内的服务端点。Amazon PrivateLink for S3 on Outposts 对 IPv6 的支持还允许您将 Amazon PrivateLink 与双堆栈端点集成。有关如何为 Amazon PrivateLink 启用 IPv6 的步骤,请参阅 Expedite your IPv6 adoption with Amazon PrivateLink services and endpoints

注意

要将支持的 IP 地址类型从 IPv4 更新为 IPv6,请参阅《Amazon PrivateLink User Guide》中的 Modify the supported IP address type

如果您将 Amazon PrivateLink 与 IPv6 结合使用,则必须创建 IPv6 或双堆栈 VPC 接口端点。有关如何使用 Amazon Web Services Management Console创建 VPC 端点的一般步骤,请参阅《Amazon PrivateLink User Guide》中的 Access an Amazon service using an interface VPC endpoint

Amazon Web Services Management Console

使用以下过程创建连接到 S3 on Outposts 的接口 VPC 端点。

  1. 登录到 Amazon Web Services Management Console并打开 VPC 控制台,网址为:https://console.aws.amazon.com/vpc/

  2. 在导航窗格中,选择端点

  3. 选择 创建端点

  4. 对于服务类别,选择 Amazon 服务

  5. 对于服务名称,选择 S3 on Outposts 服务(com.amazonaws.us-east-1.s3-outposts)。

  6. 对于 VPC,选择您要从中访问 S3 on Outposts 的 VPC。

  7. 对于子网,对于每个可用区选择一个您将从中访问 S3 on Outposts 的子网。您无法从同一可用区中选择多个子网。对于您选择的每个子网,将创建一个新的端点网络接口。默认情况下,将子网 IP 地址范围中的 IP 地址分配给端点网络接口。要为端点网络接口指定 IP 地址,请选择指定 IP 地址,然后输入子网地址范围中的 IPv6 地址。

  8. 对于 IP 地址类型,选择双堆栈。同时将 IPv4 和 IPv6 地址分配给端点网络接口。仅当所有选定子网都具有 IPv4 和 IPv6 地址范围时,才支持此选项。

  9. 对于安全组,选择要与 VPC 端点的端点网络接口关联的安全组。默认情况下,默认安全组与 VPC 相关联。

  10. 对于策略,请选择完整访问权限以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则,选择自定义来附加 VPC 端点策略,该策略控制主体通过 VPC 端点对资源执行操作的权限。该选项仅在服务支持 VPC 端点策略时可用。有关更多信息,请参阅 Endpoint policies

  11. (可选)若要添加标签,请选择 Add new tag(添加新标签),然后输入该标签的键和值。

  12. 选择创建端点

例 – S3 on Outposts 桶策略

要允许 S3 on Outposts 与 VPC 端点进行交互,您可以更新您的 S3 on Outposts 策略,如下所示:

{ "Statement": [ { "Effect": "Allow", "Action": "s3-outposts:*", "Resource": "*", "Principal": "*" } ] }
Amazon CLI
注意

要在您的 VPC 端点上启用 IPv6 网络,必须为 S3 on Outposts 的 SupportedIpAddressType 筛选条件设置 IPv6

以下示例使用 create-vpc-endpoint 命令创建新的双堆栈接口端点。

aws ec2 create-vpc-endpoint \ --vpc-id vpc-12345678 \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-east-1.s3-outposts \ --subnet-id subnet-12345678 \ --security-group-id sg-12345678 \ --ip-address-type dualstack \ --dns-options "DnsRecordIpType=dualstack"

根据 Amazon PrivateLink 服务配置,新创建的端点连接可能需要先由 VPC 端点服务提供商接受,然后才能使用。有关更多信息,请参阅《Amazon PrivateLink User Guide》中的 Accept and reject endpoint connection requests

以下示例使用 modify-vpc-endpoint 命令将仅限 IPv4 的 VPC 端点更新为双堆栈端点。双堆栈端点同时允许访问 IPv4 和 IPv6 网络。

aws ec2 modify-vpc-endpoint \ --vpc-endpoint-id vpce-12345678 \ --add-subnet-ids subnet-12345678 \ --remove-subnet-ids subnet-12345678 \ --ip-address-type dualstack \ --dns-options "DnsRecordIpType=dualstack"

有关如何为 Amazon PrivateLink 启用 IPv6 网络的更多信息,请参阅 Expedite your IPv6 adoption with Amazon PrivateLink services and endpoints