

# 目录存储桶的应用场景
<a name="directory-bucket-use-cases"></a>

目录存储桶支持在以下存储桶位置类型中创建存储桶：可用区或本地区域。

对于低延迟应用场景，您可以在单个可用区中创建目录存储桶来存储数据。可用区中的目录存储桶支持 S3 Express One Zone 存储类。如果您的应用程序注重性能，并且受益于个位数毫秒的 `PUT` 和 `GET` 延迟，则建议使用 S3 Express One Zone 存储类。要了解有关在可用区中创建目录存储桶的更多信息，请参阅[高性能工作负载](directory-bucket-high-performance.md)。

 对于数据驻留应用场景，您可以在单个 AWS 专用本地区域（DLZ）中创建目录存储桶来存储数据。Local Zones 中的目录存储桶支持 S3 One Zone-Infrequent Access（S3 One Zone-IA；Z-IA）存储类。要了解有关在 Local Zones 中创建目录存储桶的更多信息，请参阅[数据驻留工作负载](directory-bucket-data-residency.md)。

**Topics**
+ [高性能工作负载](directory-bucket-high-performance.md)
+ [数据驻留工作负载](directory-bucket-data-residency.md)

# 高性能工作负载
<a name="directory-bucket-high-performance"></a>

## S3 Express One Zone
<a name="s3-express-one-zone"></a>

 您可以将 Amazon S3 Express One Zone 存储类用于高性能工作负载。S3 Express One Zone 是第一种可以在其中选择单个可用区的 S3 存储类，您可以选择将您的对象存储与计算资源联合托管在一个位置，从而提供尽可能高的访问速度。S3 Express One Zone 中的对象存储在可用区内的目录存储桶中。有关目录存储桶的更多信息，请参阅[目录存储桶](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html)。

Amazon S3 Express One Zone 是高性能的单区 Amazon S3 存储类，专门用于为延迟要求极高的应用程序提供稳定的毫秒级数据访问。S3 Express One Zone 是目前具有极低延迟的云对象存储类，相比 S3 Standard，其数据访问速度要快 10 倍，且请求成本低 50%。请求的完成速度实现了数量级的提升，应用程序可以直接从中获益。S3 Express One Zone 提供与其它 S3 存储类相似的性能弹性。S3 Express One Zone 适用于需要一致的个位数毫秒级延迟的工作负载或性能关键型应用程序。

与 Amazon S3 存储类一样，您无需事先规划或预调配容量或吞吐量需求。您可以根据需要纵向扩展或缩减，并通过 Amazon S3 API 访问数据。

Amazon S3 Express One Zone 存储类设计为在单个可用区内提供 99.95% 的可用性，并由 [Amazon S3 服务等级协议](https://aws.amazon.com/s3/sla/)提供保障。使用 S3 Express One Zone，您的数据将冗余地存储在单个可用区中的多个设备上。S3 Express One Zone 设计为通过快速检测和修复任何丢失的冗余来处理并发设备故障。在现有设备出现故障时，S3 Express One Zone 会自动将请求转移到相同可用区内的新设备。这种冗余有助于确保不间断地访问可用区中的数据。

S3 Express One Zone 非常适合任何需要尽可能减少访问对象所需延迟的应用程序。此类应用程序可以是人机交互式工作流，例如视频编辑，在这种情况下，创意专业人士需要在通过用户界面访问内容时获得快速的响应。对数据响应能力具有类似要求的分析和机器学习工作负载也可以从 S3 Express One Zone 中获益，尤其是大量访问小文件或者有大量随机访问情况时。S3 Express One Zone 可以与其它 AWS 服务一起使用来支持分析和人工智能与机器学习（AI/ML）工作负载，例如 Amazon EMR、Amazon SageMaker AI 和 Amazon Athena。

![\[图中显示了 S3 Express One Zone 的工作原理。\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


对于使用 S3 Express One Zone 存储类的目录存储桶，数据会存储在单个可用区内的多个设备上，但不会跨多个可用区进行冗余存储。当创建目录存储桶以使用 S3 Express One Zone 时，我们建议您指定 Amazon EC2、Amazon Elastic Kubernetes Service 或 Amazon Elastic Container Service（Amazon ECS）计算实例的本地 AWS 区域和可用区，以优化性能。

使用 S3 Express One Zone 时，您可以使用网关 VPC 端点，与虚拟私有云（VPC）中的目录桶进行交互。借助网关端点，您可以从 VPC 访问 S3 Express One Zone 目录桶，而无需为 VPC 配备互联网网关或 NAT 设备，也无需任何额外费用。

对于目录桶，您可以使用您用于通用桶和其它存储类的相同 Amazon S3 API 操作和特征。这些包括适用于 Amazon S3 的 Mountpoint、具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）、S3 批量操作和 S3 屏蔽公共访问权限。您可以通过 Amazon S3 控制台、AWS Command Line Interface（AWS CLI）、AWS SDK 和 Amazon S3 REST API 访问 S3 Express One Zone。

有关 S3 Express One Zone 的更多信息，请参阅以下主题。
+ [概述](#s3-express-one-zone-overview)
+ [S3 Express One Zone 的功能](#s3-express-features)
+ [相关服务](#s3-express-related-services)
+ [后续步骤](#s3-express-next-steps)

### 概述
<a name="s3-express-one-zone-overview"></a>

为了优化性能和减少延迟，S3 Express One Zone 引入了以下新概念。

#### 可用区
<a name="s3-express-overview-az"></a>

Amazon S3 Express One Zone 存储类设计为在单个可用区内提供 99.95% 的可用性，并由 [Amazon S3 服务等级协议](https://aws.amazon.com/s3/sla/)提供保障。使用 S3 Express One Zone，您的数据将冗余地存储在单个可用区中的多个设备上。S3 Express One Zone 设计为通过快速检测和修复任何丢失的冗余来处理并发设备故障。在现有设备出现故障时，S3 Express One Zone 会自动将请求转移到相同可用区内的新设备。这种冗余有助于确保不间断地访问可用区中的数据。

可用区是 AWS 区域 中一个或多个具有冗余电源、网络和连接的离散数据中心。创建目录存储桶时，您可以选择存储桶所在的可用区以及 AWS 区域。

##### 单可用区
<a name="directory-buckets-availability-zone"></a>

创建目录存储桶时，您可以选择可用区和 AWS 区域。

目录存储桶使用 S3 Express One Zone 存储类，该存储类专用于注重性能的应用程序。S3 Express One Zone 是第一种可以在其中选择单个可用区的 S3 存储类，您可以选择将您的对象存储与计算资源联合托管在一个位置，从而提供尽可能高的访问速度。

使用 S3 Express One Zone，您的数据将冗余地存储在单个可用区中的多个设备上。S3 Express One Zone 设计为在单个可用区内提供 99.95% 的可用性，并由 [Amazon S3 服务等级协议](https://aws.amazon.com/s3/sla/)提供支持。有关更多信息，请参阅 [可用区](#s3-express-overview-az)。

#### 端点和网关 VPC 端点
<a name="s3-express-overview-endpoints"></a>

目录桶的桶管理 API 操作可通过区域端点使用，称为区域端点 API 操作。区域端点 API 操作的示例包括 `CreateBucket` 和 `DeleteBucket`。创建目录存储桶后，您可以使用可用区端点 API 操作来上传和管理目录存储桶中的对象。可用区端点 API 操作可通过可用区端点执行。可用区端点 API 操作的示例包括 `PutObject` 和 `CopyObject`。

您可以使用网关 VPC 端点从 VPC 访问 S3 Express One Zone。创建网关端点后，您可以将其添加作为路由表中的目标，用于从您的 VPC 流向 S3 Express One Zone 的流量。与 Amazon S3 一样，使用网关端点不会产生任何额外费用。有关如何配置网关 VPC 端点的更多信息，请参阅 [目录存储桶的联网](s3-express-networking.md)

#### 基于会话的授权
<a name="s3-express-overview-authorization"></a>

借助 S3 Express One Zone，您可以通过基于会话的新机制，对请求进行身份验证和授权，该机制经过优化，可提供极低的延迟。您可以使用 `CreateSession` 来请求临时凭证，以便提供对存储桶的低延迟访问。这些临时凭证的作用范围限制为特定的 S3 目录存储桶。会话令牌仅用于可用区（对象级）操作（[CopyObject](directory-buckets-objects-copy.md) 除外）。有关更多信息，请参阅 [使用 `CreateSession` 对可用区端点 API 操作进行授权](s3-express-create-session.md)。

[S3 Express One Zone 支持的 AWS SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks) 代表您处理会话的建立和刷新。为了保护您的会话，临时安全凭证在 5 分钟后过期。您在下载和安装 AWS SDK 并配置必要的 AWS Identity and Access Management（IAM）权限后，便可立即开始使用 API 操作。

### S3 Express One Zone 的功能
<a name="s3-express-features"></a>

以下 S3 功能可用于 S3 Express One Zone。有关支持的 API 操作和不支持的特征的完整列表，请参阅[目录存储桶的差异](s3-express-differences.md)。

#### 访问管理和安全性
<a name="s3-express-features-access-management"></a>

您可以使用以下功能来审计和管理访问权限。默认情况下，目录存储桶为私有，只有被明确授予访问权限的用户才可以访问。与可以在存储桶、前缀或对象标签级设置访问控制边界的通用存储桶不同，目录存储桶只能在存储桶级设置访问控制边界。有关更多信息，请参阅 [使用 IAM 对区域端点 API 操作进行授权](s3-express-security-iam.md)。
+ [S3 屏蔽公共访问权限](access-control-block-public-access.md) – 默认情况下，所有 S3 屏蔽公共访问权限设置均在桶级启用。无法修改此默认设置。
+ [S3 对象所有权](about-object-ownership.md)（默认情况下为强制桶拥有者）– 目录桶不支持访问控制列表（ACL）。目录桶对于 S3 对象所有权自动使用强制桶拥有者设置。强制桶拥有者意味着 ACL 被禁用，桶拥有者自动拥有并完全控制桶中的每个对象。无法修改此默认设置。
+ [AWS Identity and Access Management（IAM）](s3-express-security-iam.md)– IAM 有助于您安全地控制对目录存储桶的访问权限。您可以使用 IAM，通过 `s3express:CreateSession` 操作授予对桶管理（区域）API 操作和对象管理（可用区）API 操作的访问权限。有关更多信息，请参阅 [使用 IAM 对区域端点 API 操作进行授权](s3-express-security-iam.md)。与对象管理操作不同，存储桶管理操作不能跨账户。只有存储桶拥有者可以执行这些操作。
+ [存储桶策略](s3-express-security-iam-example-bucket-policies.md) – 使用基于 IAM 的策略语言，为目录存储桶配置基于资源的权限。您还可以使用 IAM 来控制对 `CreateSession` API 的访问权限，这允许您使用可用区或对象管理 API 操作。您可以向可用区 API 操作授予同账户或跨账户访问权限。有关 S3 Express One Zone 权限和策略的更多信息，请参阅[使用 IAM 对区域端点 API 操作进行授权](s3-express-security-iam.md)。
+ [适用于 S3 的 IAM Access Analyzer](access-analyzer.md) – 评估和监控您的访问策略，确保这些策略仅提供对 S3 资源的预期访问权限。

#### 日志记录和监控
<a name="s3-express-features-logging-monitoring"></a>

S3 Express One Zone 使用以下 S3 日志记录和监控工具，您可以使用这些工具来监控和控制资源的使用方式：
+ [Amazon CloudWatch 指标](cloudwatch-monitoring.md) – 通过使用 CloudWatch 收集和跟踪指标，监控您的 AWS 资源和应用程序。S3 Express One Zone 使用与其他 Amazon S3 存储类相同的 CloudWatch 命名空间（`AWS/S3`），并支持目录存储桶的日常存储指标：`BucketSizeBytes` 和 `NumberOfObjects`。有关更多信息，请参阅 [使用 Amazon CloudWatch 监控指标](cloudwatch-monitoring.md)。
+ [AWS CloudTrail 日志](cloudtrail-logging-s3-info.md) – AWS CloudTrail 是一项 AWS 服务，通过记录用户、角色或 AWS 服务执行的操作，协助您实现运营和风险审计、治理以及 AWS 账户合规性。对于 S3 Express One Zone，CloudTrail 将区域端点 API 操作（例如 `CreateBucket` 和 `PutBucketPolicy`）捕获为管理事件，并将可用区 API 操作（例如 `GetObject` 和 `PutObject`）捕获为数据事件。这些事件包括了在 AWS 管理控制台、AWS Command Line Interface（AWS CLI）、AWS SDK 和 AWS API 操作中执行的操作。有关更多信息，请参阅[使用 AWS CloudTrail 为 S3 Express One Zone 记录日志](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-one-zone-logging.html)。

**注意**  
S3 Express One Zone 不支持 Amazon S3 服务器访问日志。

#### 对象管理
<a name="s3-express-features-object-management"></a>

您可以使用 Amazon S3 控制台、AWS SDK 和 AWS CLI 管理对象存储。以下特征可用于 S3 Express One Zone 的对象管理：
+ [S3 批量操作](batch-ops-create-job.md) – 使用批量操作对目录存储桶中的对象执行批量操作，例如**复制**和**调用 AWS Lambda 函数**。例如，您可以使用批量操作在目录存储桶和通用存储桶之间复制对象。通过批量操作，您可以使用 AWS SDK 或 AWS CLI，或者只需在 Amazon S3 控制台中单击几次，即可通过单个 S3 请求大规模管理数十亿个对象。
+ [导入](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job.html) – 创建目录存储桶后，您可以使用 Amazon S3 控制台中的导入功能在存储桶中填充对象。导入是一种创建批量操作作业的简化方法，用于将对象从通用存储桶复制到目录存储桶。

#### AWS SDK 和客户端库
<a name="s3-express-features-client-libraries"></a>

 您可以使用 AWS SDK 和客户端库来管理对象存储。
+ [适用于 Amazon S3 的 Mountpoint](https://github.com/awslabs/mountpoint-s3/blob/main/doc/SEMANTICS.md) – 适用于 Amazon S3 的 Mountpoint 是一种开源文件客户端，可提供高吞吐量的访问，从而降低 Amazon S3 上数据湖的计算成本。适用于 Amazon S3 的 Mountpoint 将本地文件系统 API 调用转换为 S3 对象 API 调用，如 `GET` 和 `LIST`。它非常适合有大量读取操作的数据湖工作负载，在这种情况下需要处理数 PB 的数据，且需要 Amazon S3 提供的高弹性吞吐量来跨数千个实例进行纵向扩展和缩减。
+ [https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Introducing_the_Hadoop_S3A_client) – S3A 是推荐使用的 Hadoop 兼容接口，用于访问 Amazon S3 中的数据存储。S3A 取代了 S3N Hadoop 文件系统客户端。
+ [AWS 上的 PyTorch](https://docs.aws.amazon.com//sagemaker/latest/dg/pytorch.html) – AWS 上的 PyTorch 是一个开源深度学习框架，它简化了机器学习模型开发以及将其部署到生产环境的过程。
+ [AWS SDK](https://aws.amazon.com//developer/tools/) – 为 Amazon S3 开发应用程序时，您可以使用 AWS SDK。AWS SDK 包装了底层 Amazon S3 REST API，可以简化您的编程任务。有关将 AWS SDK 与 S3 Express One Zone 结合使用的更多信息，请参阅[AWS SDK](s3-express-SDKs.md#s3-express-getting-started-accessing-sdks)。

### 数据保护和加密
<a name="s3-express-features-encryption"></a>

S3 Express One Zone 中的对象自动通过采用 Amazon S3 托管式密钥的服务器端加密（SSE-S3）进行加密。S3 Express One Zone 还支持使用 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）。S3 Express One Zone 不支持使用客户提供的加密密钥的服务器端加密（SSE-C），也不支持使用 AWS KMS keys 的双层服务器端加密（DSSE-KMS）。有关更多信息，请参阅 [数据保护和加密](s3-express-data-protection.md)。

S3 Express One Zone 可让您选择用于在上传或下载过程中验证数据的校验和算法。您可以选择以下安全哈希算法（SHA）或循环冗余校验（CRC）数据完整性检查算法之一：CRC32、CRC32C、SHA-1 和 SHA-256。S3 Express One Zone 存储类不支持基于 MD5 的校验和。

有关更多信息，请参阅 [其他 S3 校验和最佳实践](s3-express-optimizing-performance.md#s3-express-optimizing-performance-checksums)。

### AWS 签名版本 4（SigV4）
<a name="s3-express-features-sigv4"></a>

S3 Express One Zone 使用 AWS 签名版本 4（SigV4）。SigV4 是一种签名协议，用于对通过 HTTPS 发送到 Amazon S3 的请求进行身份验证。S3 Express One Zone 使用 AWS Sigv4 对请求签名。有关更多信息，请参阅《*Amazon Simple Storage Service API*》参考中的[验证请求 (AWS Signature Version 4)](https://docs.aws.amazon.com//AmazonS3/latest/API/sig-v4-authenticating-requests.html)。

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

在所有 AWS 区域中，S3 Express One Zone 为针对目录桶中对象的 `PUT` 和 `DELETE` 请求，提供了可靠的先写后读一致性。有关更多信息，请参阅 [Amazon S3 数据一致性模型](Welcome.md#ConsistencyModel)。

### 相关服务
<a name="s3-express-related-services"></a>

您可以将以下 AWS 服务与 S3 Express One Zone 存储类配合使用，以支持您的特定低延迟使用场景。
+ [Amazon Elastic Compute Cloud（Amazon EC2）](https://docs.aws.amazon.com/ec2/index.html)– Amazon EC2 在 AWS 云 中提供安全可扩展的计算容量。使用 Amazon EC2 可减少前期的硬件投入，因此您能够快速开发和部署应用程序。您可以使用 Amazon EC2 启动所需数量的虚拟服务器，配置安全性和联网以及管理存储。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html.html) – Lambda 是一项计算服务，可使您无需预置或管理服务器即可运行代码。您在存储桶上配置通知设置，并向 Amazon S3 授予权限来根据函数的基于资源的权限策略调用函数。
+ [Amazon Elastic Kubernetes Service（Amazon EKS）](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)– Amazon EKS 是一项托管式服务，无需在 AWS 上安装、操作和维护自己的 Kubernetes 控制面板。[https://kubernetes.io/docs/concepts/overview/](https://kubernetes.io/docs/concepts/overview/) 是一个开源系统，用于自动管理、扩展和部署容器化应用程序。
+ [Amazon Elastic Container Service（Amazon ECS）](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)– Amazon ECS 是完全托管的容器编排服务，可协助您轻松地部署、管理和扩展容器化应用程序。
+ [AWS Key Management Service（AWS KMS）](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)– AWS Key Management Service（AWS KMS）是一项 AWS 托管式服务，可让您轻松创建和控制加密您的数据所用的加密密钥。您在 AWS KMS 中创建的 AWS KMS 密钥受 FIPS 140-2 经验证硬件安全模块（HSM）的保护。要使用或管理 KMS 密钥，您需要与 AWS KMS 交互。
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) – Athena 是一种交互式查询服务，方便通过使用标准 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html) 直接分析 Amazon S3 中的数据。还可以使用 Athena，通过 Apache Spark 以交互方式运行数据分析，而无需规划、配置或管理资源。在 Athena 上运行 Apache Spark 应用程序时，您需要提交 Spark 代码以供处理并直接接收结果。
+ [Amazon SageMaker 培训](https://docs.aws.amazon.com//sagemaker/latest/dg/how-it-works-training.html) – 查看使用 Amazon SageMaker 训练模型的选项，包括内置算法、自定义算法、库和 AWS Marketplace 中的模型。
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html) – AWS Glue 是一项无服务器数据集成服务，可让使用分析功能的用户轻松发现、准备、移动和集成来自多个来源的数据。您可以使用 AWS Glue 进行分析、机器学习和应用程序开发。AWS Glue 还包括用于编写、运行任务和实施业务工作流程的额外生产率和数据操作工具。
+ [Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-what-is-emr.html) – Amazon EMR 是一个托管式集群平台，可简化在 AWS 上运行大数据框架（如 Apache Hadoop 和 Apache Spark）来处理和分析海量数据的过程。
+ [AWS CloudTrail](https://docs.aws.amazon.com//awscloudtrail/latest/userguide/cloudtrail-user-guide.html) – AWS CloudTrail 是一项 AWS 服务，可协助您对 AWS 账户进行运营和风险审计、监管及合规性管理。用户、角色或 AWS 服务执行的操作将记录为 CloudTrail 中的事件。事件包括在 AWS 管理控制台、AWS 命令行界面、AWS SDK 和 API 中所执行的操作。
+ [AWS CloudFormation](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/Welcome.html) – 这是一项服务，有助于您对 AWS 资源进行建模和设置，以便能花较少的时间管理这些资源，而将更多的时间花在运行于 AWS 中的应用程序上。您创建一个描述您所需的所有 AWS 资源（如 Amazon EC2 实例或 Amazon RDS 数据库实例）的模板，并且 CloudFormation 将负责为您预置和配置这些资源。您无需单独创建和配置 AWS 资源并了解 what; CloudFormation 句柄处理该工作时所依赖的内容。

### 后续步骤
<a name="s3-express-next-steps"></a>

有关使用 S3 Express One Zone 存储类和目录存储桶的更多信息，请参阅以下主题：
+ [教程：开始使用 S3 Express One Zone](s3-express-getting-started.md)
+ [S3 Express One Zone 可用区和区域](s3-express-Endpoints.md)
+ [可用区内目录存储桶的联网](directory-bucket-az-networking.md)
+ [在可用区中创建目录存储桶](directory-bucket-create.md)
+ [可用区中适用于目录存储桶的区域和可用区端点](endpoint-directory-buckets-AZ.md)
+ [优化 S3 Express One Zone 性能](s3-express-performance.md)

# 教程：开始使用 S3 Express One Zone
<a name="s3-express-getting-started"></a>

Amazon S3 Express One Zone 存储类是第一种可以在其中选择单个可用区的 S3 存储类，您可以选择将您的对象存储与计算资源联合托管在一个位置，从而提供尽可能高的访问速度。S3 Express One Zone 中的数据存储在可用区内的目录存储桶中。有关目录存储桶的更多信息，请参阅[目录存储桶](https://docs.aws.amazon.com//AmazonS3/latest/userguide/directory-buckets-overview.html)。

 S3 Express One Zone 非常适合任何务必尽可能减少请求延迟的应用程序。此类应用程序可以是人机交互式工作流，例如视频编辑，在这种情况下，创意专业人士需要在通过用户界面访问内容时获得快速的响应。对数据响应能力具有类似要求的分析和机器学习工作负载也可以从 S3 Express One Zone 中获益，尤其是对于有大量访问小文件或大量随机访问的工作负载。S3 Express One Zone 可以与其它 AWS 服务一起使用来支持分析以及人工智能与机器学习（AI/ML）工作负载，例如 Amazon EMR、Amazon Athena、AWS Glue Data Catalog 和 Amazon SageMaker Model Training。可以通过 Amazon S3 控制台、AWS SDK、AWS 命令行界面（AWS CLI）和 Amazon S3 REST API 使用 S3 Express One Zone 存储类和目录存储桶。有关更多信息，请参阅[什么是 S3 Express One Zone？](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-one-zone.html)和 [S3 Express One Zone 有哪些不同？](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html) 

![\[这是 S3 Express One Zone 工作流程图。\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/s3-express-one-zone.png)


**目标**  
在本教程中，您将学习如何创建网关端点、创建和附加 IAM 策略、创建目录存储桶，然后使用“导入”操作用当前存储在通用存储桶中的对象填充目录存储桶。或者，您可以手动将对象上传到目录存储桶。

**Topics**
+ [先决条件](#s3-express-tutorial-prerequisites)
+ [步骤 1：配置网关 VPC 端点以访问 S3 Express One Zone 目录存储桶](s3-express-tutorial-endpoints.md)
+ [步骤 2：创建 S3 Express One Zone 目录存储桶](s3-express-tutorial-create-directory-bucket.md)
+ [步骤 3：将数据导入到 S3 Express One Zone 目录存储桶](s3-express-tutorial-Import.md)
+ [步骤 4：手动将对象上传到 S3 Express One Zone 目录存储桶](s3-express-tutorial-Upload.md)
+ [步骤 5：清空 S3 Express One Zone 目录存储桶](s3-express-tutoiral-Empty.md)
+ [步骤 6：删除 S3 Express One Zone 目录存储桶](s3-express-tutoiral-Delete.md)
+ [后续步骤](#s3-express-tutoiral-Next)

## 先决条件
<a name="s3-express-tutorial-prerequisites"></a>

在开始本教程之前，您必须具有 AWS 账户，您可使用具有正确权限的 AWS Identity and Access Management（IAM）用户登录此账户。

**Topics**
+ [创建 AWS 账户](#s3-express-create-account)
+ [在 AWS 账户中创建 IAM 用户（控制台）](#s3-express-tutorial-user)
+ [创建 IAM 策略并将其附加到 IAM 用户或角色（控制台）](#s3-express-tutorial-polict)

### 创建 AWS 账户
<a name="s3-express-create-account"></a>

要完成此教程，您需要一个AWS 账户。在注册 AWS 时，将在 AWS 中为您的 AWS 账户 自动注册所有服务，包括 Amazon S3。您只需为使用的服务付费。有关定价的更多信息，请参阅 [S3 定价](https://aws.amazon.com/s3/pricing/)。

### 在 AWS 账户中创建 IAM 用户（控制台）
<a name="s3-express-tutorial-user"></a>

AWS Identity and Access Management（IAM）是一项 AWS 服务，有助于管理员安全地控制对 AWS 资源的访问。IAM 管理员可控制哪些用户能够通过身份验证（登录）和获得授权（拥有权限），来在 S3 Express One Zone 中访问对象和使用目录存储桶。使用 IAM 不会产生额外的费用。

默认情况下，用户没有访问目录存储桶和执行 S3 Express One Zone 操作的权限。要授予对目录存储桶和 S3 Express One Zone 操作的访问权限，您可以使用 IAM 创建用户或角色，然后将权限附加到这些身份。有关如何创建 IAM 用户的更多信息，请参阅 *《IAM 用户指南》*中的[创建 IAM 用户（控制台）](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)。有关如何创建 IAM 角色的更多信息，请参阅《IAM 用户指南》**中的[创建向 IAM 用户委派权限的角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html)。

为简单起见，本教程创建并使用 IAM 用户。完成本教程后，请记住 [删除 IAM 用户](tutorial-s3-object-lambda-uppercase.md#ol-upper-step8-delete-user)。对于生产用途，我们建议您遵循《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。最佳实践要求人类用户将联合身份验证与身份提供商结合使用，以使用临时凭证访问 AWS。另一项最佳实践是要求工作负载使用带有 IAM 角色的临时凭证访问 AWS。要详细了解如何使用 AWS IAM Identity Center 创建具有临时凭证的用户，请参阅《AWS IAM Identity Center 用户指南》**中的 [Getting started](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)。

**警告**  
IAM 用户具有长期凭证，这会带来安全风险。为帮助减轻这种风险，我们建议仅向这些用户提供执行任务所需的权限，并在不再需要这些用户时将其移除。

### 创建 IAM 策略并将其附加到 IAM 用户或角色（控制台）
<a name="s3-express-tutorial-polict"></a>

默认情况下，用户没有目录存储桶和 S3 Express One Zone 操作的权限。要授予对目录存储桶的访问权限，您可以使用 IAM 创建用户、组或角色，然后将权限附加到这些身份。对于 S3 Express One Zone 访问权限，目录存储桶是唯一可以包括在存储桶策略或 IAM 身份策略中的资源。

要在 S3 Express One Zone 中使用区域端点 API 操作（存储桶级或控制面板操作），请使用 IAM 授权模型，该模型不涉及会话管理。对于操作，将单独授予权限。要使用可用区端点 API 操作（对象级或数据面板操作），可以使用 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html) 来创建和管理会话，这些会话经过优化，可为数据请求提供低延迟授权。要检索和使用会话令牌，您必须在基于身份的策略或存储桶策略中，允许对目录存储桶执行 `s3express:CreateSession` 操作。如果您在 Amazon S3 控制台中通过 AWS 命令行界面（AWS CLI）或使用 AWS SDK 访问 S3 Express One Zone，S3 Express One Zone 会代表您创建会话。有关更多信息，请参阅 [`CreateSession` 授权](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-create-session.html)和[适用于 S3 Express One Zone 的 AWS Identity and Access Management（IAM）](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html)。

**创建 IAM 策略并将该策略附加到 IAM 用户（或角色）**

1. 登录 AWS 管理控制台，并打开 IAM 管理控制台。

1. 在导航窗格中，选择**策略**。

1. 选择**创建策略**。

1. 选择 **JSON**。

1. 将以下策略复制到**策略编辑器**窗口。在创建目录存储桶或使用 S3 Express One Zone 之前，您必须向 AWS Identity and Access Management（IAM）角色或用户授予必要的权限。此示例策略支持访问 `CreateSession` API 操作（与其它可用区或对象级 API 操作结合使用）和所有区域端点（存储桶级）API 操作。此策略允许将 `CreateSession` API 操作用于所有目录存储桶，但仅允许将区域端点 API 操作用于指定的目录存储桶。要使用此示例策略，请将 `user input placeholders` 替换为您自己的信息。

------
#### [ JSON ]

****  

   ```
   {
        "Version":"2012-10-17",		 	 	 
        "Statement": [ 
            {
                "Sid": "AllowAccessRegionalEndpointAPIs",
                "Effect": "Allow",
                "Action": [
                    "s3express:DeleteBucket",
                    "s3express:DeleteBucketPolicy",
                    "s3express:CreateBucket",
                    "s3express:PutBucketPolicy",
                    "s3express:GetBucketPolicy",
                    "s3express:ListAllMyDirectoryBuckets"
                ],
   
                "Resource": "arn:aws:s3express:us-east-1:111122223333:bucket/amzn-s3-demo-bucket--usw2-az1--x-s3/*"
            },
            {
                "Sid": "AllowCreateSession",
                "Effect": "Allow",
                "Action": "s3express:CreateSession",
                "Resource": "*"
            }
        ]
    }
   ```

------

1. 选择**下一步**。

1. 为该策略命名。
**注意**  
S3 Express One Zone 不支持存储桶标签。

1. 选择**创建策略**。

1.  创建 IAM 策略后，可以将其附加到 IAM 用户。在导航窗格中，选择**策略**。

1. 在**搜索栏**中，输入策略的名称。

1. 从**操作**菜单中，选择**附加**。

1. 在**按实体类型筛选**下，选择 **IAM 用户**或**角色**。

1. 在**搜索字段**中，键入您要使用的用户或角色的名称。

1. 选择**附加策略**。

**Topics**
+ [创建 AWS 账户](#s3-express-create-account)
+ [在 AWS 账户中创建 IAM 用户（控制台）](#s3-express-tutorial-user)
+ [创建 IAM 策略并将其附加到 IAM 用户或角色（控制台）](#s3-express-tutorial-polict)

# 步骤 1：配置网关 VPC 端点以访问 S3 Express One Zone 目录存储桶
<a name="s3-express-tutorial-endpoints"></a>

 您可以通过网关虚拟私有云（VPC）端点访问可用区和区域 API 操作。网关端点可让流量在不通过 NAT 网关的情况下到达 S3 Express One Zone。我们强烈建议使用网关端点，因为在使用 S3 Express One Zone 时，此类端点可提供最佳的联网路径。您可以从 VPC 访问 S3 Express One Zone 目录存储桶，而无需为 VPC 配备互联网网关或 NAT 设备，也无需任何额外费用。使用以下过程可配置连接到 S3 Express One Zone 存储类对象和目录存储桶的网关端点。

要访问 S3 Express One Zone，您需要使用不同于标准 Amazon S3 端点的区域和可用区端点。根据您使用的 Amazon S3 API 操作，需要区域端点或可用区端点。有关各端点类型支持的 API 操作的完整列表，请参阅 [S3 Express One Zone 支持的 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations)。您必须通过网关虚拟私有云（VPC）端点访问可用区端点和区域端点。

 使用以下过程创建连接到 S3 Express One Zone 存储类对象和目录存储桶的网关端点。

**配置网关 VPC 端点**

1. 打开位于 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 的 Amazon VPC 控制台。

1. 在侧导航窗格中的**虚拟私有云**下，选择**端点**。

1. 选择**创建端点**。

1. 为端点创建名称。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 在**服务**下，使用筛选条件 **Type=Gateway** 进行搜索，然后选择 **com.amazonaws.*region*.s3express** 旁边的选项按钮。

1. 对于 **VPC**，选择要在其中创建端点的 VPC。

1. 对于**路由表**，选择本地区域上要由端点使用的路由表。创建端点后，将在此步骤中选择的路由表中添加一条路径记录。

1. 对于**策略**，请选择**完整访问权限**以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则，选择**自定义**以附加 VPC 端点策略，该策略控制主体通过 VPC 端点对资源执行操作的权限。

1. 对于 **IP address type**（IP 地址类型），可从以下选项中进行选择：
   +  **IPv4** – 将 IPv4 地址分配给端点网络接口。仅当所有选定子网都具有 IPv4 地址范围且服务接受 IPv4 请求时，才支持此选项。
   +  **IPv6** – 将 IPv6 地址分配给端点网络接口。仅当所有选定子网均为仅限 IPv6 的子网且服务接受 IPv6 请求时，才支持此选项。
   +  **双堆栈**：将 IPv4 和 IPv6 地址均分配给端点网络接口。仅当所有选定子网都具有 IPv4 和 IPv6 地址范围且服务接受 IPv4 和 IPv6 请求时，才支持此选项。

1. （可选）要添加标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 选择**创建端点**。

创建网关端点后，您可以使用区域 API 端点和可用区 API 端点来访问 Amazon S3 Express One Zone 存储类对象和目录存储桶。

# 步骤 2：创建 S3 Express One Zone 目录存储桶
<a name="s3-express-tutorial-create-directory-bucket"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面顶部的导航栏中，选择当前所显示 AWS 区域的名称。接下来，选择要在其中创建存储桶的区域。
**注意**  
要最大程度地减少延迟和成本以及满足法规要求，请选择一个靠近您的区域。在某一区域存储的对象将一直留在该区域，除非您特意将其转移到其他区域。有关 Amazon S3 AWS 区域的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS 服务 端点](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 选择**创建存储桶**。此时将打开**创建存储桶**页面。

1. 在**常规配置**下，查看将在其中创建存储桶的 AWS 区域。

   在**存储桶类型**下，请选择**目录**。
**注意**  
如果您选择的区域不支持目录桶，则**桶类型**选项将消失，桶类型默认为通用桶。要创建目录桶，您必须选择受支持的区域。有关支持目录桶和 Amazon S3 Express One Zone 存储类的区域列表，请参阅[S3 Express One Zone 可用区和区域](s3-express-Endpoints.md)。
在创建存储桶后，便无法更改存储桶类型。
**注意**  
创建存储桶后无法更改可用区。

1. 对于**可用区**，请选择计算服务本地的可用区。有关支持目录桶和 S3 Express One Zone 存储类的可用区列表，请参阅[S3 Express One Zone 可用区和区域](s3-express-Endpoints.md)。

   在**可用区**下，选中复选框以确认在可用区中断时，您的数据可能不可用或丢失。
**重要**  
尽管目录桶存储在单个可用区中的多个设备上，但目录桶不会跨可用区冗余存储数据。

1. 对于**存储桶名称**，请输入目录存储桶的名称。

   以下命名规则适用于目录存储桶。
   + 在选定的区域（AWS 可用区或 AWS 本地区域）内是唯一的。
   + 名称的长度必须介于 3（最小）到 63（最大）个字符之间，包括后缀。
   + 仅包含小写字母、数字和连字符（-）。
   + 以字母或数字开头和结尾。
   + 必须包含以下后缀：`--zone-id--x-s3`。
   + 存储桶名称不得以前缀 `xn--` 开头。
   + 存储桶名称不得以前缀 `sthree-` 开头。
   + 存储桶名称不得以前缀 `sthree-configurator` 开头。
   + 存储桶名称不得以前缀 ` amzn-s3-demo-` 开头。
   + 存储桶名称不得以后缀 `-s3alias` 结尾。此后缀是为接入点别名预留的。有关更多信息，请参阅 [接入点别名](access-points-naming.md#access-points-alias)。
   + 存储桶名称不得以后缀 `--ol-s3` 结尾。此后缀是为对象 Lambda 接入点别名预留的。有关更多信息，请参阅 [如何为您的 S3 存储桶对象 Lambda 接入点使用存储桶式别名](olap-use.md#ol-access-points-alias)。
   + 存储桶名称不得以后缀 `.mrap` 结尾。此后缀预留用于多区域接入点名称。有关更多信息，请参阅 [命名 Amazon S3 多区域接入点的规则](multi-region-access-point-naming.md)。

   后缀将自动添加到您使用控制台创建目录存储桶时提供的基本名称中。此后缀包括您选择的可用区的可用区 ID。

   创建存储桶后，便无法更改其名称。有关给存储桶命名的更多信息，请参阅[通用存储桶命名规则](bucketnamingrules.md)。
**重要**  
请勿在桶名称中包含敏感信息，如账号。存储桶名称会显示在指向存储桶中的对象的 URL 中。

1. 在**对象所有权**下，将自动启用**强制桶拥有者**设置，并禁用所有访问控制列表（ACL）。对于目录存储桶，无法启用 ACL。

    **强制存储桶拥有者（默认）**：ACL 已禁用，存储桶拥有者自动拥有并完全控制通用存储桶中的每个对象。ACL 不再影响对 S3 通用存储桶中数据的访问权限。存储桶专门使用策略来定义访问控制。

1. 在**此桶的屏蔽公共访问权限设置**下，目录桶的所有屏蔽公共访问权限设置已自动启用。无法修改目录桶的这些设置。有关阻止公共访问的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

1. 要配置默认加密，请在**加密类型**下，选择以下选项之一：
   + **具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**
   + **具有 AWS Key Management Service 密钥的服务器端加密（SSE-KMS）**

   有关使用 Amazon S3 服务器端加密对数据进行加密的更多信息，请参阅[数据保护和加密](s3-express-data-protection.md)。
**重要**  
如果您将 SSE-KMS 选项用于默认加密配置，则您将受到 AWS KMS 的每秒请求数（RPS）限额限制。有关 AWS KMS 限额以及如何请求增加限额的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[限额](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。  
当您启用默认加密时，您可能需要更新存储桶策略。有关更多信息，请参阅 [使用 SSE-KMS 加密进行跨账户操作](bucket-encryption.md#bucket-encryption-update-bucket-policy)。

1. 如果您选择**具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**，则在**存储桶密钥**下方将显示**已启用**。当您将目录存储桶配置为使用 SSE-S3 进行默认加密时，始终启用 S3 存储桶密钥。始终为目录存储桶中的 `GET` 和 `PUT` 操作启用 S3 存储桶密钥，并且不能禁用。当您通过 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[批量操作中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 任务](create-import-job.md)，将 SSE-KMS 加密的对象从通用存储桶复制到目录存储桶、从目录存储桶复制到通用存储桶，或在目录存储桶之间复制时，不支持 S3 存储桶密钥。在这种情况下，每次对 KMS 加密的对象发出复制请求时，Amazon S3 都会调用 AWS KMS。

   S3 存储桶密钥可通过减少从 Amazon S3 到 AWS KMS 的请求流量，降低加密成本。有关更多信息，请参阅 [使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本](bucket-key.md)。

1. 如果您选择了**具有 AWS Key Management Service 密钥的服务器端加密（SSE-KMS）**，则在 **AWS KMS 密钥**下，通过以下方式之一指定您的 AWS Key Management Service 密钥或创建新密钥。
   + 要从可用 KMS 密钥列表中进行选择，选择**从您的 AWS KMS keys中进行选择**，并从**可用的 AWS KMS keys**中选择您的 **KMS 密钥**。

     只有您的客户自主管理型密钥显示在此列表中。目录存储桶不支持 AWS 托管式密钥 (`aws/s3`)。有关客户自主管理型密钥的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[客户密钥和 AWS 密钥](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
   + 要输入 KMS 密钥 ARN 或别名，选择**输入 AWS KMS key ARN**，然后在 **AWS KMS key ARN** 中输入您的 KMS 密钥 ARN 或别名。
   + 要在 AWS KMS 控制台中创建新的客户自主管理型密钥，请选择**创建 KMS 密钥**。

     有关创建 AWS KMS key 的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[创建密钥](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
在存储桶的生命周期内，SSE-KMS 配置只能支持每个目录存储桶 1 个 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。[https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`) 不受支持。此外，在为 SSE-KMS 指定客户自主管理型密钥后，无法覆盖存储桶的 SSE-KMS 配置的客户自主管理型密钥。  
可以通过以下方式，确定您为存储桶的 SSE-KMS 配置指定的客户自主管理型密钥：  
您发出 `HeadObject` API 操作请求以查找响应中 `x-amz-server-side-encryption-aws-kms-key-id` 的值。
要对数据使用新的客户自主管理型密钥，我们建议使用新的客户自主管理型密钥将现有对象复制到新的目录存储桶中。
您只能使用与存储桶所在相同的 AWS 区域中可用的 KMS 密钥。Amazon S3 控制台仅列出与存储桶位于同一区域中的前 100 个 KMS 密钥。要使用未列出的 KMS 密钥，您必须输入 KMS 密钥 ARN。如果您希望使用其他账户拥有的 KMS 密钥，则必须首先有权使用该密钥，然后必须输入相应的 KMS 密钥 ARN。有关 KMS 密钥的跨账户权限的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[创建其他账户可以使用的 KMS 密钥](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。有关 SSE-KMS 的更多信息，请参阅[为目录存储桶中的新对象上传指定具有 AWS KMS 的服务器端加密（SSE-KMS）](s3-express-specifying-kms-encryption.md)。
在目录存储桶中使用 AWS KMS key进行服务器端加密时，您必须选择对称加密 KMS 密钥。Amazon S3 仅支持对称加密 KMS 密钥，而不支持非对称 KMS 密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[确定对称和非对称 KMS 密钥](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

   有关将 AWS KMS 与 Amazon S3 结合使用的更多信息，请参阅[在目录存储桶中使用具有 AWS KMS 密钥的服务器端加密（SSE-KMS）](s3-express-UsingKMSEncryption.md)。

1. 选择 **创建存储桶 **。创建存储桶后，您可以向存储桶中添加文件和文件夹。有关更多信息，请参阅 [使用目录桶中的对象](directory-buckets-objects.md)。

# 步骤 3：将数据导入到 S3 Express One Zone 目录存储桶
<a name="s3-express-tutorial-Import"></a>

要完成此步骤，您必须有一个包含对象的通用存储桶，并且它与目录存储桶位于同一个 AWS 区域中。

在 Amazon S3 中创建目录存储桶后，可以使用 Amazon S3 控制台中的“导入”操作在新的存储桶中填充数据。导入过程可让您选择要从中导入数据的前缀或通用存储桶，而无需单独指定要复制的所有对象，从而简化了将数据复制到目录存储桶的过程。导入过程使用 S3 批量操作，这会复制所选前缀或通用存储桶中的对象。可以通过 S3 批量操作任务详细信息页面监控“导入”复制任务的进度。

**使用“导入”操作**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面顶部的导航栏中，选择当前所显示 AWS 区域的名称。接下来，选择与目录存储桶所在的可用区关联的区域。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 选择要将对象导入到的存储桶名称旁边的选项按钮。

1. 选择**导入**。

1. 对于**源**，输入包含要导入的对象的通用存储桶（或包含前缀的存储桶路径）。要从列表中选择现有的通用存储桶，请选择**浏览 S3**。

1.  在**权限**部分，可以选择自动生成 IAM 角色。或者，可以从列表中选择 IAM 角色，或直接输入 IAM 角色 ARN。
   + 要允许 Amazon S3 代表您创建新的 IAM 角色，请选择**创建新的 IAM 角色**。
**注意**  
如果您的源对象使用具有 AWS Key Management Service（AWS KMS）密钥的服务器端加密（SSE-KMS）进行加密，请不要选择**创建新的 IAM 角色**选项。而是指定具有 `kms:Decrypt` 权限的现有 IAM 角色。  
Amazon S3 将使用此权限来解密您的对象。在导入过程中，Amazon S3 将使用具有 Amazon S3 托管密钥的服务器端加密（SSE-S3）对这些对象进行重新加密。
   + 要从列表中选择现有 IAM 角色，请选择**从现有 IAM 角色中选择**。
   + 要通过输入 Amazon 资源名称（ARN）指定现有 IAM 角色，请选择**输入 IAM 角色 ARN**，然后在相应字段中输入 ARN。

1. 查看**目标**和**复制的对象设置**部分中显示的信息。如果**目标**部分中的信息正确，请选择**导入**以启动复制作业。

   Amazon S3 控制台在**批量操作**页面上显示新作业的状态。有关作业的更多信息，请选择作业名称旁边的选项按钮，然后在**操作**菜单上选择**查看详细信息**。要打开要导入对象的目录存储桶，请选择**查看导入目标**。

# 步骤 4：手动将对象上传到 S3 Express One Zone 目录存储桶
<a name="s3-express-tutorial-Upload"></a>

也可以手动将对象上传到目录存储桶。

**手动上传对象**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面右上角的导航栏中，选择当前所显示的 AWS 区域的名称。接下来，选择与目录存储桶所在的可用区关联的区域。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 选择要将文件夹或文件上传到的桶的名称。
**注意**  
 如果您选择的目录存储桶与本教程前面的步骤中使用的目录存储桶相同，则目录存储桶将包含从“导入”工具上传的对象。请注意，这些对象现在存储在 S3 Express One Zone 存储类中。

1. 在**对象**列表中，选择**上传**。

1. 在**上传**页面上，执行以下操作之一：
   + 将文件和文件夹拖放到虚线上传区域。
   + 选择**添加文件**或**添加文件夹**，选择要上传的文件或文件夹，然后选择**打开**或**上传**。

1. 在**校验和**下，选择要使用的**校验和函数**。
**注意**  
 我们建议使用 CRC32 和 CRC32C，以便在 S3 Express One Zone 存储类上获得最佳性能。有关更多信息，请参阅[其它 S3 校验和最佳实践](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-optimizing-performance-design-patterns.html#s3-express-optimizing--checksums.html)。

   （可选）如果您要上传大小不到 16 MB 的单个对象，也可以指定预先计算的校验和值。当您提供预先计算的值时，Amazon S3 会将该值与它使用所选校验和函数计算的值进行比较。如果值不匹配，则上传不会开始。

1. **权限**和**属性**部分中的选项会自动设置为默认设置，无法修改。将自动启用“屏蔽公共访问权限”，而无法为目录桶启用 S3 版本控制和 S3 对象锁定。

   （可选）如果要以键值对的形式向对象添加元数据，请展开**属性**部分，然后在**元数据**部分中选择**添加元数据**。

1. 要上传列出的文件和文件夹，请选择**上传**。

   Amazon S3 会上传您的对象和文件夹。上传完成后，您可以在**上传：状态**页面上看到成功消息。

    您已成功创建了目录存储桶并将对象上传到存储桶。

# 步骤 5：清空 S3 Express One Zone 目录存储桶
<a name="s3-express-tutoiral-Empty"></a>

可以使用 Amazon S3 控制台来清空 Amazon S3 目录存储桶。

**清空目录桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面右上角的导航栏中，选择当前所显示的 AWS 区域的名称。接下来，选择与目录存储桶所在的可用区关联的区域。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 选择您要清空的桶名称旁边的选项按钮，然后选择**清空**。

1. 在**清空存储桶**页面上，通过在文本字段中输入 **permanently delete** 来确认要清空存储桶，然后选择**清空**。

1. 在**清空桶：状态**页面上监控桶清空过程的进度。

# 步骤 6：删除 S3 Express One Zone 目录存储桶
<a name="s3-express-tutoiral-Delete"></a>

清空目录存储桶并中止所有正在进行的分段上传后，可以使用 Amazon S3 控制台删除存储桶。

**删除目录存储桶**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面右上角的导航栏中，选择当前所显示的 AWS 区域的名称。接下来，选择与目录存储桶所在的可用区关联的区域。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 在**目录桶**列表中，选择要删除的桶旁边的选项按钮。

1. 选择**删除**。

1. 在**删除桶**页面上，在文本字段中输入桶的名称以确认删除您的桶。
**重要**  
无法撤消删除目录存储桶的操作。

1. 要删除您的目录存储桶，请选择**删除存储桶**。

## 后续步骤
<a name="s3-express-tutoiral-Next"></a>

在本教程中，您学习了如何创建目录存储桶和使用 S3 Express One Zone 存储类。完成本教程后，您可以探索要与 S3 Express One Zone 存储类一起使用的相关 AWS 服务。

您可以将以下 AWS 服务与 S3 Express One Zone 存储类配合使用，以支持您的特定低延迟使用场景。
+ [Amazon Elastic Compute Cloud（Amazon EC2）](https://docs.aws.amazon.com/ec2/index.html)– Amazon EC2 在 AWS 云 中提供安全可扩展的计算容量。使用 Amazon EC2 可减少前期的硬件投入，因此您能够快速开发和部署应用程序。您可以使用 Amazon EC2 启动所需数量的虚拟服务器，配置安全性和联网以及管理存储。
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html.html) – Lambda 是一项计算服务，可使您无需预置或管理服务器即可运行代码。您在存储桶上配置通知设置，并向 Amazon S3 授予权限来根据函数的基于资源的权限策略调用函数。
+ [Amazon Elastic Kubernetes Service（Amazon EKS）](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html)– Amazon EKS 是一项托管式服务，无需在 AWS 上安装、操作和维护自己的 Kubernetes 控制面板。[https://kubernetes.io/docs/concepts/overview/](https://kubernetes.io/docs/concepts/overview/) 是一个开源系统，用于自动管理、扩展和部署容器化应用程序。
+ [Amazon Elastic Container Service（Amazon ECS）](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)– Amazon ECS 是完全托管的容器编排服务，可协助您轻松地部署、管理和扩展容器化应用程序。
+ [Amazon EMR](https://docs.aws.amazon.com//emr/latest/ManagementGuide/emr-express-one-zone.html) – Amazon EMR 是一个托管式集群平台，可简化在 AWS 上运行大数据框架（如 Apache Hadoop 和 Apache Spark）来处理和分析海量数据的过程。
+ [Amazon Athena](https://docs.aws.amazon.com//athena/latest/ug/querying-express-one-zone.html) – Athena 是一种交互式查询服务，方便通过使用标准 [SQL](https://docs.aws.amazon.com/athena/latest/ug/ddl-sql-reference.html) 直接分析 Amazon S3 中的数据。还可以使用 Athena，通过 Apache Spark 以交互方式运行数据分析，而无需规划、配置或管理资源。在 Athena 上运行 Apache Spark 应用程序时，您需要提交 Spark 代码以供处理并直接接收结果。
+ [AWS Glue Data Catalog](https://docs.aws.amazon.com//glue/latest/dg/catalog-and-crawler.html) – AWS Glue 是一项无服务器数据集成服务，可让使用分析功能的用户轻松发现、准备、移动和集成来自多个来源的数据。您可以使用 AWS Glue 进行分析、机器学习和应用程序开发。AWSGlue Data Catalog 是一个集中式存储库，用于存储有关贵组织数据集的元数据。它充当数据来源的位置、架构和运行时指标的索引。
+ [Amazon SageMaker Runtime 模型训练](https://docs.aws.amazon.com//sagemaker/latest/dg/model-access-training-data.html) – Amazon SageMaker Runtime 是一项完全托管式机器学习服务。借助 SageMaker Runtime，数据科学家和开发人员可以快速、轻松地构建和训练机器学习模型，然后直接将模型部署到生产就绪托管环境中。

 有关 S3 Express One Zone 的更多信息，请参阅[什么是 S3 Express One Zone？](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-one-zone.html)和 [S3 Express One Zone 有哪些不同？](https://docs.aws.amazon.com//AmazonS3/latest/userguide/s3-express-differences.html)

# S3 Express One Zone 可用区和区域
<a name="s3-express-Endpoints"></a>

可用区是 AWS 区域 中一个或多个具有冗余电源、网络和连接的离散数据中心。为了实现优化的低延迟检索，Amazon S3 Express One Zone 存储类中的对象以冗余方式存储在 S3 目录存储桶中，这种存储桶位于计算工作负载所在的单个可用区。创建目录存储桶时，您可以选择存储桶所在的可用区以及 AWS 区域。

AWS 将物理可用区随机映射到每个 AWS 账户的可用区名称。这种方法有助于在 AWS 区域的可用区之间分配资源，而不是将资源集中在每个区域的第一个可用区中。因此，您的 AWS 账户的可用区 `us-east-1a` 可能与其他 AWS 账户的 `us-east-1a` 表示的物理位置不同。有关更多信息，请参阅《Amazon EC2 用户指南》**中的[区域和可用区](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html)。

要跨账户协调可用区，您必须使用 *AZ ID*（可用区的唯一、一致的标识符）。例如，`use1-az1` 是 `us-east-1` 区域的可用区 ID，它在每个 AWS 账户 中的实际位置均相同。下图显示了每个账户的 AZ ID 是相同的，尽管每个账户的可用区名称映射可能不同。

![\[图中显示了可用区映射和区域。\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/availability-zone-mapping.png)


使用 S3 Express One Zone，您的数据将冗余地存储在单个可用区中的多个设备上。S3 Express One Zone 设计为在单个可用区内提供 99.95% 的可用性，并由 [Amazon S3 服务等级协议](https://aws.amazon.com/s3/sla/)提供支持。有关更多信息，请参阅 [可用区](directory-bucket-high-performance.md#s3-express-overview-az)。

 下表显示了 S3 Express One Zone 支持的区域和可用区。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/s3-express-Endpoints.html)

# 可用区内目录存储桶的联网
<a name="directory-bucket-az-networking"></a>

为了减少数据包在网络上所花费的传输时间，请将带有网关端点的虚拟私有云（VPC）配置为访问可用区中的目录存储桶，同时将流量保持在 AWS 网络内而无需任何额外费用。

**Topics**
+ [可用区中目录存储桶的端点](#s3-express-endpoints-az)
+ [配置 VPC 网关端点](#s3-express-networking-vpc-gateway)

## 可用区中目录存储桶的端点
<a name="s3-express-endpoints-az"></a>

下表显示了在各个区域和可用区中可以使用的区域和可用区 API 端点。


| 区域名称 | 区域 | 可用区 ID | 区域端点 | 可用区端点 | 
| --- | --- | --- | --- | --- | 
|  美国东部（弗吉尼亚州北部）  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  美国东部（俄亥俄州）  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  美国西部（俄勒冈州）  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  亚太地区（孟买）  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  亚太地区（东京）  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  欧洲地区（爱尔兰）  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  欧洲地区（斯德哥尔摩）  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

## 配置 VPC 网关端点
<a name="s3-express-networking-vpc-gateway"></a>

使用以下过程创建连接到 Amazon S3 Express One Zone 存储类对象和目录存储桶的网关端点。

**配置网关 VPC 端点**

1. 打开 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择**端点**。

1. 选择 **创建端点**。

1. 为端点创建名称。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于**服务**，添加筛选条件 **Type=Gateway**，然后选择 **com.amazonaws.*region*.s3express** 旁边的选项按钮。

1. 对于 **VPC**，选择要在其中创建端点的 VPC。

1. 对于**路由表**，请选择 VPC 中要由端点使用的路由表。创建端点后，将在此步骤中选择的路由表中添加一条路径记录。

1. 对于**策略**，请选择**完整访问权限**以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则，选择**自定义**以附加 VPC 端点策略，该策略控制主体通过 VPC 端点对资源执行操作的权限。

1. 对于 **IP address type**（IP 地址类型），可从以下选项中进行选择：
   +  **IPv4** – 将 IPv4 地址分配给端点网络接口。仅当所有选定子网都具有 IPv4 地址范围且服务接受 IPv4 请求时，才支持此选项。
   +  **IPv6** – 将 IPv6 地址分配给端点网络接口。仅当所有选定子网均为仅限 IPv6 的子网且服务接受 IPv6 请求时，才支持此选项。
   +  **双堆栈**：将 IPv4 和 IPv6 地址均分配给端点网络接口。仅当所有选定子网都具有 IPv4 和 IPv6 地址范围且服务接受 IPv4 和 IPv6 请求时，才支持此选项。

1. （可选）要添加标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 选择**创建端点**。

创建网关端点后，您可以使用区域 API 端点和可用区 API 端点来访问 Amazon S3 Express One Zone 存储类对象和目录存储桶。

有关网关 VPC 端点的更多信息，请参阅《AWS PrivateLink Guide》**中的 [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。对于数据驻留应用场景，我们建议使用网关 VPC 端点仅从 VPC 访问存储桶。当访问权限限于 VPC 或 VPC 端点时，可以通过 AWS 管理控制台、REST API、AWS CLI 和 AWS SDK 访问对象。

**注意**  
要使用 AWS 管理控制台将访问权限限于 VPC 或 VPC 端点，必须使用 AWS 管理控制台私有访问权限。有关更多信息，请参阅《AWS 管理控制台指南》**中的 [AWS 管理控制台私有访问](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)。

# 在可用区中创建目录存储桶
<a name="directory-bucket-create"></a>

要开始使用 Amazon S3 Express One Zone 存储类，您需要创建一个目录存储桶。S3 Express One Zone 存储类只能用于目录存储桶。S3 Express One Zone 存储类支持低延迟使用案例，并在单个可用区内提供更快的数据处理速度。如果您的应用程序注重性能，并且受益于个位数毫秒的 `PUT` 和 `GET` 延迟，我们建议您创建一个目录存储桶，以便可以使用 S3 Express One Zone 存储类。

Amazon S3 存储桶有两种类型：通用存储桶和目录存储桶。您应该选择适合您应用程序和性能要求的存储桶类型。通用存储桶是最初的 S3 存储桶类型。对于大多数使用案例和访问模式，建议使用通用桶，通用桶允许在除 S3 Express One Zone 之外的所有存储类中存储对象。有关通用存储桶的更多信息，请参阅[通用存储桶概述](UsingBucket.md)。

目录存储桶使用 S3 Express One Zone 存储类，该存储类专用于需要一致的个位数毫秒延迟的工作负载或性能关键型应用程序。S3 Express One Zone 是第一种可以在其中选择单个可用区的 S3 存储类，您可以选择将您的对象存储与计算资源联合托管在一个位置，从而提供尽可能高的访问速度。创建目录存储桶时，您可以选择指定 Amazon EC2、Amazon Elastic Kubernetes Service 或 Amazon Elastic Container Service（Amazon ECS）计算实例的本地 AWS 区域和可用区，以优化性能。

使用 S3 Express One Zone，您的数据将冗余地存储在单个可用区中的多个设备上。S3 Express One Zone 设计为在单个可用区内提供 99.95% 的可用性，并由 [Amazon S3 服务等级协议](https://aws.amazon.com/s3/sla/)提供支持。有关更多信息，请参阅 [可用区](directory-bucket-high-performance.md#s3-express-overview-az)。

目录桶将数据按层次结构组织到目录中，而不是通用桶的扁平存储结构。目录存储桶没有前缀限制，单个目录可以横向扩展。

有关目录存储桶的更多信息，请参阅[使用目录存储桶](directory-buckets-overview.md)。

**目录存储桶名称**  
目录存储桶名称必须遵循以下格式并遵守目录存储桶命名规则：

```
bucket-base-name--zone-id--x-s3
```

例如，以下目录存储桶名称包含可用区 ID `usw2-az1`：

```
bucket-base-name--usw2-az1--x-s3
```

有关目录存储桶命名规则的更多信息，请参阅[目录存储桶命名规则](directory-bucket-naming-rules.md)。

## 使用 S3 控制台
<a name="create-directory-bucket-console"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面顶部的导航栏中，选择当前所显示 AWS 区域的名称。接下来，选择要在其中创建存储桶的区域。
**注意**  
要最大程度地减少延迟和成本以及满足法规要求，请选择一个靠近您的区域。在某一区域存储的对象将一直留在该区域，除非您特意将其转移到其他区域。有关 Amazon S3 AWS 区域的列表，请参阅《Amazon Web Services 一般参考》**中的 [AWS 服务 端点](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)。

1. 在左侧导航窗格中，选择**目录存储桶**。

1. 选择**创建存储桶**。此时将打开**创建存储桶**页面。

1. 在**常规配置**下，查看将在其中创建存储桶的 AWS 区域。

   在**存储桶类型**下，请选择**目录**。
**注意**  
如果您选择的区域不支持目录桶，则**桶类型**选项将消失，桶类型默认为通用桶。要创建目录桶，您必须选择受支持的区域。有关支持目录桶和 Amazon S3 Express One Zone 存储类的区域列表，请参阅[S3 Express One Zone 可用区和区域](s3-express-Endpoints.md)。
在创建存储桶后，便无法更改存储桶类型。
**注意**  
创建存储桶后无法更改可用区。

1. 对于**可用区**，请选择计算服务本地的可用区。有关支持目录桶和 S3 Express One Zone 存储类的可用区列表，请参阅[S3 Express One Zone 可用区和区域](s3-express-Endpoints.md)。

   在**可用区**下，选中复选框以确认在可用区中断时，您的数据可能不可用或丢失。
**重要**  
尽管目录桶存储在单个可用区中的多个设备上，但目录桶不会跨可用区冗余存储数据。

1. 对于**存储桶名称**，请输入目录存储桶的名称。

   以下命名规则适用于目录存储桶。
   + 在选定的区域（AWS 可用区或 AWS 本地区域）内是唯一的。
   + 名称的长度必须介于 3（最小）到 63（最大）个字符之间，包括后缀。
   + 仅包含小写字母、数字和连字符（-）。
   + 以字母或数字开头和结尾。
   + 必须包含以下后缀：`--zone-id--x-s3`。
   + 存储桶名称不得以前缀 `xn--` 开头。
   + 存储桶名称不得以前缀 `sthree-` 开头。
   + 存储桶名称不得以前缀 `sthree-configurator` 开头。
   + 存储桶名称不得以前缀 ` amzn-s3-demo-` 开头。
   + 存储桶名称不得以后缀 `-s3alias` 结尾。此后缀是为接入点别名预留的。有关更多信息，请参阅 [接入点别名](access-points-naming.md#access-points-alias)。
   + 存储桶名称不得以后缀 `--ol-s3` 结尾。此后缀是为对象 Lambda 接入点别名预留的。有关更多信息，请参阅 [如何为您的 S3 存储桶对象 Lambda 接入点使用存储桶式别名](olap-use.md#ol-access-points-alias)。
   + 存储桶名称不得以后缀 `.mrap` 结尾。此后缀预留用于多区域接入点名称。有关更多信息，请参阅 [命名 Amazon S3 多区域接入点的规则](multi-region-access-point-naming.md)。

   后缀将自动添加到您使用控制台创建目录存储桶时提供的基本名称中。此后缀包括您选择的可用区的可用区 ID。

   创建存储桶后，便无法更改其名称。有关给存储桶命名的更多信息，请参阅[通用存储桶命名规则](bucketnamingrules.md)。
**重要**  
请勿在桶名称中包含敏感信息，如账号。存储桶名称会显示在指向存储桶中的对象的 URL 中。

1. 在**对象所有权**下，将自动启用**强制桶拥有者**设置，并禁用所有访问控制列表（ACL）。对于目录存储桶，无法启用 ACL。

    **强制存储桶拥有者（默认）**：ACL 已禁用，存储桶拥有者自动拥有并完全控制通用存储桶中的每个对象。ACL 不再影响对 S3 通用存储桶中数据的访问权限。存储桶专门使用策略来定义访问控制。

1. 在**此桶的屏蔽公共访问权限设置**下，目录桶的所有屏蔽公共访问权限设置已自动启用。无法修改目录桶的这些设置。有关阻止公共访问的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

1. 要配置默认加密，请在**加密类型**下，选择以下选项之一：
   + **具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**
   + **具有 AWS Key Management Service 密钥的服务器端加密（SSE-KMS）**

   有关使用 Amazon S3 服务器端加密对数据进行加密的更多信息，请参阅[数据保护和加密](s3-express-data-protection.md)。
**重要**  
如果您将 SSE-KMS 选项用于默认加密配置，则您将受到 AWS KMS 的每秒请求数（RPS）限额限制。有关 AWS KMS 限额以及如何请求增加限额的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[限额](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)。  
当您启用默认加密时，您可能需要更新存储桶策略。有关更多信息，请参阅 [使用 SSE-KMS 加密进行跨账户操作](bucket-encryption.md#bucket-encryption-update-bucket-policy)。

1. 如果您选择**具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**，则在**存储桶密钥**下方将显示**已启用**。当您将目录存储桶配置为使用 SSE-S3 进行默认加密时，始终启用 S3 存储桶密钥。始终为目录存储桶中的 `GET` 和 `PUT` 操作启用 S3 存储桶密钥，并且不能禁用。当您通过 [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html)、[批量操作中的 Copy 操作](directory-buckets-objects-Batch-Ops.md)或 [import 任务](create-import-job.md)，将 SSE-KMS 加密的对象从通用存储桶复制到目录存储桶、从目录存储桶复制到通用存储桶，或在目录存储桶之间复制时，不支持 S3 存储桶密钥。在这种情况下，每次对 KMS 加密的对象发出复制请求时，Amazon S3 都会调用 AWS KMS。

   S3 存储桶密钥可通过减少从 Amazon S3 到 AWS KMS 的请求流量，降低加密成本。有关更多信息，请参阅 [使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本](bucket-key.md)。

1. 如果您选择了**具有 AWS Key Management Service 密钥的服务器端加密（SSE-KMS）**，则在 **AWS KMS 密钥**下，通过以下方式之一指定您的 AWS Key Management Service 密钥或创建新密钥。
   + 要从可用 KMS 密钥列表中进行选择，选择**从您的 AWS KMS keys中进行选择**，并从**可用的 AWS KMS keys**中选择您的 **KMS 密钥**。

     只有您的客户自主管理型密钥显示在此列表中。目录存储桶不支持 AWS 托管式密钥 (`aws/s3`)。有关客户自主管理型密钥的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[客户密钥和 AWS 密钥](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)。
   + 要输入 KMS 密钥 ARN 或别名，选择**输入 AWS KMS key ARN**，然后在 **AWS KMS key ARN** 中输入您的 KMS 密钥 ARN 或别名。
   + 要在 AWS KMS 控制台中创建新的客户自主管理型密钥，请选择**创建 KMS 密钥**。

     有关创建 AWS KMS key 的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[创建密钥](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)。
**重要**  
在存储桶的生命周期内，SSE-KMS 配置只能支持每个目录存储桶 1 个 [customer managed key](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。[https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) (`aws/s3`) 不受支持。此外，在为 SSE-KMS 指定客户自主管理型密钥后，无法覆盖存储桶的 SSE-KMS 配置的客户自主管理型密钥。  
可以通过以下方式，确定您为存储桶的 SSE-KMS 配置指定的客户自主管理型密钥：  
您发出 `HeadObject` API 操作请求以查找响应中 `x-amz-server-side-encryption-aws-kms-key-id` 的值。
要对数据使用新的客户自主管理型密钥，我们建议使用新的客户自主管理型密钥将现有对象复制到新的目录存储桶中。
您只能使用与存储桶所在相同的 AWS 区域中可用的 KMS 密钥。Amazon S3 控制台仅列出与存储桶位于同一区域中的前 100 个 KMS 密钥。要使用未列出的 KMS 密钥，您必须输入 KMS 密钥 ARN。如果您希望使用其他账户拥有的 KMS 密钥，则必须首先有权使用该密钥，然后必须输入相应的 KMS 密钥 ARN。有关 KMS 密钥的跨账户权限的更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[创建其他账户可以使用的 KMS 密钥](https://docs.aws.amazon.com//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。有关 SSE-KMS 的更多信息，请参阅[为目录存储桶中的新对象上传指定具有 AWS KMS 的服务器端加密（SSE-KMS）](s3-express-specifying-kms-encryption.md)。
在目录存储桶中使用 AWS KMS key进行服务器端加密时，您必须选择对称加密 KMS 密钥。Amazon S3 仅支持对称加密 KMS 密钥，而不支持非对称 KMS 密钥。有关更多信息，请参阅《AWS Key Management Service 开发人员指南》**中的[确定对称和非对称 KMS 密钥](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)。

   有关将 AWS KMS 与 Amazon S3 结合使用的更多信息，请参阅[在目录存储桶中使用具有 AWS KMS 密钥的服务器端加密（SSE-KMS）](s3-express-UsingKMSEncryption.md)。

1. 选择 **创建存储桶 **。创建存储桶后，您可以向存储桶中添加文件和文件夹。有关更多信息，请参阅 [使用目录桶中的对象](directory-buckets-objects.md)。

## 使用 AWS SDK
<a name="create-directory-bucket-sdks"></a>

------
#### [ SDK for Go ]

此示例说明如何使用 适用于 Go 的 AWS SDK 创建目录桶。

**Example**  

```
var bucket = "..."

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("usw2-az1"),
                Type: types.LocationTypeAvailabilityZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleAvailabilityZone,
                Type:           types.BucketTypeDirectory,
            },  
        },  
    })  
    var terr *types.BucketAlreadyOwnedByYou
    if errors.As(err, &terr) {
        fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message))
        fmt.Printf("noop...\n")
        return
    }   
    if err != nil {
        log.Fatal(err)
    }   

    fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location))
}
```

------
#### [ SDK for Java 2.x ]

此示例说明如何使用 AWS SDK for Java 2.x 创建目录桶。

**Example**  

```
public static void createBucket(S3Client s3Client, String bucketName) {

    //Bucket name format is {base-bucket-name}--{az-id}--x-s3
    //example: doc-example-bucket--usw2-az1--x-s3 is a valid name for a directory bucket created in
    //Region us-west-2, Availability Zone 2  

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.AVAILABILITY_ZONE)
                     .name("usw2-az1").build()) //this must match the Region and Availability Zone in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_AVAILABILITY_ZONE)
                    .build()).build();
    try {
    
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build();
             CreateBucketResponse response = s3Client.createBucket(bucketRequest);
             System.out.println(response);
    } 
    
    catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
         }
    }
```

------
#### [ 适用于 JavaScript 的 AWS SDK ]

此示例说明如何使用 适用于 JavaScript 的 AWS SDK 创建目录桶。

**Example**  

```
// file.mjs, run with Node.js v16 or higher
// To use with the preview build, place this in a folder 
// inside the preview build directory, such as /aws-sdk-js-v3/workspace/

import { S3 } from "@aws-sdk/client-s3";

const region = "us-east-1";
const zone = "use1-az4";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

const bucketName = `...--${suffix}`;

const createResponse = await s3.createBucket( 
    { Bucket: bucketName, 
      CreateBucketConfiguration: {Location: {Type: "AvailabilityZone", Name: zone},
      Bucket: { Type: "Directory", DataRedundancy: "SingleAvailabilityZone" }}
    } 
   );
```

------
#### [ 适用于 .NET 的 SDK ]

此示例说明如何使用 适用于 .NET 的 SDK 创建目录桶。

**Example**  

```
using (var amazonS3Client = new AmazonS3Client())
{
    var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest
    {

       BucketName = "DOC-EXAMPLE-BUCKET--usw2-az1--x-s3",
       PutBucketConfiguration = new PutBucketConfiguration
       {
         BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleAvailabilityZone, Type = BucketType.Directory },
         Location = new LocationInfo { Name = "usw2-az1", Type = LocationType.AvailabilityZone }
       }
     }).ConfigureAwait(false);
}
```

------
#### [ SDK for PHP ]

此示例说明如何使用 AWS SDK for PHP 创建目录桶。

**Example**  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([

    'region'      => 'us-east-1',
]);


$result = $s3Client->createBucket([
    'Bucket' => 'doc-example-bucket--use1-az4--x-s3',
    'CreateBucketConfiguration' => [
        'Location' => ['Name'=> 'use1-az4', 'Type'=> 'AvailabilityZone'],
        'Bucket' => ["DataRedundancy" => "SingleAvailabilityZone" ,"Type" => "Directory"]   ],
]);
```

------
#### [ SDK for Python ]

此示例说明如何使用 适用于 Python (Boto3) 的 AWS SDK 创建目录桶。

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def create_bucket(s3_client, bucket_name, availability_zone):
    '''
    Create a directory bucket in a specified Availability Zone

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to create; for example, 'doc-example-bucket--usw2-az1--x-s3'
    :param availability_zone: String; Availability Zone ID to create the bucket in, for example, 'usw2-az1'
    :return: True if bucket is created, else False
    '''

    try:
        bucket_config = {
                'Location': {
                    'Type': 'AvailabilityZone',
                    'Name': availability_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleAvailabilityZone'
                }
            }
        s3_client.create_bucket(
            Bucket = bucket_name,
            CreateBucketConfiguration = bucket_config
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'us-west-2'
    availability_zone = 'usw2-az1'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, availability_zone)
```

------
#### [ SDK for Ruby ]

此示例说明如何使用 适用于 Ruby 的 AWS SDK 创建目录桶。

**Example**  

```
s3 = Aws::S3::Client.new(region:'us-west-2')
s3.create_bucket(
  bucket: "bucket_base_name--az_id--x-s3",
  create_bucket_configuration: {
    location: { name: 'usw2-az1', type: 'AvailabilityZone' },
    bucket: { data_redundancy: 'SingleAvailabilityZone', type: 'Directory' }
  }
)
```

------

## 使用 AWS CLI
<a name="create-directory-bucket-cli"></a>

此示例说明如何使用 AWS CLI 创建目录桶。要使用该命令，请将*用户输入占位符* 替换为您自己的信息。

创建目录存储桶时，必须提供配置详细信息并使用以下命名约定：`bucket-base-name--zone-id--x-s3`

```
aws s3api create-bucket
--bucket bucket-base-name--zone-id--x-s3
--create-bucket-configuration 'Location={Type=AvailabilityZone,Name=usw2-az1},Bucket={DataRedundancy=SingleAvailabilityZone,Type=Directory}'
--region us-west-2
```

有关更多信息，请参阅 AWS Command Line Interface 中的 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)。

# 可用区中适用于目录存储桶的区域和可用区端点
<a name="endpoint-directory-buckets-AZ"></a>

要访问 S3 Express One Zone 中存储的对象和目录存储桶，您可以使用网关 VPC 端点。目录存储桶使用区域和可用区 API 端点。根据您使用的 Amazon S3 API 操作，需要区域端点或可用区端点。使用网关端点不会发生任何额外费用。

存储桶级（或控制面板）API 操作可通过区域端点使用，称为区域端点 API 操作。区域端点 API 操作的示例包括 `CreateBucket` 和 `DeleteBucket`。

 当您创建存储在 S3 Express One Zone 中的目录存储桶时，您可以选择存储桶所在的可用区。您可以使用可用区端点 API 操作来上传和管理目录存储桶中的对象。

对象级（或数据面板）API 操作可通过可用区端点使用，称为可用区端点 API 操作。可用区端点 API 操作的示例包括 `CreateSession` 和 `PutObject`。


| 区域名称 | 区域 | 可用区 ID | 区域端点 | 可用区端点 | 
| --- | --- | --- | --- | --- | 
|  美国东部（弗吉尼亚州北部）  |  `us-east-1`  |  `use1-az4` `use1-az5` `use1-az6`  |  `s3express-control.us-east-1.amazonaws.com` `s3express-control-dualstack.us-east-1.amazonaws.com `  |  `s3express-use1-az4.us-east-1.amazonaws.com` `s3express-use1-az4.dualstack.us-east-1.amazonaws.com` `s3express-use1-az5.us-east-1.amazonaws.com` `s3express-use1-az5.dualstack.us-east-1.amazonaws.com` `s3express-use1-az6.us-east-1.amazonaws.com` `s3express-use1-az6.dualstack.us-east-1.amazonaws.com`  | 
|  美国东部（俄亥俄州）  |  `us-east-2`  |  `use2-az1` `use2-az2`  |  `s3express-control.us-east-2.amazonaws.com` `s3express-control-dualstack.us-east-2.amazonaws.com`  |  `s3express-use2-az1.us-east-2.amazonaws.com` `s3express-use2-az1.dualstack.us-east-2.amazonaws.com` `s3express-use2-az2.us-east-2.amazonaws.com` `s3express-use2-az2.dualstack.us-east-2.amazonaws.com`  | 
|  美国西部（俄勒冈州）  |  `us-west-2`  |  `usw2-az1` `usw2-az3` `usw2-az4`  |  `s3express-control.us-west-2.amazonaws.com` `s3express-control-dualstack.us-west-2.amazonaws.com`  |  `s3express-usw2-az1.us-west-2.amazonaws.com` `s3express-usw2-az1.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az3.us-west-2.amazonaws.com` `s3express-usw2-az3.dualstack.us-west-2.amazonaws.com` `s3express-usw2-az4.us-west-2.amazonaws.com` `s3express-usw2-az4.dualstack.us-west-2.amazonaws.com`  | 
|  亚太地区（孟买）  |  `ap-south-1`  |  `aps1-az1` `aps1-az3`  |  `s3express-control.ap-south-1.amazonaws.com` `s3express-control-dualstack.ap-south-1.amazonaws.com`  |  `s3express-aps1-az1.ap-south-1.amazonaws.com` `s3express-aps1-az1.dualstack.ap-south-1.amazonaws.com` `s3express-aps1-az3.ap-south-1.amazonaws.com` `s3express-aps1-az3.dualstack.ap-south-1.amazonaws.com`  | 
|  亚太地区（东京）  |  `ap-northeast-1`  |  `apne1-az1` `apne1-az4`  |  `s3express-control.ap-northeast-1.amazonaws.com` `s3express-control-dualstack.ap-northeast-1.amazonaws.com`  |  `s3express-apne1-az1.ap-northeast-1.amazonaws.com` `s3express-apne1-az1.dualstack.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.ap-northeast-1.amazonaws.com` `s3express-apne1-az4.dualstack.ap-northeast-1.amazonaws.com`  | 
|  欧洲地区（爱尔兰）  |  `eu-west-1`  |  `euw1-az1` `euw1-az3`  |  `s3express-control.eu-west-1.amazonaws.com` `s3express-control-dualstack.eu-west-1.amazonaws.com`  |  `s3express-euw1-az1.eu-west-1.amazonaws.com` `s3express-euw1-az1.dualstack.eu-west-1.amazonaws.com` `s3express-euw1-az3.eu-west-1.amazonaws.com` `s3express-euw1-az3.dualstack.eu-west-1.amazonaws.com`  | 
|  欧洲地区（斯德哥尔摩）  |  `eu-north-1`  |  `eun1-az1` `eun1-az2` `eun1-az3`  |  `s3express-control.eu-north-1.amazonaws.com` `s3express-control-dualstack.eu-north-1.amazonaws.com`  |  `s3express-eun1-az1.eu-north-1.amazonaws.com` `s3express-eun1-az1.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az2.eu-north-1.amazonaws.com` `s3express-eun1-az2.dualstack.eu-north-1.amazonaws.com` `s3express-eun1-az3.eu-north-1.amazonaws.com` `s3express-eun1-az3.dualstack.eu-north-1.amazonaws.com`  | 

# 优化 S3 Express One Zone 性能
<a name="s3-express-performance"></a>

Amazon S3 Express One Zone 是高性能的单可用区（AZ）S3 存储类，专门用于为注重延迟的应用程序提供稳定的毫秒级数据访问。S3 Express One Zone 是第一种允许您选择将高性能对象存储和 AWS 计算资源（例如 Amazon Elastic Compute Cloud、Amazon Elastic Kubernetes Service 和 Amazon Elastic Container Service）联合托管在单个可用区内的 S3 存储类。将存储和计算资源联合托管在一起，可以优化计算性能和成本，并提高数据处理速度。

S3 Express One Zone 提供了与其他 S3 存储类相似的性能弹性，但首字节读取和写入请求延迟能够稳定地保持在毫秒级，比 S3 Standard 存储快 10 倍。S3 Express One Zone 采用了全新设计，可支持非常高聚合水平的突发吞吐量。S3 Express One Zone 存储类使用定制架构来优化性能，并通过将数据存储在高性能硬件中，提供稳定的低请求延迟。S3 Express One Zone 的对象协议进行了增强，用于简化身份验证和元数据开销。

为了进一步缩短延迟并支持每秒多达 200 万次读取和多达 200000 次写入，S3 Express One Zone 将数据存储在 Amazon S3 目录存储桶中。默认情况下，每个目录存储桶支持每秒多达 200000 次读取和多达 100000 次写入。如果工作负载要求高于默认 TPS 限制，则可以通过 [AWS Support](https://support.console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase) 来申请增加。

S3 Express One Zone 将提供数据访问速度达毫秒级的高性能专用硬件和软件，与可进行扩展以便每秒处理大量事务的目录存储桶相结合，使其成为非常适合请求密集型操作或注重性能的应用程序的 Amazon S3 存储类。

以下主题针对使用 S3 Express One Zone 存储类的应用程序，介绍了用于优化性能的最佳实践准则和设计模式。

**Topics**
+ [优化 S3 Express One Zone 性能的最佳实践](s3-express-optimizing-performance-design-patterns.md)

# 优化 S3 Express One Zone 性能的最佳实践
<a name="s3-express-optimizing-performance-design-patterns"></a>

构建从 Amazon S3 Express One Zone 上传和检索对象的应用程序时，请遵循最佳实践准则以优化性能。要使用 S3 Express One Zone 存储类，您必须创建 S3 目录存储桶。S3 Express One Zone 存储类不支持与 S3 通用存储桶一起使用。

有关其他所有 Amazon S3 存储类和 S3 通用存储桶的性能准则，请参阅[最佳实践设计模式：优化 Amazon S3 性能](optimizing-performance.md)。

要在大规模工作负载中使用 S3 Express One Zone 存储类和目录存储桶实现最佳性能和可扩展性，务必了解目录存储桶与通用存储桶的工作原理有何不同。然后，我们提供最佳实践，以使应用程序与目录存储桶的工作原理保持一致。

## 目录存储桶的工作原理
<a name="s3-express-how-directory-buckets-work"></a>

Amazon S3 Express One Zone 存储类对于每个目录存储桶可以支持高达每秒 2000000 个 GET 事务和 200000 个 PUT 事务（TPS）的工作负载。借助 S3 Express One Zone，数据存储在可用区内的 S3 目录存储桶中。目录存储桶中的对象可以在分层命名空间中访问，类似于文件系统，并与具有扁平命名空间的 S3 通用存储桶形成鲜明对比。与通用存储桶不同，目录存储桶将键分层组织到目录中，而不是前缀中。前缀是对象键名称开头的一串字符串。可以使用前缀来组织数据，并管理通用存储桶中的平面对象存储架构。有关更多信息，请参阅 [使用前缀组织对象](using-prefixes.md)。

在目录存储桶中，使用正斜杠 (`/`) 作为唯一支持的分隔符，在分层命名空间中组织对象。当您使用类似于 `dir1/dir2/file1.txt` 的密钥上传对象时，Amazon S3 会自动创建和管理目录 `dir1/` 和 `dir2/`。目录是在 `PutObject` 或 `CreateMultiPartUpload` 操作期间创建的，当这些目录在 `DeleteObject` 或 `AbortMultiPartUpload` 操作之后变为空时会被自动移除。目录中对象和子目录的数量没有上限。

在将对象上传到目录存储桶时创建的目录可以即时扩展，以减少出现 HTTP `503 (Slow Down)` 错误的可能性。通过这种自动扩展，您的应用程序可以根据需要并行处理目录内和跨目录的读取和写入请求。对于 S3 Express One Zone，各个目录旨在支持目录存储桶的最大请求速率。无需随机化密钥前缀即可实现最佳性能，因为系统会自动分配对象以实现均匀的负载分配，但因此，密钥不会按字典顺序存储在目录存储桶中。这与 S3 通用存储桶形成鲜明对比，在这类存储桶中，按字典顺序更接近的密钥更有可能共存于同一台服务器上。

有关目录存储桶操作和目录交互的示例的更多信息，请参阅[目录存储桶操作和目录交互示例](#s3-express-directory-bucket-examples)。

## 最佳实践
<a name="s3-express-best-practices-section"></a>

遵循最佳实践来优化目录存储桶性能，并协助工作负载随时间推移而扩展。

### 使用包含许多条目（对象或子目录）的目录
<a name="s3-express-best-practices-use-directories"></a>

默认情况下，目录存储桶可为所有工作负载提供高性能。为了进一步优化某些操作的性能，将更多条目（即对象或子目录）整合到目录中可以降低延迟和提高请求速率：
+ 突变 API 操作（例如 `PutObject`、`DeleteObject`、`CreateMultiPartUpload` 和 `AbortMultiPartUpload`）在使用包含数千个条目的更少、更密集的目录而不是使用大量较小的目录来实现时，可以实现最佳性能。
+ 当需要遍历更少的目录来填充结果页时，`ListObjectsV2` 操作的性能会更好。

#### 请勿在前缀中使用熵
<a name="s3-express-best-practices-dont-use-entropy"></a>

在 Amazon S3 操作中，熵是指前缀命名的随机性，它有助于在存储桶间均匀分配工作负载。但是，由于目录存储桶在内部管理负载分布，因此建议不要在前缀中使用熵来实现最佳性能。这是因为对于目录存储桶，熵由于不重复使用已经创建的目录而导致请求速度变慢。

诸如 `$HASH/directory/object` 之类的密钥模式最终可能会创建许多中间目录。在以下示例中，所有 `job-1` 都是不同的目录，因为它们的父目录不同。目录将是稀疏的，且突变和列表请求会变慢。在此示例中，有 12 个中间目录，它们都有一个条目。

```
s3://my-bucket/0cc175b9c0f1b6a831c399e269772661/job-1/file1
  
s3://my-bucket/92eb5ffee6ae2fec3ad71c777531578f/job-1/file2
  
s3://my-bucket/4a8a08f09d37b73795649038408b5f33/job-1/file3
  
s3://my-bucket/8277e0910d750195b448797616e091ad/job-1/file4
  
s3://my-bucket/e1671797c52e15f763380b45e841ec32/job-1/file5
  
s3://my-bucket/8fa14cdd754f91cc6554c9e71929cce7/job-1/file6
```

相反，为了获得更好的性能，我们可以移除 `$HASH` 组件，并支持 `job-1` 变为单个目录，从而提高目录的密度。在以下示例中，与前面的示例相比，具有 6 个条目的单个中间目录可以提高性能。

```
s3://my-bucket/job-1/file1
  
s3://my-bucket/job-1/file2
  
s3://my-bucket/job-1/file3
  
s3://my-bucket/job-1/file4
  
s3://my-bucket/job-1/file5
  
s3://my-bucket/job-1/file6
```

之所以会出现这种性能优势，是因为在最初创建对象键并且其键名称包含目录时，将自动为该对象创建该目录。后续对象上传到相同目录时不需要创建目录，这样可以减少将对象上传到现有目录的延迟。

#### 如果在 `ListObjectsV2` 调用期间不需要对对象进行逻辑分组，请使用分隔符 / 以外的其它分隔符来分隔键的各个部分
<a name="s3-express-best-practices-use-separator"></a>

由于 `/` 分隔符是专门针对目录存储桶处理的，因此应有意使用它。虽然目录存储桶不按字典顺序对对象进行排序，但目录中的对象在 `ListObjectsV2` 输出中仍会分组在一起。如果您不需要此功能，则可以将 `/` 替换为另一个字符作为分隔符，以避免创建中间目录。

例如，假设以下键采用 `YYYY/MM/DD/HH/` 前缀模式

```
s3://my-bucket/2024/04/00/01/file1
  
s3://my-bucket/2024/04/00/02/file2
  
s3://my-bucket/2024/04/00/03/file3
  
s3://my-bucket/2024/04/01/01/file4
  
s3://my-bucket/2024/04/01/02/file5
  
s3://my-bucket/2024/04/01/03/file6
```

如果您不需要在 `ListObjectsV2` 结果中按小时或天对对象进行分组，但需要按月对对象进行分组，那么以下键模式 `YYYY/MM/DD-HH-` 将显著减少目录数并提高 `ListObjectsV2` 操作的性能。

```
s3://my-bucket/2024/04/00-01-file1
  
s3://my-bucket/2024/04/00-01-file2
  
s3://my-bucket/2024/04/00-01-file3
  
s3://my-bucket/2024/04/01-02-file4
  
s3://my-bucket/2024/04/01-02-file5
  
s3://my-bucket/2024/04/01-02-file6
```

#### 尽可能使用分隔列表操作
<a name="s3-express-best-practices-use-delimited-list"></a>

不带 `delimiter` 的 `ListObjectsV2` 请求会对所有目录执行深度优先递归遍历。带有 `delimiter` 的 `ListObjectsV2` 请求仅检索由 `prefix` 参数指定的目录中的条目，从而减少了请求延迟并增加了每秒的聚合键数。对于目录存储桶，请尽可能使用分隔列表操作。分隔列表会减少访问目录的次数，从而增加每秒键数和减少请求延迟。

例如，对于目录存储桶中的以下目录和对象：

```
s3://my-bucket/2024/04/12-01-file1
  
s3://my-bucket/2024/04/12-01-file2
  
...
  
s3://my-bucket/2024/05/12-01-file1
  
s3://my-bucket/2024/05/12-01-file2
  
...
  
s3://my-bucket/2024/06/12-01-file1
  
s3://my-bucket/2024/06/12-01-file2
  
...
  
s3://my-bucket/2024/07/12-01-file1
  
s3://my-bucket/2024/07/12-01-file2
  
...
```

为了提高 `ListObjectsV2` 性能，如果应用程序的逻辑支持，则可使用分隔列表来列出子目录和对象。例如，您可以对分隔列表操作运行以下命令：

```
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/' --delimiter '/'
```

输出是子目录列表。

```
{
    "CommonPrefixes": [
        {
            "Prefix": "2024/04/"
        },
        {
            "Prefix": "2024/05/"
        },
        {
            "Prefix": "2024/06/"
        },
        {
            "Prefix": "2024/07/"
        }
    ]
}
```

要列出性能更好的每个子目录，您可以运行类似以下示例的命令：

命令:

```
aws s3api list-objects-v2 --bucket my-bucket --prefix '2024/04' --delimiter '/'
```

输出：

```
{
    "Contents": [
        {
            "Key": "2024/04/12-01-file1"
        },
        {
            "Key": "2024/04/12-01-file2"
        }
    ]
}
```

### 将 S3 Express One Zone 存储与您的 计算资源联合托管在一个位置
<a name="s3-express-best-practices-colocate"></a>

使用 S3 Express One Zone，每个目录存储桶均位于创建存储桶时选择的单个可用区中。首先，在计算工作负载或资源所在的可用区中，可以创建一个新的目录存储桶。然后就可以立即开始享受到延迟非常低的读取和写入。目录存储桶是一种 S3 存储桶类型，您可以在其中选择 AWS 区域中的可用区，以减少计算和存储之间的延迟。

如果您跨可用区访问目录存储桶，您可能会遇到延迟略有增加。为了优化性能，我们建议您尽可能从位于同一可用区的 Amazon Elastic Container Service、Amazon Elastic Kubernetes Service 和 Amazon Elastic Compute Cloud 实例访问目录存储桶。

### 使用并发连接对超过 1 MB 的对象实现高吞吐量
<a name="s3-express-best-practices-concurrent-connections"></a>

您可以将多个并行请求发送到目录存储桶，以便在不同的连接上分布请求，尽可能充分利用可用带宽，从而实现出色的性能。与通用存储桶类似，S3 Express One Zone 对与目录存储桶建立的连接数没有任何限制。在对同一目录进行大量并发写入操作时，这一目录可以横向自动扩展性能。

与目录存储桶的各个 TCP 连接对每秒可上传或下载的字节数有固定的上限。当对象变大时，请求时间将由字节流而不是事务处理主导。要使用多个连接来并行处理较大对象的上传或下载，您可以减少端到端延迟。如果使用 `Java 2.x` SDK，则应考虑使用 [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html)，它将利用性能改进（例如[分段上传 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html)和字节范围提取）来并行访问数据。

### 使用网关 VPC 端点
<a name="s3-express-best-practices-vpc-endpoints"></a>

网关端点可提供从 VPC 到目录存储桶的直接连接，而无需为 VPC 提供互联网网关或 NAT 设备。为了减少数据包在网络上花费的时间量，应使用目录存储桶的网关 VPC 端点来配置 VPC。有关更多信息，请参阅 [目录存储桶的联网](s3-express-networking.md)。

### 使用会话身份验证，并在会话令牌有效时重用会话令牌
<a name="s3-express-best-practices-session-auth"></a>

目录存储桶提供了一种会话令牌身份验证机制，以减少对性能敏感的 API 操作的延迟。您只需调用一次 `CreateSession` 即可获得会话令牌，该令牌在接下来的 5 分钟内对所有请求均有效。要在 API 调用中获得最低延迟，请务必获取会话令牌，并在该令牌的整个生命周期内重用该令牌，然后再刷新它。

如果您使用 AWS SDK，则 SDK 会自动处理会话令牌刷新，以避免在会话到期时服务中断。我们建议您使用 AWS SDK 来发起和管理对 `CreateSession` API 操作的请求。

有关 `CreateSession` 的更多信息，请参阅[使用 `CreateSession` 对可用区端点 API 操作进行授权](s3-express-create-session.md)。

### 使用基于 CRT 的客户端
<a name="s3-express-best-practices-crt"></a>

AWS 通用运行时（CRT）是一组用 C 语言编写的模块化、高性能和高效的库，旨在充当 AWS SDK 的基础。CRT 提供了改进的吞吐量、增强的连接管理和更快的启动时间。CRT 可通过除 Go 之外的所有 AWS SDK 获得。

有关如何为您使用的 SDK 配置 CRT 的更多信息，请参阅 [AWS Common Runtime (CRT) libraries](https://docs.aws.amazon.com/sdkref/latest/guide/common-runtime.html)、[Accelerate Amazon S3 throughput with the AWS Common Runtime](https://aws.amazon.com/blogs//storage/improving-amazon-s3-throughput-for-the-aws-cli-and-boto3-with-the-aws-common-runtime/)、[Introducing CRT-based S3 client and the S3 Transfer Manager in the AWS SDK for Java 2.x](https://aws.amazon.com/blogs//developer/introducing-crt-based-s3-client-and-the-s3-transfer-manager-in-the-aws-sdk-for-java-2-x/)、[Using S3CrtClient for Amazon S3 operations](https://docs.aws.amazon.com/sdk-for-cpp/v1/developer-guide/examples-s3-crt.html) 和 [Configure AWS CRT-based HTTP clients](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/http-configuration-crt.html)。

### 使用最新版本的 AWS SDK
<a name="s3-express-best-practices-latest-sdks"></a>

AWS SDK 为许多用于优化 Amazon S3 性能的建议准则提供内置的支持。这些 SDK 提供了更简单的 API，以便从应用程序内部利用 Amazon S3，并定期更新以遵循最新的最佳实践。例如，SDK 会在 HTTP `503` 错误之后自动重试请求，并处理慢速连接响应。

如果使用 `Java 2.x` SDK，则应考虑使用 [S3 Transfer Manager](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/transfer-manager.html)，它会自动水平扩展连接，以便在适当时使用字节范围请求实现每秒数千个请求。字节范围请求可以提高性能，因为您可以使用到 S3 的并行连接，从相同对象中提取不同的字节范围。这有助于您通过单一整个对象请求实现更高的聚合吞吐量。因此，务必使用最新版本的 AWS SDK，以获取最新的性能优化功能。

## 性能故障排除
<a name="s3-express-performance-troubleshooting"></a>

### 您是否要为延迟敏感型应用程序设置重试请求？
<a name="s3-express-performance-troubleshooting-retry"></a>

S3 Express One Zone 专为提供稳定的高性能而设计，无需额外调整。但是，设置更主动的超时值和重试次数可以进一步推动实现稳定的延迟和性能。AWS SDK 具有可配置的超时和重试值，您可以进行调整以符合特定应用程序的容限。

### 您是否要使用 AWS 通用运行时（CRT）库和最佳的 Amazon EC2 实例类型？
<a name="s3-express-performance-troubleshooting-crt-ec2"></a>

执行大量读取和写入操作的应用程序，相比不执行这些操作的应用程序会需要更多的内存或计算容量。在为具有高性能要求的工作负载启动 Amazon Elastic Compute Cloud（Amazon EC2）实例时，应选择具有您的应用程序需要的这些资源量的实例类型。S3 Express One Zone 高性能存储非常适合与更大、更新的实例类型搭配使用，这些实例类型具有更大的系统内存以及计算能力更强的 CPU 和 GPU，可以利用性能更高的存储。我们还建议使用启用了 CRT 的 AWS SDK 的最新版本，这样可以更好地加速并行读取和写入请求。

### 您是否要使用 AWS SDK 进行基于会话的身份验证？
<a name="s3-express-performance-troubleshooting-session-auth"></a>

借助 Amazon S3，在使用 HTTP REST API 请求时，您还可以遵循 AWS SDK 中相同的最佳实践，以此来优化性能。但是，对于 S3 Express One Zone 使用的基于会话的授权和身份验证机制，我们强烈建议您使用 AWS SDK 管理 `CreateSession` 及其托管会话令牌。AWS SDK 使用 `CreateSession` API 操作，自动代表您创建和刷新令牌。使用 `CreateSession` 可减少 AWS Identity and Access Management（IAM）授权各个请求的请求往返延迟。

## 目录存储桶操作和目录交互示例
<a name="s3-express-directory-bucket-examples"></a>

以下显示了三个有关目录存储桶工作原理的示例。

### 示例 1：对目录存储桶的 S3 `PutObject` 请求如何与目录交互
<a name="s3-express-directory-bucket-examples-put"></a>

1. 在空存储桶中执行操作 `PUT(<bucket>, "documents/reports/quarterly.txt")` 时，将创建存储桶根目录内的目录 `documents/`，创建 `documents/` 内的目录 `reports/`，并创建 `reports/` 内的对象 `quarterly.txt`。对于此操作，除了对象之外，还创建了两个目录。  
![\[该图显示对 documents/reports/quarterly.txt 执行 PUT 操作后的目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-foo-bar-baz.png)

1. 然后，当执行另一个操作 `PUT(<bucket>, "documents/logs/application.txt")` 时，目录 `documents/` 已经存在，`documents/` 中的目录 `logs/` 不存在并创建此目录，然后创建 `logs/` 中的对象 `application.txt`。对于此操作，除了对象之外，只创建了一个目录。  
![\[该图显示对 documents/logs/application.txt 执行 PUT 操作后的目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-foo-baz-quux.png)

1. 最后，当执行 `PUT(<bucket>, "documents/readme.txt")` 操作时，根目录中的目录 `documents/` 已经存在，并创建对象 `readme.txt`。对于此操作，未创建任何目录。  
![\[该图显示对 documents/readme.txt 执行 PUT 操作后的目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-foo-bar.png)

### 示例 2：对目录存储桶的 S3 `ListObjectsV2` 请求如何与目录交互
<a name="s3-express-directory-bucket-examples-list"></a>

对于未指定分隔符的 S3 `ListObjectsV2` 请求，将以深度优先的方式遍历存储桶。输出以一致的顺序返回。但是，尽管此顺序在请求之间保持不变，但顺序不是按字典顺序排列的。对于在上一个示例中创建的存储桶和目录：

1. 执行 `LIST(<bucket>)` 时，将进入目录 `documents/` 并开始遍历。

1. 进入 `logs/` 子目录并开始遍历。

1. 对象 `application.txt` 位于 `logs/` 中。

1. `logs/` 中没有更多条目。List 操作退出 `logs/` 并再次进入 `documents/`。

1. 继续遍历 `documents/` 目录并找到对象 `readme.txt`。

1. 继续遍历 `documents/` 目录，进入子目录 `reports/` 并开始遍历。

1. 对象 `quarterly.txt` 位于 `reports/` 中。

1. `reports/` 中没有更多条目。List 退出 `reports/` 并再次进入 `documents/`。

1. `documents/` 中没有更多条目，List 将返回。

在此示例中，`logs/` 的顺序排在 `readme.txt` 之前，`readme.txt` 的顺序排在 `reports/` 之前。

### 示例 3：对目录存储桶的 S3 `DeleteObject` 请求如何与目录交互
<a name="s3-express-directory-bucket-examples-delete"></a>

![\[该图显示了 DELETE 操作之前的初始目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-delete-before.png)


1. 在该同一个存储桶中，当执行操作 `DELETE(<bucket>, "documents/reports/quarterly.txt")` 时，将删除对象 `quarterly.txt`，同时将目录 `reports/` 留空而导致立即将其删除。`documents/` 目录不为空，因为该目录中同时具有目录 `logs/` 和对象 `readme.txt`，所以不删除它。对于此操作，仅删除了一个对象和一个目录。  
![\[该图显示对 documents/reports/quarterly.txt 执行 DELETE 操作后的目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-delete1.png)

1. 执行操作 `DELETE(<bucket>, "documents/readme.txt")` 时，将删除对象 `readme.txt`。`documents/` 仍然不为空，因为它包含目录 `logs/`，因此不删除它。对于此操作，未删除任何目录，而只删除该对象。  
![\[该图显示对 documents/readme.txt 执行 DELETE 操作后的目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-delete2.png)

1. 最后，当执行操作 `DELETE(<bucket>, "documents/logs/application.txt")` 时，将删除 `application.txt`，同时将 `logs/` 留空而导致立即将其删除。然后，这会将 `documents/` 留空而导致立即将其删除。对于此操作，删除两个目录和一个对象。存储桶现在为空。  
![\[该图显示对 documents/logs/application.txt 执行 DELETE 操作后的目录结构\]](http://docs.aws.amazon.com/zh_cn/AmazonS3/latest/userguide/images/directory-examples-delete3.png)

# 数据驻留工作负载
<a name="directory-bucket-data-residency"></a>

AWS 专用本地区域（专用本地区域）是一种完全由 AWS 管理、专为您或您的社区使用而构建、放置在您指定的位置或数据中心且有助于遵守监管要求的 AWS 基础设施。专用本地区域是一种 AWS Local Zones（即 Local Zones）服务。有关更多信息，请参阅 [AWS 专用本地区域](https://aws.amazon.com/dedicatedlocalzones/)。

在专用本地区域中，您可以创建 S3 目录存储桶来将数据存储在特定的数据边界中，这有助于支持数据驻留和隔离应用场景。专用本地区域中的目录存储桶可以支持 S3 Express One Zone 和 S3 One Zone-Infrequent Access（S3 One Zone-IA；Z-IA）存储类。目录存储桶目前在其它 [AWS Local Zones 站点](https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations/)不可用。

可以在专用本地区域中使用 AWS 管理控制台、REST API、AWS Command Line Interface（AWS CLI）和 AWS SDK。



有关在 Local Zones 中使用目录存储桶的更多信息，请参阅以下主题：

**Topics**
+ [Local Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)
+ [为本地区域启用账户](opt-in-directory-bucket-lz.md)
+ [来自 VPC 的私有连接](connectivity-lz-directory-buckets.md)
+ [在本地区域中创建目录存储桶](create-directory-bucket-LZ.md)
+ [对 Local Zones 中的目录存储桶进行身份验证和授权](iam-directory-bucket-LZ.md)

# Local Zones 中目录存储桶的概念
<a name="s3-lzs-for-directory-buckets"></a>

在本地区域中创建目录存储桶之前，您必须拥有要在其中创建存储桶的本地区域 ID。可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作查找所有本地区域信息。此 API 操作列出有关本地区域的信息，包括本地区域 ID、父区域名称、网络边界组和选择加入状态。获得本地区域 ID 并且您选择加入后，您可以在本地区域中创建目录存储桶。目录存储桶名称由您提供的基本名称和包含存储桶位置的可用区 ID 的后缀组成，后跟 `--x-s3`。

本地区域使用 Amazon 冗余且带宽非常高的私有网络连接到**父区域**。这使在本地区域中运行的应用程序可以快速、安全、无缝地访问父区域中 AWS 服务 的其余部分。**父可用区 ID** 是处理本地区域控制面板操作的可用区的 ID。**网络边界组**是 AWS 从中通告公有 IP 地址的唯一组。有关 Local Zones、父区域和父可用区 ID 的更多信息，请参阅《AWS Local Zones User Guide》**中的 [AWS Local Zones concepts](https://docs.aws.amazon.com/local-zones/latest/ug/concepts-local-zones.html)。

所有目录存储桶都使用 `s3express` 命名空间，该命名空间不同于通用存储桶的 `s3` 命名空间。对于目录存储桶，请求会被路由到**区域端点**或**可用区端点**。如果您使用 AWS 管理控制台、AWS CLI 或 AWS SDK，则会自动为您处理路由。

大多数存储桶级 API 操作（如 `CreateBucket` 和 `DeleteBucket`）路由到区域端点，称为区域端点 API 操作。区域端点的格式为 `s3express-control.ParentRegionCode.amazonaws.com`。所有对象级 API 操作（例如 `PutObject`）和两个存储桶级 API 操作（`CreateSession` 和 `HeadBucket`）都路由到可用区端点，称为可用区端点 API 操作。可用区端点的格式为 `s3express-LocalZoneID.ParentRegionCode.amazonaws.com`。有关按端点类型划分的 API 操作的完整列表，请参阅[目录存储桶 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations)。

要从虚拟私有云（VPC）中访问 Local Zones 中的目录存储桶，可以使用网关 VPC 端点。使用网关端点不会发生任何额外费用。要配置网关 VPC 端点来访问 Local Zones 中的目录存储桶和对象，请参阅 [来自 VPC 的私有连接](connectivity-lz-directory-buckets.md)。

# 为本地区域启用账户
<a name="opt-in-directory-bucket-lz"></a>

以下主题介绍了如何为专用本地区域启用账户。

对于 AWS 专用本地区域（专用本地区域）中的所有服务，包括 Amazon S3，管理员必须先启用您的 AWS 账户，然后您才能在专用本地区域中创建或访问任何资源。可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作来确认您的账户 ID 对本地区域的访问权限。

为了进一步保护您在 Amazon S3 中的数据，默认情况下，您只能访问自己创建的 S3 资源。Local Zones 中的存储桶默认启用了所有 S3 屏蔽公共访问权限设置，并且 S3 对象所有权设置为强制存储桶拥有者。无法修改这些设置。（可选）要将访问权限仅限于本地区域网络边界组内，您可以在 IAM 策略中使用条件键 `s3express:AllAccessRestrictedToLocalZoneGroup`。有关更多信息，请参阅 [对 Local Zones 中的目录存储桶进行身份验证和授权](iam-directory-bucket-LZ.md)。

# 来自 VPC 的私有连接
<a name="connectivity-lz-directory-buckets"></a>

为了减少数据包在网络上所花费的传输时间，请将带有网关端点的虚拟私有云（VPC）配置为访问可用区中的目录存储桶，同时将流量保持在 AWS 网络内而无需任何额外费用。

**配置网关 VPC 端点**

1. 打开 [Amazon VPC 控制台](https://console.aws.amazon.com/vpc/)。

1. 在导航窗格中，选择**端点**。

1. 选择 **创建端点**。

1. 为端点创建名称。

1. 对于 **Service category**（服务类别），选择 **AWS 服务**。

1. 对于**服务**，添加筛选条件 **Type=Gateway**，然后选择 **com.amazonaws.*region*.s3express** 旁边的选项按钮。

1. 对于 **VPC**，选择要在其中创建端点的 VPC。

1. 对于**路由表**，请选择 VPC 中要由端点使用的路由表。创建端点后，将在此步骤中选择的路由表中添加一条路径记录。

1. 对于**策略**，请选择**完整访问权限**以允许所有主体通过 VPC 端点对所有资源执行所有操作。否则，选择**自定义**以附加 VPC 端点策略，该策略控制主体通过 VPC 端点对资源执行操作的权限。

1. 对于 **IP address type**（IP 地址类型），可从以下选项中进行选择：
   +  **IPv4** – 将 IPv4 地址分配给端点网络接口。仅当所有选定子网都具有 IPv4 地址范围且服务接受 IPv4 请求时，才支持此选项。
   +  **IPv6** – 将 IPv6 地址分配给端点网络接口。仅当所有选定子网均为仅限 IPv6 的子网且服务接受 IPv6 请求时，才支持此选项。
   +  **双堆栈**：将 IPv4 和 IPv6 地址均分配给端点网络接口。仅当所有选定子网都具有 IPv4 和 IPv6 地址范围且服务接受 IPv4 和 IPv6 请求时，才支持此选项。

1. （可选）要添加标签，请选择**添加新标签**，然后输入标签键和标签值。

1. 选择**创建端点**。

有关网关 VPC 端点的更多信息，请参阅《AWS PrivateLink Guide》**中的 [Gateway endpoints](https://docs.aws.amazon.com/vpc/latest/privatelink/gateway-endpoints.html)。对于数据驻留应用场景，我们建议使用网关 VPC 端点仅从 VPC 访问存储桶。当访问权限限于 VPC 或 VPC 端点时，可以通过 AWS 管理控制台、REST API、AWS CLI 和 AWS SDK 访问对象。

**注意**  
要使用 AWS 管理控制台将访问权限限于 VPC 或 VPC 端点，必须使用 AWS 管理控制台私有访问权限。有关更多信息，请参阅《AWS 管理控制台 Guide》**中的 [AWS 管理控制台 Private Access](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/console-private-access.html)。

# 在本地区域中创建目录存储桶
<a name="create-directory-bucket-LZ"></a>

在专用本地区域中，您可以创建目录存储桶来存储和检索特定数据边界中的对象，以有助于满足数据驻留和数据隔离应用场景的要求。S3 目录存储桶是 Local Zones 中唯一支持的存储桶类型，并且包含名为 `LocalZone` 的存储桶位置类型。目录存储桶名称由您提供的基本名称以及包含存储桶位置的可用区 ID 和 `--x-s3` 的后缀组成。可以使用 [DescribeAvailabilityZones](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeAvailabilityZones.html) API 操作获取本地区域 ID 的列表。有关更多信息，请参阅 [目录存储桶命名规则](directory-bucket-naming-rules.md)。

**注意**  
对于 AWS 专用本地区域（专用本地区域）中的所有服务，包括 S3，管理员必须先启用您的 AWS 账户，然后您才能在专用本地区域中创建或访问任何资源。有关更多信息，请参阅 [为本地区域启用账户](opt-in-directory-bucket-lz.md)。
对于数据驻留要求，我们建议仅允许从网关 VPC 端点访问您的存储桶。有关更多信息，请参阅 [来自 VPC 的私有连接](connectivity-lz-directory-buckets.md)。
要将访问权限仅限于本地区域网络边界组内，您可以在 IAM 策略中使用条件键 `s3express:AllAccessRestrictedToLocalZoneGroup`。有关更多信息，请参阅 [对 Local Zones 中的目录存储桶进行身份验证和授权](iam-directory-bucket-LZ.md)。

下面介绍使用 AWS 管理控制台、AWS CLI 和 AWS SDK 在单个本地区域中创建目录存储桶的方法。

## 使用 S3 控制台
<a name="create-directory-bucket-lz-console"></a>

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在页面顶部的导航栏中，选择当前所显示 AWS 区域的名称。接下来，选择要在其中创建目录存储桶的本地区域的父区域。
**注意**  
有关父区域的更多信息，请参阅[Local Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)。

1. 在左侧导航窗格中，选择**存储桶**。

1. 选择**创建存储桶**。

   此时将打开**创建存储桶**页面。

1. 在**常规配置**下，查看将在其中创建存储桶的 AWS 区域。

1.  在**存储桶类型**下，请选择**目录**。
**注意**  
如果您选择的区域不支持目录存储桶，则存储桶类型默认为通用存储桶。要创建目录桶，您必须选择受支持的区域。有关支持目录存储桶的区域列表，请参阅[目录存储桶的区域和可用区端点](s3-express-Regions-and-Zones.md)。
在创建存储桶后，便无法更改存储桶类型。

1. 在**存储桶位置**下，选择要使用的本地区域。
**注意**  
创建存储桶后无法更改本地区域。

1. 在**存储桶位置**下，选中复选框以确认在本地区域中断的情况下，您的数据可能不可用或丢失。
**重要**  
尽管目录存储桶存储在单个 Local Zones 中的多个设备上，但目录存储桶不会跨 Local Zones 冗余存储数据。

1. 对于**存储桶名称**，请输入目录存储桶的名称。

   有关目录存储桶的命名规则的更多信息，请参阅[通用存储桶命名规则](bucketnamingrules.md)。后缀将自动添加到您使用控制台创建目录存储桶时提供的基本名称中。此后缀包括您选择的本地区域的可用区 ID。

   创建存储桶后，便无法更改其名称。
**重要**  
请勿在存储桶名称中包含敏感信息，如账号。存储桶名称会显示在指向存储桶中的对象的 URL 中。

1. 在**对象所有权**下，将自动启用**强制桶拥有者**设置，并禁用所有访问控制列表（ACL）。对于目录存储桶，ACL 已禁用且无法启用。

   在启用**强制存储桶拥有者**设置的情况下，存储桶拥有者会自动拥有并完全控制存储桶中的每个对象。ACL 不再影响对 S3 存储桶中数据的访问权限。存储桶专门使用策略来定义访问控制。Amazon S3 中的大多数现代使用案例不再需要使用 ACL。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

1. 在**此桶的屏蔽公共访问权限设置**下，目录桶的所有屏蔽公共访问权限设置已自动启用。无法修改目录桶的这些设置。有关阻止公共访问的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

1. 默认情况下，在**默认加密**下，目录存储桶使用**具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**来加密数据。还可以选择使用**具有 AWS Key Management Service 密钥的服务器端加密（SSE-KMS）**对目录存储桶中的数据进行加密。

1. 选择 **创建存储桶 **。

   创建存储桶后，您可以向存储桶中添加文件和文件夹。有关更多信息，请参阅 [使用目录桶中的对象](directory-buckets-objects.md)。

## 使用 AWS CLI
<a name="create-directory-bucket-lz-cli"></a>

此示例说明如何在本地区域中使用 AWS CLI 创建目录存储桶。要使用该命令，请将*用户输入占位符* 替换为您自己的信息。

创建目录存储桶时，必须提供配置详细信息并使用以下命名约定：`bucket-base-name--zone-id--x-s3`。

```
aws s3api create-bucket
--bucket bucket-base-name--zone-id--x-s3
--create-bucket-configuration 'Location={Type=LocalZone,Name=local-zone-id},Bucket={DataRedundancy=SingleLocalZone,Type=Directory}'
--region parent-region-code
```

有关本地区域 ID 和父区域代码的更多信息，请参阅[Local Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)。有关 AWS CLI 命令的更多信息，请参阅《AWS CLI Command Reference》**中的 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/create-bucket.html)。

## 使用 AWS SDK
<a name="create-directory-bucket-lz-sdks"></a>

------
#### [ SDK for Go ]

此示例说明如何在本地区域中使用适用于 Go 的 AWS SDK 创建目录存储桶。

**Example**  

```
var bucket = "bucket-base-name--zone-id--x-s3" // The full directory bucket name

func runCreateBucket(c *s3.Client) {
    resp, err := c.CreateBucket(context.Background(), &s3.CreateBucketInput{
        Bucket: &bucket,
        CreateBucketConfiguration: &types.CreateBucketConfiguration{
            Location: &types.LocationInfo{
                Name: aws.String("local-zone-id"),
                Type: types.LocationTypeLocalZone,
            },  
            Bucket: &types.BucketInfo{
                DataRedundancy: types.DataRedundancySingleLocalZone,
                Type:           types.BucketTypeDirectory,
            },  
        },  
    })  
    var terr *types.BucketAlreadyOwnedByYou
    if errors.As(err, &terr) {
        fmt.Printf("BucketAlreadyOwnedByYou: %s\n", aws.ToString(terr.Message))
        fmt.Printf("noop...\n") // No operation performed, just printing a message
        return
    }   
    if err != nil {
        log.Fatal(err)
    }   

    fmt.Printf("bucket created at %s\n", aws.ToString(resp.Location))
}
```

------
#### [ SDK for Java 2.x ]

此示例说明如何在本地区域中使用AWS SDK for Java 2.x 创建目录存储桶。

**Example**  

```
public static void createBucket(S3Client s3Client, String bucketName) {

    //Bucket name format is {base-bucket-name}--{local-zone-id}--x-s3
    //example: doc-example-bucket--local-zone-id--x-s3 is a valid name for a directory bucket created in a Local Zone.

    CreateBucketConfiguration bucketConfiguration = CreateBucketConfiguration.builder()
             .location(LocationInfo.builder()
                     .type(LocationType.LOCAL_ZONE)
                     .name("local-zone-id").build()) //this must match the Local Zone ID in your bucket name
             .bucket(BucketInfo.builder()
                    .type(BucketType.DIRECTORY)
                    .dataRedundancy(DataRedundancy.SINGLE_LOCAL_ZONE)
                    .build()).build();
    try {
    
             CreateBucketRequest bucketRequest = CreateBucketRequest.builder().bucket(bucketName).createBucketConfiguration(bucketConfiguration).build();
             CreateBucketResponse response = s3Client.createBucket(bucketRequest);
             System.out.println(response);
    } 
    
    catch (S3Exception e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
         }
    }
```

------
#### [ 适用于 JavaScript 的 AWS SDK ]

此示例说明如何在本地区域中使用适用于 JavaScript 的 AWS SDK 创建目录存储桶。

**Example**  

```
// file.mjs, run with Node.js v16 or higher
// To use with the preview build, place this in a folder 
// inside the preview build directory, such as /aws-sdk-js-v3/workspace/

import { S3 } from "@aws-sdk/client-s3";

const region = "parent-region-code";
const zone = "local-zone-id";
const suffix = `${zone}--x-s3`;

const s3 = new S3({ region });

const bucketName = `bucket-base-name--${suffix}`; // Full directory bucket name

const createResponse = await s3.createBucket( 
    { Bucket: bucketName, 
      CreateBucketConfiguration: {Location: {Type: "LocalZone", Name: "local-zone-id"},
      Bucket: { Type: "Directory", DataRedundancy: "SingleLocalZone" }}
    } 
   );
```

------
#### [ 适用于 .NET 的 SDK ]

此示例说明如何在本地区域中使用适用于 .NET 的 SDK 创建目录存储桶。

**Example**  

```
using (var amazonS3Client = new AmazonS3Client())
{
    var putBucketResponse = await amazonS3Client.PutBucketAsync(new PutBucketRequest
    {

       BucketName = "bucket-base-name--local-zone-id--x-s3",
       PutBucketConfiguration = new PutBucketConfiguration
       {
         BucketInfo = new BucketInfo { DataRedundancy = DataRedundancy.SingleLocalZone, Type = BucketType.Directory },
         Location = new LocationInfo { Name = "local-zone-id", Type = LocationType.LocalZone }
       }
     }).ConfigureAwait(false);
}
```

------
#### [ SDK for PHP ]

此示例说明如何在本地区域中使用AWS SDK for PHP 创建目录存储桶。

**Example**  

```
require 'vendor/autoload.php';

$s3Client = new S3Client([

    'region'      => 'parent-region-code',
]);


$result = $s3Client->createBucket([
    'Bucket' => 'bucket-base-name--local-zone-id--x-s3',
    'CreateBucketConfiguration' => [
        'Location' => ['Name'=> 'local-zone-id', 'Type'=> 'LocalZone'],
        'Bucket' => ["DataRedundancy" => "SingleLocalZone" ,"Type" => "Directory"]   ],
]);
```

------
#### [ SDK for Python ]

此示例说明如何在本地区域中使用适用于 Python (Boto3) 的 AWS SDK 创建目录存储桶。

**Example**  

```
import logging
import boto3
from botocore.exceptions import ClientError

def create_bucket(s3_client, bucket_name, local_zone):
    '''
    Create a directory bucket in a specified Local Zone

    :param s3_client: boto3 S3 client
    :param bucket_name: Bucket to create; for example, 'bucket-base-name--local-zone-id--x-s3'
    :param local_zone: String; Local Zone ID to create the bucket in
    :return: True if bucket is created, else False
    '''

    try:
        bucket_config = {
                'Location': {
                    'Type': 'LocalZone',
                    'Name': local_zone
                },
                'Bucket': {
                    'Type': 'Directory', 
                    'DataRedundancy': 'SingleLocalZone'
                }
            }
        s3_client.create_bucket(
            Bucket = bucket_name,
            CreateBucketConfiguration = bucket_config
        )
    except ClientError as e:
        logging.error(e)
        return False
    return True


if __name__ == '__main__':
    bucket_name = 'BUCKET_NAME'
    region = 'parent-region-code'
    local_zone = 'local-zone-id'
    s3_client = boto3.client('s3', region_name = region)
    create_bucket(s3_client, bucket_name, local_zone)
```

------
#### [ SDK for Ruby ]

此示例说明如何在本地区域中使用适用于 Ruby 的 AWS SDK 创建目录存储桶。

**Example**  

```
s3 = Aws::S3::Client.new(region:'parent-region-code')
s3.create_bucket(
  bucket: "bucket-base-name--local-zone-id--x-s3",
  create_bucket_configuration: {
    location: { name: 'local-zone-id', type: 'LocalZone' },
    bucket: { data_redundancy: 'SingleLocalZone', type: 'Directory' }
  }
)
```

------

# 对 Local Zones 中的目录存储桶进行身份验证和授权
<a name="iam-directory-bucket-LZ"></a>

Local Zones 中的目录存储桶同时支持 AWS Identity and Access Management（IAM）授权和基于会话的授权。有关目录存储桶的身份验证和授权的更多信息，请参阅[对请求进行身份验证和授权](s3-express-authenticating-authorizing.md)。

## 资源
<a name="directory-bucket-lz-resources"></a>

目录存储桶的 Amazon 资源名称（ARN）包含 `s3express` 命名空间、AWS 父区域、AWS 账户 ID 和目录存储桶名称（包括可用区 ID）。要访问目录存储桶并对其执行操作，您必须使用以下 ARN 格式：

```
arn:aws:s3express:region-code:account-id:bucket/bucket-base-name--ZoneID--x-s3
```

对于本地区域中的目录存储桶，可用区 ID 是本地区域的 ID。有关 Local Zones 中的目录存储桶的更多信息，请参阅[Local Zones 中目录存储桶的概念](s3-lzs-for-directory-buckets.md)。有关 ARN 的更多信息，请参阅《IAM 用户指南》**中的 [Amazon 资源名称（ARN）](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)。有关资源的更多信息，请参阅《IAM 用户指南》**中的 [IAM JSON 策略元素：Resource](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_resource.html)。

## Local Zones 中目录存储桶的条件键
<a name="condition-key-db-lz"></a>

在本地区域中，您可以在 IAM 策略中使用所有这些[条件键](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3express.html#amazons3express-policy-keys)。此外，要在本地区域网络边界组周围创建数据边界，您可以使用条件键 `s3express:AllAccessRestrictedToLocalZoneGroup` 来拒绝来自组外部的所有请求。

以下条件键可用于进一步细化 IAM 策略语句适用的条件。有关目录存储桶支持的 API 操作、策略操作和条件键的完整列表，请参阅[目录存储桶的策略操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html#s3-express-security-iam-actions)。

**注意**  
以下条件键仅适用于 Local Zones，在可用区和 AWS 区域中不受支持。


| API 操作 | 策略操作 | 说明 | 条件键 | 说明 | 类型 | 
| --- | --- | --- | --- | --- | --- | 
|  [可用区端点 API 操作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-APIs.html)  |  s3express:CreateSession  |  授予权限以创建会话令牌，该令牌用于授予对所有可用区端点 API 操作的访问权限，例如 `CreateSession`、`HeadBucket`、`CopyObject`、`PutObject` 和 `GetObject`。  |  s3express:AllAccessRestrictedToLocalZoneGroup  | 筛选对存储桶的所有访问权限，除非请求源自此条件键中提供的 AWS 本地区域网络边界组。 **值：**本地区域网络边界组值   |  String  | 

## 策略示例
<a name="directory-bucket-lz-policies"></a>

要将对象访问仅限于您定义的数据驻留边界内的请求（具体而言为 Local Zones 组，即一组以同一个 AWS 区域为父级的 Local Zones），您可以设置以下任何策略：
+ 服务控制策略（SCP）。有关 SCP 的信息，请参阅《AWS Organizations User Guide》**中的 [Service control policies (SCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ 适用于 IAM 角色的基于 IAM 身份的策略。
+ VPC 端点策略。有关 VPC 端点策略的更多信息，请参阅《AWS PrivateLink Guide》**中的 [Control access to VPC endpoints using endpoint policies](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html)。
+ S3 存储桶策略。

**注意**  
条件键 `s3express:AllAccessRestrictedToLocalZoneGroup` 不支持从本地环境进行访问。要支持从本地环境进行访问，您必须将源 IP 添加到策略中。有关更多信息，请参阅《IAM 用户指南》中的 [aws:SourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip)。

**Example – SCP 策略**  

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Access-to-specific-LocalZones-only",
            "Effect": "Deny",
            "Action": [
                "s3express:*",
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "s3express:AllAccessRestrictedToLocalZoneGroup": [
                        "local-zone-network-border-group-value"
                    ]
                }
            }
        }
    ]
}
```

**Example – 基于 IAM 身份的策略（附加到 IAM 角色）**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Deny",
        "Action": "s3express:CreateSession",
        "Resource": "*",
        "Condition": {
            "StringNotEqualsIfExists": {
                "s3express:AllAccessRestrictedToLocalZoneGroup": [
                    "local-zone-network-border-group-value"
                ]              
            }
        }
    }
}
```

**Example – VPC 端点策略**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {       
            "Sid": "Access-to-specific-LocalZones-only",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                 "StringNotEqualsIfExists": {
                     "s3express:AllAccessRestrictedToLocalZoneGroup": [
                         "local-zone-network-border-group-value"
                     ]
                 }   
            }
        }
    ]
}
```

**Example – 存储桶策略**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {       
            "Sid": "Access-to-specific-LocalZones-only",
            "Principal": "*",
            "Action": "s3express:CreateSession",
            "Effect": "Deny",
            "Resource": "*",
            "Condition": {
                 "StringNotEqualsIfExists": {
                     "s3express:AllAccessRestrictedToLocalZoneGroup": [
                         "local-zone-network-border-group-value"
                     ]
                 }   
            }
        }
    ]
}
```