

# 什么是 Amazon S3 on Outposts？
<a name="S3onOutposts"></a>

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

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

您可以像在 Amazon S3 中一样在 Outposts 存储桶上使用相同的 API 和功能，包括访问策略、加密和标记。您可以通过 AWS 管理控制台、AWS Command Line Interface (AWS CLI)、AWS SDK 或 REST API 使用 S3 on Outposts。
+ [S3 on Outposts 的工作原理](#S3OutpostsConcepts)
+ [S3 on Outposts 的功能](#S3OutpostsFeatures)
+ [相关服务](#S3OutpostsRelatedAmazonWebServices)
+ [访问 S3 on Outposts](#accessing-s3-outposts)
+ [支付 S3 on Outposts 的费用](#S3OutpostsPayingforStorage)
+ [后续步骤](#S3OutpostsNextSteps)

## S3 on Outposts 的工作原理
<a name="S3OutpostsConcepts"></a>

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

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

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

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

### Regions
<a name="aws-region-s3-outposts"></a>

在 AWS Outposts 调配期间，您或 AWS 将创建服务链路连接，将您的 Outpost 连接回您选择的 AWS 区域 或者用于存储桶操作和遥测的 Outposts 所属区域。Outposts 依赖于与父 AWS 区域 的连接。Outposts 机架不是为断开连接的操作或连接有限或没有连接的环境而设计的。有关更多信息，请参阅《AWS Outposts 用户指南》**中的[与 AWS 区域 的 Outpost 连接](https://docs.aws.amazon.com/outposts/latest/userguide/how-outposts-works.html#region-connectivity)。

### 桶
<a name="BasicsBucketS3Outposts"></a>

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

创建存储桶时，您可以输入存储桶名称，然后选择存储桶将驻留的 Outpost。创建存储桶后，无法更改存储桶名称或将存储桶移到不同的 Outpost。存储桶名称必须遵循 [Amazon S3 存储桶命名规则](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)。在 S3 on Outposts 中，存储桶名称对于 Outposts 和 AWS 账户 是唯一的。S3 on Outposts 存储桶需要 `outpost-id`、`account-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-outposts-access-points-alias.md)。

以下示例显示了 S3 on Outposts 的访问点 ARN 格式，其中包括 `outpost-id`、`account-id` 和访问点名称：

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

有关存储桶的更多信息，请参阅 [使用 S3 on Outposts 存储桶](S3OutpostsWorkingBuckets.md)。

### 对象
<a name="BasicsObjectsS3Outposts"></a>

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

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

### 密钥
<a name="BasicsKeysS3Outposts"></a>

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

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

```
arn:aws:s3-outposts:us-west-2:123456789012:​outpost/op-01ac5d28a6a232904/bucket/amzn-s3-demo-bucket1/object/myobject
```

有关对象键的更多信息，请参阅 [使用 S3 on Outposts 对象](S3OutpostsWorkingObjects.md)。

### S3 版本控制
<a name="S3OutpostsVersioning"></a>

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

有关更多信息，请参阅 [为 S3 on Outposts 桶管理 S3 版本控制](S3OutpostsManagingVersioning.md)。

### 版本 ID
<a name="S3OutpostsVersionID"></a>

在桶中启用 S3 版本控制时，S3 on Outposts 会为添加到桶中的每个对象生成唯一的版本 ID。启用版本控制时存在于存储桶中的对象的版本 ID 为`null`。如果使用其他操作修改这些（或任何其他）对象，例如 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)，则新对象将获得唯一的版本 ID。

有关更多信息，请参阅 [为 S3 on Outposts 桶管理 S3 版本控制](S3OutpostsManagingVersioning.md)。

### 存储类别和加密
<a name="S3OutpostsStorageClasses"></a>

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 中的数据加密](s3-outposts-data-encryption.md)。

### 存储桶策略
<a name="S3OutpostsBucketPolicies"></a>

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

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

在存储桶策略中，您可以在 ARN 和其他值上使用通配符 (`*`) 来授予对对象子集的权限。例如，您可以控制对以通用[前缀](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#keyprefix)或以给定扩展名结尾的对象组的访问，例如 `.html`。

### S3 on Outposts 访问点
<a name="BasicsAccessPointsS3Outposts"></a>

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

当您为对象操作指定桶时，可以使用访问点 ARN 或访问点别名。有关访问点别名的更多信息，请参阅[为您的 S3 on Outposts 桶访问点使用桶式别名](s3-outposts-access-points-alias.md)。

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

有关更多信息，请参阅 [访问 S3 on Outposts 存储桶和对象](S3OutpostsNetworking.md#AccessingS3Outposts)。

## S3 on Outposts 的功能
<a name="S3OutpostsFeatures"></a>

### 访问权限管理
<a name="s3-outposts-features-access-management"></a>

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

要授予支持您的特定使用案例的细粒度资源权限或审核 S3 on Outposts 资源的权限，您可以使用以下功能。
+ [S3 阻止公有访问](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html) - 阻止对存储桶和对象的公有访问。对于 Outposts 上的存储桶，默认情况下始终启用 Block Public Access（阻止公共访问）。
+ [AWS Identity and Access Management（IAM）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsIAM.html)– IAM 是一种 Web 服务，可帮助您安全地控制对 AWS 资源（包括 S3 on Outposts 资源）的访问。借助 IAM，您可以集中管理控制用户可访问哪些 AWS 资源的权限。可以使用 IAM 来控制谁通过了身份验证（准许登录）并获得授权（具有相应权限）来使用资源。
+ [S3 on Outposts 访问点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsWorkingBuckets.html) – 管理对 S3 on Outposts 中的共享数据集的数据访问。访问点是具有专用访问策略的命名网络端点。访问点附加到存储桶，可用于执行对象操作（如 `GetObject` 和 `PutObject`）。
+ [存储桶策略](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) - 使用基于 IAM 的策略语言为 S3 存储桶及其中的对象配置基于资源的权限。
+ [AWS Resource Access Manager (AWS RAM)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/outposts-sharing-with-ram.html) – 跨您的组织或 AWS Organizations 中组织单位 (OU) 内的 AWS 账户 安全共享 S3 on Outposts 容量。

### 存储日志记录和监控
<a name="s3-outposts-features-storage-monitoring"></a>

S3 on Outposts 提供日志记录和监控工具，您可以使用这些工具来监控和控制 S3 on Outposts 资源的使用情况。更多信息，请参阅[监控工具](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsManaging.html)。
+ [针对 S3 on Outposts 的 Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsCapacity.html#S3OutpostsCloudWatchMetrics) – 跟踪资源的运行状况并了解容量可用性。
+ [针对 S3 on Outposts 的 Amazon CloudWatch Events 事件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsNotificationsCWE.html) – 为任何 S3 on Outposts API 事件创建规则，以便通过所有受支持的 CloudWatch Events 目标接收通知，包括 Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS) 和 AWS Lambda。
+ [S3 on Outposts 的 AWS CloudTrail 日志](https://docs.aws.amazon.com/AmazonS3/latest/userguide/S3OutpostsCloudtrail.html) – 记录用户、角色或 S3 on Outposts 中的 AWS 服务 执行的操作。CloudTrail 日志为您提供了 S3 存储桶级和对象级操作的详细 API 跟踪。

### 强一致性
<a name="s3-outposts-features-strong-consistency"></a>

S3 on Outposts 为所有 AWS 区域 内的 S3 on Outposts 存储桶中对象的 PUT 和 DELETE 请求提供了强大的先写后读一致性。这个行为既适用于新对象的写入，也适用于覆盖现有对象的 PUT 请求以及 DELETE 请求。此外，S3 on Outposts 对象标签和对象元数据（例如 HEAD 对象）具有严格的一致性。有关更多信息，请参阅《Amazon S3 用户指南》**中的 [Amazon S3 数据一致性模型](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html#ConsistencyModel)。

## 相关服务
<a name="S3OutpostsRelatedAmazonWebServices"></a>

将数据加载到 S3 on Outposts 中之后，您可以将数据用于其他 AWS 服务。以下是您可能最常用使用的服务：
+ [Amazon Elastic Compute Cloud (Amazon EC2)](https://docs.aws.amazon.com/ec2/index.html) – 在 AWS 云中提供安全可扩展的计算容量。使用 Amazon EC2 可减少前期的硬件投入，因此您能够快速开发和部署应用程序。您可以使用 Amazon EC2 启动所需数量的虚拟服务器，配置安全性和联网以及管理存储。
+ [Outposts 上的 Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/snapshots-outposts.html) – 使用 Outposts 上的 Amazon EBS 本地快照将卷快照存储在 S3 on Outposts 本地。
+ [Outposts 上的 Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html) – 使用 Amazon RDS 本地备份将您的 Amazon RDS 备份存储在您的 Outpost 本地。
+ [AWS DataSync](https://docs.aws.amazon.com/datasync/latest/userguide/getting-started.html) – 在 Outposts 和 AWS 区域 之间自动传输数据，同时选择要传输的内容、何时传输以及要使用多少网络带宽。S3 on Outposts 已与 AWS DataSync 集成。对于需要高吞吐量本地处理的本地应用程序，S3 on Outposts 提供了本地对象存储，以最大限度地减少网络变化造成的数据传输和缓冲区，同时让您能够轻松地在 Outposts 和 AWS 区域 之间传输数据。

## 访问 S3 on Outposts
<a name="accessing-s3-outposts"></a>

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

### AWS 管理控制台
<a name="access-outposts-aws-management-console"></a>

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

### AWS Command Line Interface
<a name="access-outposts-aws-cli"></a>

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

[AWS Command Line Interface (AWS CLI) ](https://aws.amazon.com/cli/) 针对大量 AWS 服务 提供了相关命令。AWS CLI 在 Windows、macOS 和 Linux 上受支持。要开始使用，请参阅[《AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)。有关您可用于 S3 on Outposts 的命令的更多信息，请参阅《AWS CLI 命令参考》**中的 [s3api](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/index.html)、[s3control](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/index.html) 和 [s3outposts](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3outposts/index.html)。

### AWS 软件开发工具包
<a name="access-s3-outposts-aws-sdks"></a>

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 上构建所用的工具](https://aws.amazon.com/tools/)。

## 支付 S3 on Outposts 的费用
<a name="S3OutpostsPayingforStorage"></a>

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

有关更多信息，请参阅 [AWS Outposts 机架定价](https://aws.amazon.com/outposts/rack/pricing/)。

## 后续步骤
<a name="S3OutpostsNextSteps"></a>

有关使用 S3 on Outposts 的更多信息，请参阅以下主题：
+ [设置 Outpost](OrderOutposts.md)
+ [Amazon S3 on Outposts 与 Amazon S3 有何不同？](S3OnOutpostsRestrictionsLimitations.md)
+ [开始使用 Amazon S3 on Outposts](S3OutpostsGS.md)
+ [S3 on Outposts 的网络](S3OutpostsNetworking.md)
+ [使用 S3 on Outposts 存储桶](S3OutpostsWorkingBuckets.md)
+ [使用 S3 on Outposts 对象](S3OutpostsWorkingObjects.md)
+ [S3 on Outposts 中的安全性](s3outposts-security.md)
+ [管理 S3 on Outposts 存储](S3OutpostsManaging.md)
+ [使用 Amazon S3 on Outposts 进行开发](S3OutpostsDeveloping.md)