通过 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 对象操作(例如 PutObject
或 GetObject
)。
通过 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 双堆栈端点。
-
如果您在 AWS 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 调用发出请求,可以通过 AWS CLI 或 AWS SDK 使用双堆栈端点。无论您是通过 IPv6 协议还是 IPv4 协议访问 S3 on Outposts,Amazon S3 控制 API 操作和 S3 on Outposts API 操作的工作方式都是相同的。但请注意,IPv6 网络不支持 S3 on Outposts 对象操作(例如 PutObject
或 GetObject
)。
如果使用 AWS Command Line Interface(AWS CLI)和 AWS SDK,可使用参数或标志以更改为双堆栈端点。您还可以在配置文件中直接将双堆栈端点指定为覆盖 S3 on Outposts 端点。
您可以通过以下任一方式,使用双堆栈端点通过 IPv6 访问 S3 on Outposts 桶:
-
AWS CLI,请参阅从 AWS CLI 使用双堆栈端点。
-
有关 AWS 开发工具包,请参阅 从 AWS SDK 使用 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/
测试 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
将 IPv6 与 AWS PrivateLink 结合使用
S3 on Outposts 支持对 AWS PrivateLink 服务和端点使用 IPv6 协议。由于 AWS PrivateLink 支持 IPv6 协议,您可以通过 IPv6 网络,从本地或通过其它私有连接来连接到 VPC 内的服务端点。AWS PrivateLink for S3 on Outposts 对 IPv6 的支持还允许您将 AWS PrivateLink 与双堆栈端点集成。有关如何为 AWS PrivateLink 启用 IPv6 的步骤,请参阅 Expedite your IPv6 adoption with AWS PrivateLink services and endpoints
注意
要将支持的 IP 地址类型从 IPv4 更新为 IPv6,请参阅《AWS PrivateLink User Guide》中的 Modify the supported IP address type。
将 IPv6 与 AWS PrivateLink 结合使用
如果您将 AWS PrivateLink 与 IPv6 结合使用,则必须创建 IPv6 或双堆栈 VPC 接口端点。有关如何使用 AWS Management Console创建 VPC 端点的一般步骤,请参阅《AWS PrivateLink User Guide》中的 Access an AWS service using an interface VPC endpoint。