使用 Amazon S3 on Outposts - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 Amazon S3 on Outposts

Amazon S3 支持全局存储桶,存储桶名称在分区内的所有区域间必须是唯一的。您只能使用存储桶的名称访问存储桶。在 S3 on Outposts 中,存储桶名称对于 Outpost 是唯一的,并且需要 Outpost-id 以及存储桶名称来标识它们。

访问点可简化对 S3 中的共享数据集的大规模数据访问管理。访问点是附加到存储桶的命名网络终端节点,您可以使用这些存储桶执行 Amazon S3 对象操作(如 GetObject 和 PutObject)。由于 S3 on Outposts 存储桶终端节点和对象 API 终端节点不同,因此必须使用访问点访问 Outposts 存储桶中的任何对象,这与 S3 中可直接访问的 S3 存储桶不同。访问点仅支持虚拟主机式寻址。S3 on Outposts 存储桶的 ARN 格式将为:arn:aws:s3-outposts:<region>:<account>:outpost/<outpost-id>/bucket/<bucket-name>。S3 on Outposts 访问点的 ARN 格式为:arn:aws:s3-outposts:<region>:<account>:outpost/<outpost-id>/accesspoint/<accesspoint-name>

现有存储桶管理 API 不支持区域以外的位置概念。因此,这些 API 不能用于创建和管理范围限定为账户、Outposts 和区域的存储桶。S3 on Outposts 将托管一个单独的终端节点,用于管理与 S3 不同的 Outposts 存储桶 API。这将是 s3-outposts.<region>.amazonaws.com。您必须创建这些 endpoint,才能访问 Outposts 存储桶并执行对象操作。这样,通过允许相同的操作在 S3 和 S3 on Outposts 中工作,也将允许 API 模型和行为相同。这是通过使用正确的 ARN 对存储桶和对象进行签名来完成的。

对于 Amazon S3,传递此 API 的 ARN 的原因是为了确定请求是针对 S3 (s3-control.<region>.amazonaws.com) 还是 S3 on Outposts (s3-outposts.<region>.amazonaws.com),同时允许它签署并适当路由请求。无论何时将请求发送到 Amazon S3 控制平面,此开发工具包都会从 ARN 中提取组件,并包含一个附加标头“x-amz-outpost-id”,其值为从 ARN 中提取的“outpost-id”的值。ARN 中的服务名称将用于在将请求路由到 S3 on Outposts 终端节点之前对请求进行签名。这适用于 s3control 客户端处理的所有 API。

下表列出了用于 Amazon S3 on Outposts 的扩展 API 及其相对于 S3 的更改。

API S3 参数值 S3 on Outposts 参数值

CreateBucket

存储桶名称

名称为 ARN,outpost-id

ListRegionalBuckets(新 API)

NA

outpost-id

DeleteBucket

存储桶名称

名称为 ARN

DeleteBucketLifecycleConfiguration

存储桶名称

存储桶名称为 ARN

GetBucketLifecycleConfiguration

存储桶名称

存储桶名称为 ARN

PutBucketLifecycleConfiguration

存储桶名称

存储桶名称为 ARN

GetBucketPolicy

存储桶名称

存储桶名称为 ARN

PutBucketPolicy

存储桶名称

存储桶名称为 ARN

DeleteBucketPolicy

存储桶名称

存储桶名称为 ARN

GetBucketTagging

存储桶名称

存储桶名称为 ARN

PutBucketTagging

存储桶名称

存储桶名称为 ARN

DeleteBucketTagging

存储桶名称

存储桶名称为 ARN

CreateAccessPoint

访问点 名称

访问点 名称为 ARN

DeleteAccessPoint

访问点 名称

访问点 名称为 ARN

GetAccessPoint

访问点 名称

访问点 名称为 ARN

GetAccessPoint

访问点 名称

访问点 名称为 ARN

ListAccessPoints

访问点 名称

访问点 名称为 ARN

PutAccessPointPolicy

访问点 名称

访问点 名称为 ARN

GetAccessPointPolicy

访问点 名称

访问点 名称为 ARN

DeleteAccessPointPolicy

访问点 名称

访问点 名称为 ARN

访问 Amazon S3 on Outposts

Amazon S3 on Outposts 支持将纯 VPC 访问点作为访问 Outposts 存储桶的唯一方式。S3 on Outposts 终端节点使您能够将 VPC 以私有方式连接到您的 Outposts 存储桶,而无需互联网网关、NAT 设备、VPN 连接或 AWS Direct Connect 连接。VPC 中的实例不需要公有 IP 地址即可与 Outposts 中的资源进行通信,同时在 VPC 与 Amazon 网络中的 S3 on Outposts 存储桶之间保持流量。S3 on Outposts 终端节点是虚拟设备。它们是水平扩展、冗余和高度可用的 VPC 组件。通过它们,可以在 VPC 中的实例与 S3 on Outposts 之间进行通信,而不会对网络通信带来可用性风险或带宽约束。

注意

您将无法访问 S3 on Outpost 存储桶和对象,直至:

  • 将为 VPC 创建访问点。

  • 同一 VPC 存在一个终端节点。

通过跨账户弹性网络接口管理 Amazon S3 on Outposts 的连接

S3 on Outposts 终端节点将命名为具有适当 ARN 的资源。在创建这些终端节点期间,Outposts 将设置四个跨账户弹性网络接口 (X-ENI)。X-ENI 与其他 ENI 相似,但有一个例外:S3 on Outposts 将此 X-ENI 附加到它在服务账户中运行且您的 VPC 中存在的实例。S3 on Outposts 将通过 X-ENI 对请求进行 DNS 负载平衡。S3 on Outposts 在您的账户中创建 X-ENI,该 X-ENI 可从 ENI 控制台中看到。

终端节点所需的权限

要将 X-ENI 附加到集群账户,S3 on Amazon 需要另外在创建期间修改跨账户弹性网络接口 (X-ENI),以便与集群账户的账户 ID 一起使用。由于 CIDR 限制,每个 ENI 都是唯一的,并且位于一个唯一的 IP 上。IP 和 ENI id 的源 VPC 将记录下来,并将与集群 ID 相关联。