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

访问 Amazon S3 on Outposts

您可以使用 S3 on Outposts 为需要本地数据访问、数据处理和数据驻留的应用程序存储和检索本地对象。本节介绍如何在 S3 on Outposts 中使用存储桶管理 API 操作,以及了解访问 S3 on Outposts 的要求。

使用 ARN 访问 S3 on Outposts 资源

Amazon S3 支持全局存储桶,这意味着每个存储桶名称在分区内的所有 Amazon Web Services 区域 中所有 Amazon Web Services 账户 内都必须是唯一的。分区是一组区域。Amazon目前有三个分区:aws(标准区域)、aws-cn(中国区域)和 aws-us-gov( Amazon GovCloud (US) 区域)。在 Amazon S3 中,您只能使用存储桶的名称访问存储桶。但是在 S3 on Outposts 中,存储桶名称对于 Outpost 是唯一的,并且需要 Outpost-id 以及存储桶名称来标识它们。

访问点可简化对 Amazon S3 中的共享数据集的大规模数据访问管理。访问点是附加到存储桶的命名网络终端节点,您可以使用这些存储桶执行 Amazon S3 对象操作(如 GetObjectPutObject)。在 S3 on Outposts 上,存储桶终端节点和对象 API 终端节点不同。因此,与 Amazon S3 中可以直接访问的存储桶不同,您必须使用接入点访问 Outposts 存储桶中的任何对象。接入点仅支持虚拟主机式寻址。

以下示例显示了用于 S3 on Outposts 存储桶的 Amazon Resource Name(ARN)格式。

arn:aws:s3-outposts:region:account-id:outpost/outpost-id/bucket/bucket-name

以下示例显示用于 S3 on Outposts 接入点的 ARN 格式。

arn:aws:s3-outposts:region:account-id:outpost/outpost-id/accesspoint/accesspoint-name

现有存储桶管理 API 操作不支持区域以外的位置概念。因此,您不能使用这些 API 操作创建和管理范围限定为账户、Outposts 和区域的存储桶。要管理 Outposts 存储桶 API 操作,S3 on Outposts 将托管一个与 Amazon S3 终端节点不同的单独终端节点。这个终端节点是 s3-outposts.region.amazonaws.com

要将请求路由到 S3 on Outposts 访问点,您必须创建 S3 on Outposts 终端节点并进行配置。Amazon Outposts 上的每个 Virtual Private Cloud (VPC) 都可以有一个关联的终端节点,每个 Outpost 最多可以有 100 个终端节点。您必须创建这些终端节点,才能访问 Outposts 存储桶并执行对象操作。创建这些终端节点还通过允许相同的操作在 S3 和 S3 on Outposts 中工作,使 API 模型和行为相同。要使用相同的 API 操作,您必须使用正确的 ARN 格式,对存储桶和对象进行签署。

您必须为 API 传递 ARN,以便 Amazon S3 能够确定请求是针对 Amazon S3(s3-control.region.amazonaws.com)还是针对 S3 on Outposts(s3-outposts.region.amazonaws.com)。根据 ARN 格式,然后 S3 可以适当地签署和路由请求。

无论何时将请求发送到 Amazon S3 控制平面,此 SDK 都会从 ARN 中提取组件,并包含一个附加标头 x-amz-outpost-id,其值为从 ARN 中提取的 outpost-id 值。ARN 中的服务名称将用于在将请求路由到 S3 on Outposts 终端节点之前对请求进行签名。此行为适用于所有由 s3control 客户端处理的所有 API 操作。

S3 on Outposts 的 API 操作

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

API Amazon S3 参数值 S3 on Outposts 参数值

CreateBucket

Bucket name

存储桶名称为 ARN,Outpost ID

ListRegionalBuckets(新 API)

NA

Outpost ID

DeleteBucket

Bucket name

存储桶名称为 ARN

DeleteBucketLifecycleConfiguration

Bucket name

存储桶名称为 ARN

GetBucketLifecycleConfiguration

Bucket name

存储桶名称为 ARN

PutBucketLifecycleConfiguration

Bucket name

存储桶名称为 ARN

GetBucketPolicy

Bucket name

存储桶名称为 ARN

PutBucketPolicy

Bucket name

存储桶名称为 ARN

DeleteBucketPolicy

Bucket name

存储桶名称为 ARN

GetBucketTagging

Bucket name

存储桶名称为 ARN

PutBucketTagging

Bucket name

存储桶名称为 ARN

DeleteBucketTagging

Bucket name

存储桶名称为 ARN

CreateAccessPoint

访问点名称

访问点名称为 ARN

DeleteAccessPoint

访问点名称

访问点名称为 ARN

GetAccessPoint

访问点名称

访问点名称为 ARN

GetAccessPoint

访问点名称

访问点名称为 ARN

ListAccessPoints

访问点名称

访问点名称为 ARN

PutAccessPointPolicy

访问点名称

访问点名称为 ARN

GetAccessPointPolicy

访问点名称

访问点名称为 ARN

DeleteAccessPointPolicy

访问点名称

访问点名称为 ARN

使用纯 VPC 访问点访问 Amazon S3 on Outposts

Amazon S3 on Outposts 支持将纯 Virtual Private Cloud (VPC) 接入点作为访问 Outposts 存储桶的唯一方式。借助 Outposts 端点上的 S3,您可以将 VPC 私密连接到您的 Outposts 存储桶。S3 on Outposts 终端节点是指向 S3 on Outposts 存储桶的入口点的虚拟统一资源标识符(URI)。它们是水平扩展、冗余和高度可用的 VPC 组件。

VPC 中的实例无需公有 IP 地址便可与 Outposts 中的资源进行通信。这将在Amazon网络内 VPC 和 S3 on Outposts 存储桶之间保持流量。

重要

要访问 S3 on Outposts 存储桶和对象,您必须满足以下条件:

  • VPC 的访问点

  • 同一 VPC 的终端节点

  • 您的 Outpost 与 Amazon 区域之间的主动连接。有关如何将您的 Outpost 连接到区域的更多信息,请参阅 AmazonOutposts 用户指南 中的复制到 Outpost Amazon 区域

您可以从 VPC 内部或本地网络访问 S3 on Outposts。S3 on Outposts 终端节点有两种访问类型:

  • 私密 – 您可以使用此访问类型在 VPC 内使用 S3 on Outposts。此类终端节点无法从您的本地网络访问。

  • 客户拥有的 IP 地址池(CoIP 池)– 您可以使用此访问类型在来自本地网络和 VPC 内 Outposts 的 S3。访问 VPC 内 Outposts 的 S3 时,您的本地网关的带宽将限制流量。

创建端点时,您必须在 Private(用于 VPC 路由)和 CustomerOwnedIp(对于 CoIP 池)之间指定端点访问类型。如果您不指定访问类型,则默认使用 Private Outposts 上的 S3。

使用跨账户弹性网络接口管理 S3 on Outposts 的连接

S3 on Outposts 终端节点将命名为具有适当 Amazon Resource Name (ARN) 的资源。创建这些终端节点后,Amazon Outposts 会设置多个跨账户弹性网络接口。S3 on Outposts 跨账户弹性网络接口与其他网络接口相似,但有一个例外:S3 on Outposts 将跨账户弹性网络接口与实例相关联。

S3 on Outposts 域名系统(DNS)通过跨账户弹性网络接口对请求进行负载平衡。S3 on Outposts 在您的Amazon账户中创建跨帐户弹性网络接口,它可从 Amazon EC2 控制台的 Network interfaces (网络接口) 窗格中查看。

对于使用 CoIP 池访问类型的终端节点,S3 on Outposts 将从配置的 CoIP 池中分配 IP 地址并将其与跨账户弹性网络接口相关联。

S3 on Outposts 终端节点所需的权限

对于使用客户拥有的 IP 地址池(CoIP 池)访问类型的终端节点,您还必须具有从 CoIP 池分配和关联 IP 地址的权限。

S3 on Outposts 需要 Amazon Identity and Access Management(IAM)中的新权限,来管理 S3 on Outposts 终端节点操作。

S3 on Outposts 终端节点相关的 IAM 权限
操作 IAM 权限
CreateEndpoint

s3-outposts:CreateEndpoint

ec2:CreateNetworkInterface

ec2:DescribeNetworkInterfaces

ec2:DescribeVpcs

ec2:DescribeSecurityGroups

ec2:DescribeSubnets

ec2:CreateTags

对于使用本地客户拥有的 IP 地址池(CoIP 池)访问类型的终端节点,将需要以下额外权限:

s3-outposts:CreateEndpoint

ec2:DescribeCoipPools

ec2:GetCoipPoolUsage

ec2:AllocateAddress

ec2:AssociateAddress

ec2:DescribeAddresses

ec2:DescribeLocalGatewayRouteTableVpcAssociations

DeleteEndpoint

s3-outposts:DeleteEndpoint

ec2:DeleteNetworkInterface

ec2:DescribeNetworkInterfaces

对于使用本地客户拥有的 IP 地址池(CoIP 池)访问类型的终端节点,将需要以下额外权限:

s3-outposts:DeleteEndpoint

ec2:DisassociateAddress

ec2:DescribeAddresses

ec2:ReleaseAddress

ListEndpoints

s3-outposts:ListEndpoints

注意

您可以使用 IAM 策略中的资源标签来管理权限。

S3 on Outposts 的加密选项

默认情况下,在 S3 on Outposts 上存储的所有数据都使用带 Amazon S3 托管的加密密钥 (SSE-S3) 的服务器端加密进行加密。通过在对象 API 请求中指定加密密钥,您可以选择通过客户提供的加密密钥 (SSE-C) 进行的服务器端加密。服务器端加密仅加密对象数据而不是对象元数据。