什么是 Amazon S3 on Outposts? - Amazon Simple Storage Service

什么是 Amazon S3 on Outposts?

AWS Outposts 是一项完全托管式服务,它为几乎任何数据中心、主机托管空间或本地部署设施提供相同的 AWS 基础架构、AWS 服务、API 和工具,以实现真正一致的混合体验。AWS Outposts 非常适合需要低延迟访问本地部署系统、本地数据处理、数据驻留以及迁移具有本地系统相互依赖项的应用程序的工作负载。有关更多信息,请参阅《AWS Outposts 用户指南》中的什么是 AWS Outposts?

借助 Amazon S3 on Outposts,您可以在 Outposts 上创建 S3 桶并在本地中轻松存储和检索对象。S3 on Outposts 提供了一个新的存储类 OUTPOSTS,该存储类使用 Amazon S3 API,并且用于在 Outposts 上的多个设备和服务器之间持久冗余地存储数据。您通过虚拟私有云(VPC)使用访问点和端点连接与 Outposts 桶进行通信。

您可以像在 Amazon S3 中一样在 Outposts 存储桶上使用相同的 API 和功能,包括访问策略、加密和标记。您可以通过 AWS Management Console、AWS Command Line Interface (AWS CLI)、AWS SDK 或 REST API 使用 S3 on Outposts。

S3 on Outposts 的工作原理

S3 on Outposts 是一种对象存储服务,可将数据以对象形式存储在 Outpost 上的存储桶中。对象 是指一个数据文件和描述该文件的任何元数据。是对象的容器。

要将数据存储在 S3 on Outposts 中,您需要先创建存储桶。创建存储桶时,您可以指定存储桶名称和将容纳该存储桶的 Outpost。要访问 S3 on Outposts 存储桶并执行对象操作,接下来要创建并配置访问点。您还必须创建端点以将请求路由到访问点。

访问点简化了在 S3 中存储数据的任何 AWS 服务或客户应用程序的数据访问。访问点是附加到存储桶的命名网络端点,您可以使用这些存储桶执行对象操作(如 GetObjectPutObject)。每个访问点都有不同的权限和网络控制。

您可以使用 AWS Management Console、AWS CLI、AWS SDK 或 REST API 创建和管理 S3 on Outposts 存储桶、访问点和端点。要上传和管理 S3 on Outposts 存储桶中的对象,您可以使用AWS CLI、AWS SDK 或 REST API。

区域

在 AWS Outposts 调配期间,您或 AWS 将创建服务链路连接,将您的 Outpost 连接回您选择的 AWS 区域 或者用于存储桶操作和遥测的 Outposts 所属区域。Outposts 依赖于与父 AWS 区域 的连接。Outposts 机架不是为断开连接的操作或连接有限或没有连接的环境而设计的。有关更多信息,请参阅《AWS Outposts 用户指南》中的与 AWS 区域 的 Outpost 连接

存储桶是用于 S3 on Outposts 中存储的对象的容器。您可以在存储桶中存储任意数量的对象,并且每个 Outpost 每个账户中最多可以有 100 个存储桶。

创建存储桶时,您可以输入存储桶名称,然后选择存储桶将驻留的 Outpost。创建存储桶后,无法更改存储桶名称或将存储桶移到不同的 Outpost。存储桶名称必须遵循 Amazon S3 存储桶命名规则。在 S3 on Outposts 中,存储桶名称对于 Outposts 和 AWS 账户 是唯一的。S3 on Outposts 存储桶需要 outpost-idaccount-id 以及用于识别它们的存储桶名称。

以下示例显示了用于 S3 on Outposts 存储桶的 Amazon Resource Name(ARN)格式。ARN 包括 Outpost 所属的区域、您的 Outpost 账户、Outpost ID 和存储桶名称。

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

每个对象都储存在一个存储桶中。您必须使用访问点访问 Outposts 存储桶中的任何对象。当您为对象操作指定桶时,可以使用访问点 ARN 或访问点别名。有关访问点别名的更多信息,请参阅为您的 S3 on Outposts 桶访问点使用桶式别名

以下示例显示了 S3 on Outposts 的访问点 ARN 格式,其中包括 outpost-idaccount-id 和访问点名称:

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

有关存储桶的更多信息,请参阅 使用 S3 on Outposts 存储桶

对象

对象是 S3 on Outposts 中存储的基础实体。对象由对象数据和元数据组成。元数据是一组描述对象的名称-值对。这些对值包括一些默认元数据(如上次修改日期)和标准 HTTP 元数据(如 Content-Type)。您还可以在存储对象时指定自定义元数据。存储桶中的对象将由键(或名称)进行唯一地标识。

对于 Amazon S3 on Outposts,对象数据始终存储在 Outpost 上。当 AWS 安装 Outpost 机架时,您的数据将保留在 Outpost 的本地,以满足数据驻留要求。您的对象永远不会离开您的 Outpost,也不在 AWS 区域 中。由于 AWS Management Console 托管在区域内,您无法使用控制台上传或管理 Outpost 中的对象。但是,您可以使用 REST API、AWS Command Line Interface (AWS CLI) 和 AWS SDK 通过访问点上传和管理对象。

对象密钥(或密钥名称)是指存储桶中对象的唯一标识符。存储桶内的每个对象都只能有一个键。存储桶和对象键的组合唯一标识各个对象。

以下示例显示了 S3 on Outposts 对象的 ARN 格式,其中包括 Outpost 所在区域的 AWS 区域 代码、AWS 账户 ID、Outpost ID、存储桶名称和对象键:

arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/bucket/DOC-EXAMPLE-BUCKET1/object/myobject

有关对象键的更多信息,请参阅 使用 S3 on Outposts 对象

S3 版本控制

您可以对 Outposts 桶使用 S3 版本控制功能,以将对象的多个变体保留在同一桶中。使用 S3 版本控制功能,您可以保留、检索和恢复存储桶中的各个版本。S3 版本控制功能可帮助您从用户意外操作和应用程序故障中恢复。

有关更多信息,请参阅为 S3 on Outposts 桶管理 S3 版本控制

版本 ID

在桶中启用 S3 版本控制时,S3 on Outposts 会为添加到桶中的每个对象生成唯一的版本 ID。启用版本控制时存在于存储桶中的对象的版本 ID 为null。如果使用其他操作修改这些(或任何其他)对象,例如 PutObject,则新对象将获得唯一的版本 ID。

有关更多信息,请参阅为 S3 on Outposts 桶管理 S3 版本控制

存储类别和加密

S3 on Outposts 提供了一个新的存储类 S3 Outposts (OUTPOSTS)。S3 Outposts 存储类仅可用于存储在 AWS Outposts 上存储桶中的对象。如果您尝试将其他 S3 存储类与 S3 on Outposts 一起使用,则 S3 on Outposts 将返回 InvalidStorageClass 错误消息。

默认情况下,存储在 S3 Outposts (OUTPOSTS) 存储类中的对象使用服务器端加密方式和由 Amazon S3 托管的加密密钥 (SSE-S3) 进行加密。有关更多信息,请参阅S3 on Outposts 中的数据加密

桶策略

存储桶策略是基于资源的 AWS Identity and Access Management (IAM) 策略,您可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶所有者才能将策略与存储桶关联。附加到存储桶的权限适用于存储桶所有者拥有的存储桶中所有对象。桶策略的大小限制为 20 KB。

存储桶策略使用基于 JSON 的 IAM 策略语言,该语言是跨 AWS 的标准语言。您可以使用桶策略添加或拒绝桶中对象的权限。存储桶策略基于策略中的元素允许或拒绝请求。这些元素可以包括请求者、S3 on Outposts 操作、资源以及请求的特征或条件(例如,用于发出请求的 IP 地址)。例如,您可以创建一个存储桶策略,该策略授予跨账户将对象上传到 S3 on Outposts 存储桶的权限,同时确保存储桶拥有者对上传的对象拥有完全控制权。有关更多信息,请参阅存储桶策略示例

在存储桶策略中,您可以在 ARN 和其他值上使用通配符 (*) 来授予对对象子集的权限。例如,您可以控制对以通用前缀或以给定扩展名结尾的对象组的访问,例如 .html

S3 on Outposts 访问点

S3 on Outposts 访问点被命名为网络端点,其专用访问策略描述了如何使用该端点访问数据。访问点可简化对 S3 on Outposts 中的共享数据集的大规模数据访问管理。访问点附加到存储桶,您可以使用这些存储桶执行 S3 对象操作(如 GetObjectPutObject)。

当您为对象操作指定桶时,可以使用访问点 ARN 或访问点别名。有关访问点别名的更多信息,请参阅为您的 S3 on Outposts 桶访问点使用桶式别名

访问点具有不同的权限和网络控制,S3 on Outposts 将它们应用于通过该访问点发出的任何请求。每个接入点强制实施自定义接入点策略,该策略与附加到底层桶的桶策略结合使用。

有关更多信息,请参阅访问 S3 on Outposts 存储桶和对象

S3 on Outposts 的功能

访问管理

S3 on Outposts 提供了用于审核和管理对存储桶和对象的访问的功能。默认情况下,S3 on Outposts 存储桶和对象都是私有的。您只能访问您创建的 S3 on Outposts 资源。

要授予支持您的特定使用案例的细粒度资源权限或审核 S3 on Outposts 资源的权限,您可以使用以下功能。

  • S3 阻止公有访问 - 阻止对存储桶和对象的公有访问。对于 Outposts 上的存储桶,默认情况下始终启用 Block Public Access(阻止公共访问)。

  • AWS Identity and Access Management(IAM)– IAM 是一种 Web 服务,可帮助您安全地控制对 AWS 资源(包括 S3 on Outposts 资源)的访问。借助 IAM,您可以集中管理控制用户可访问哪些 AWS 资源的权限。可以使用 IAM 来控制谁通过了身份验证(准许登录)并获得授权(拥有权限)来使用资源。

  • S3 on Outposts 访问点 – 管理对 S3 on Outposts 中的共享数据集的数据访问。访问点是具有专用访问策略的命名网络端点。访问点附加到存储桶,可用于执行对象操作(如 GetObjectPutObject)。

  • 桶策略 - 使用基于 IAM 的策略语言为 S3 桶及其中的对象配置基于资源的权限。

  • AWS Resource Access Manager (AWS RAM) – 跨您的组织或 AWS Organizations 中组织单位 (OU) 内的 AWS 账户 安全共享 S3 on Outposts 容量。

存储日志记录和监控

S3 on Outposts 提供日志记录和监控工具,您可以使用这些工具来监控和控制 S3 on Outposts 资源的使用情况。更多信息,请参阅监控工具

强一致性

S3 on Outposts 为所有 AWS 区域 内的 S3 on Outposts 存储桶中对象的 PUT 和 DELETE 请求提供了强大的先写后读一致性。这个行为既适用于新对象的写入,也适用于覆盖现有对象的 PUT 请求以及 DELETE 请求。此外,S3 on Outposts 对象标签和对象元数据(例如 HEAD 对象)具有严格的一致性。有关更多信息,请参阅Amazon S3 数据一致性模型

相关服务

将数据加载到 S3 on Outposts 中之后,您可以将数据用于其他 AWS 服务。以下是您可能最常用使用的服务:

  • Amazon Elastic Compute Cloud (Amazon EC2) – 在 AWS Cloud中提供安全可扩展的计算容量。使用 Amazon EC2 可减少前期的硬件投入,因此您能够快速开发和部署应用程序。您可以使用 Amazon EC2 启动所需数量的虚拟服务器,配置安全性和联网以及管理存储。

  • Outposts 上的 Amazon Elastic Block Store (Amazon EBS) – 使用 Outposts 上的 Amazon EBS 本地快照将卷快照存储在 S3 on Outposts 本地。

  • Outposts 上的 Amazon Relational Database Service (Amazon RDS) – 使用 Amazon RDS 本地备份将您的 Amazon RDS 备份存储在您的 Outpost 本地。

  • AWS DataSync – 在 Outposts 和 AWS 区域 之间自动传输数据,同时选择要传输的内容、何时传输以及要使用多少网络带宽。S3 on Outposts 已与 AWS DataSync 集成。对于需要高吞吐量本地处理的本地应用程序,S3 on Outposts 提供了本地对象存储,以最大限度地减少网络变化造成的数据传输和缓冲区,同时让您能够轻松地在 Outposts 和 AWS 区域 之间传输数据。

访问 S3 on Outposts

您可以通过以下任何方式使用 S3 on Outpost:

AWS Management Console

控制台是基于 Web 的用户界面,用于管理 S3 on Outposts 和 AWS 资源。如果您已注册 AWS 账户,可以通过登录 AWS Management Console 并从 AWS Management Console 主页中选择 S3 来访问 S3 on Outposts。然后,从左侧导航窗格中选择 Outposts buckets(Outposts 存储桶)。

AWS Command Line Interface

可以使用 AWS 命令行工具,在系统的命令行中发出命令来执行 AWS (包括 S3)任务。

AWS Command Line Interface (AWS CLI) 针对大量 AWS 服务 提供了相关命令。AWS CLI 在 Windows、macOS 和 Linux 上受支持。要开始使用,请参阅 AWS Command Line Interface 用户指南。有关您可用于 S3 on Outposts 的命令的更多信息,请参阅《AWS CLI 命令参考》中的 s3apis3controls3outposts

AWS 软件开发工具包

AWS 提供的 SDK(软件开发工具包)包含各种编程语言和平台(Java、Python、Ruby、.NET、iOS、Android 等)的库和示例代码。AWS SDK 提供便捷的方式来创建对 S3 on Outposts 和 AWS 的编程访问。由于 S3 on Outposts 与 Amazon S3 使用相同的 SDK,因此 S3 on Outposts 使用相同的 S3 API、自动化和工具提供一致的体验。

S3 on Outposts 是一项 REST 服务。您可以使用 AWS SDK 库向 S3 on Outposts 发送请求,这些库包装底层 REST API 并简化编程任务。例如,SDK 负责计算签名、加密签名请求、管理错误和自动重试请求等任务。有关 AWS SDK 的信息(包括如何下载及安装),请参阅在 AWS 上构建所用的工具

支付 S3 on Outposts 的费用

您可以购买各种 AWS Outposts 机架配置,这些配置具有 Amazon EC2 实例类型、Amazon EBS 通用固态硬盘 (SSD) 卷 (gp2) 和 S3 on Outposts 的组合。定价包括交付、安装、基础设施服务维护以及软件修补程序和升级。

有关更多信息,请参阅 AWS Outposts 机架定价

后续步骤

有关使用 S3 on Outposts 的更多信息,请参阅以下主题: