

# 通用存储桶概述
通用存储桶概述

要向 Amazon S3 上传数据（照片、视频、文档等），您必须首先在其中一个 Amazon Web Services 区域 中创建 S3 存储桶。

Amazon S3 存储桶有几种类型。在创建存储桶之前，请确保选择最适合应用程序和性能要求的存储桶类型。有关各种存储桶类型以及每种类型的相应用例的更多信息，请参阅[桶](Welcome.md#BasicsBucket)。

以下各节提供了有关通用存储桶的更多信息，包括存储桶命名规则、配额和存储桶配置详细信息。有关与 Amazon S3 存储桶相关的限制和局限性的列表，请参阅[通用存储桶配额、限制和局限性](BucketRestrictions.md)。

**Topics**
+ [

## 通用存储桶概述
](#general-purpose-buckets-overview)
+ [

## 常见通用存储桶模式
](#bucket-patterns-overview)
+ [

## 权限
](#about-access-permissions-create-bucket)
+ [

## 管理对通用存储桶的公共访问权限
](#block-public-access-intro)
+ [

## 管理对通用存储桶的公共访问权限
](#bucket-tagging-intro)
+ [

## 通用存储桶配置选项
](#bucket-config-options-intro)
+ [

## 通用存储桶操作
](#bucket-operations-limits)
+ [

## 通用存储桶性能监控
](#bucket-monitoring-use-cases)

## 通用存储桶概述


每个对象都储存在一个存储桶中。例如，如果名为 `photos/puppy.jpg` 的对象存储在美国西部（俄勒冈州）区域的 `amzn-s3-demo-bucket` 通用存储桶中，则可使用 URL `https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/photos/puppy.jpg` 对该对象进行寻址。有关更多信息，请参阅[访问存储桶](access-bucket-intro.md)。
+ 只能从美国东部（弗吉尼亚州北部）查看和管理商业区域的通用存储桶配额。
+ 只能从中国（北京）区域查看和管理中国区域的通用存储桶配额。
+ 只能从 Amazon GovCloud（美国西部）查看和管理 Amazon GovCloud (US) 的通用存储桶配额。

对于实施，存储桶和对象是 Amazon 资源，而 Amazon S3 提供 API 供您管理资源。例如，您可以使用 Amazon S3 API 创建存储桶并上传对象。您还可以使用 Amazon S3 控制台执行这些操作。该控制台使用 Amazon S3 API 将请求发送到 Amazon S3。

本节介绍如何使用通用存储桶。有关使用对象的信息，请参阅 [Amazon S3 对象概述](UsingObjects.md)。

默认情况下，通用存储桶存在于全局命名空间中，这意味着每个存储桶名称在分区内的所有 Amazon Web Services 区域、所有 Amazon Web Services 账户间都必须是唯一的。分区是区域的分组。Amazon 目前有四个分区：`aws`（标准区域）、`aws-cn`（中国区域）、`aws-us-gov`（Amazon GovCloud (US)）以及 `aws-eusc`（欧洲主权云）。在共享全局命名空间中创建通用存储桶后，其他任何人均无法在分区内创建该存储桶名称。当存储桶拥有者删除其存储桶时，该存储桶名称将在全局命名空间中再次变为可用，供任何人重新创建。

或者，您可以在您的预留账户区域命名空间中创建存储桶，以便轻松地创建可预测的存储桶名称，同时确保您想要的名称将始终可供您使用。您的账户区域命名空间是全局命名空间的细分，只有您的账户才能使用。通过在您的账户区域命名空间中创建新的存储桶，您可以放心，您所需的存储桶名称将始终可供您使用。有关账户区域命名空间的更多信息，请参阅[通用存储桶的命名空间](gpbucketnamespaces.md)。

在创建通用存储桶之后，该存储桶的名称不能被同一分区中的另一个 Amazon Web Services 账户使用，直到删除该存储桶。不应依赖特定的存储桶命名约定来实现可用性或安全验证。有关存储桶命名指南，请参阅[通用存储桶命名规则](bucketnamingrules.md)。

Amazon S3 在指定的区域中创建存储桶。为减少延迟、最大限度地降低成本或满足法规要求，请选择地理上靠近您的任何 Amazon Web Services 区域。例如，如果您位于欧洲，您可能会发现在欧洲（爱尔兰）或欧洲（法兰克福）区域创建存储桶十分有利。有关 Amazon S3 区域的列表，请参阅《*Amazon 一般参考*》中的[区域和终端节点](https://docs.amazonaws.cn/general/latest/gr/s3.html)。

**注意**  
属于您在特定 Amazon Web Services 区域 中创建的存储桶的对象永远不会离开该区域，除非您明确将其传输到另一个区域。例如，在欧洲（爱尔兰）区域存储的对象将一直留在该区域。

## 常见通用存储桶模式


在 Amazon S3 上构建应用程序时，您可以使用唯一的通用存储桶来分隔不同的数据集或工作负载。根据您的应用场景，使用通用存储桶有不同的设计模式和最佳实践。有关更多信息，请参阅 [在 Amazon S3 上构建应用程序的常见通用存储桶模式按用途划分的存储桶模式](common-bucket-patterns.md)。

## 权限


可以使用Amazon Web Services 账户根用户凭证来创建通用存储桶并执行任何其它 Amazon S3 操作。但是，我们建议您不要使用 Amazon Web Services 账户 的根用户凭证发出请求，例如创建存储桶。而是创建一个 Amazon Identity and Access Management (IAM) 用户，并向该用户授予完全访问权限 (用户在默认情况下没有任何权限)。

这些用户称为*管理员*。您可以使用管理员用户凭证而不是您账户的根用户凭证来与 Amazon 交互和执行任务，例如创建存储桶，创建用户和授予他们权限。

有关更多信息，请参阅《Amazon 一般参考》**中的 [Amazon Web Services 账户根用户 凭证和 IAM 用户凭证](https://docs.amazonaws.cn/general/latest/gr/root-vs-iam.html)以及《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html)。

创建资源的 Amazon Web Services 账户 拥有该资源。例如，如果您在 Amazon Web Services 账户 中创建一个 IAM 用户并向该用户授予创建存储桶的权限，则该用户可以创建存储桶。但该用户不拥有存储桶；该存储桶属于用户所属的 Amazon Web Services 账户 所有。用户需要资源拥有者提供其他权限来执行任何其他存储桶操作。有关为您的 Amazon S3 资源管理权限的更多信息，请参阅[Amazon S3 的身份和访问管理](security-iam.md)。

## 管理对通用存储桶的公共访问权限


通过存储桶策略和/或访问控制列表（ACL）授予对通用存储桶和对象的公共访问权限。为了帮助您管理对 Amazon S3 资源的公有访问，Amazon S3 提供屏蔽公共访问权限的设置。Amazon S3 屏蔽公共访问权限设置可以覆盖 ACL 和存储桶策略，以便您可以对这些资源的公有访问实施统一限制。您可以将屏蔽公共访问权限设置应用于您的账户中的单个存储桶或所有存储桶。

为确保所有 Amazon S3 通用存储桶和对象都屏蔽了公共访问权限，在创建新的存储桶时，默认情况下会启用“屏蔽公共访问权限”的所有四个设置。我们建议也为您的账户启用“屏蔽公共访问权限”的所有四个设置。这些设置阻止所有当前和将来的存储桶的所有公有访问。

在应用这些设置之前，请确认您的应用程序在没有公有访问的情况下能够正常工作。如果您需要对存储桶或对象进行某种级别的公共访问，例如，要按照[使用 Amazon S3 托管静态网站](WebsiteHosting.md)中所述托管静态网站，则可以自定义各个设置以符合您的存储使用案例要求。有关更多信息，请参阅 [阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

 但是，我们建议将“屏蔽公共访问权限”保留为启用状态。如果要将所有四个“屏蔽公共访问权限”设置保持为启用状态并托管静态网站，则可以使用 Amazon CloudFront 来源访问控制（OAC）。Amazon CloudFront 提供了设置安全静态网站所需的功能。Amazon S3 静态网站仅支持 HTTP 端点。Amazon CloudFront 使用 Amazon S3 的持久存储，同时提供额外的安全标头，如 HTTPS。HTTPS 通过加密正常 HTTP 请求并防范常见的网络攻击来增强安全性。

有关更多信息，请参阅《Amazon CloudFront 开发人员指南》**中的[安全静态网站入门](https://docs.amazonaws.cn/AmazonCloudFront/latest/DeveloperGuide/getting-started-secure-static-website-cloudformation-template.html)。

**注意**  
如果您在列出通用存储桶及其公有访问权限设置时看到 `Error`，则您可能不具备所需的权限。确保您已将以下权限添加到您的用户或角色策略：  

```
s3:GetAccountPublicAccessBlock
s3:GetBucketPublicAccessBlock
s3:GetBucketPolicyStatus
s3:GetBucketLocation
s3:GetBucketAcl
s3:ListAccessPoints
s3:ListAllMyBuckets
```
在极少数情况下，请求也可能因 Amazon Web Services 区域中断而失败。

## 管理对通用存储桶的公共访问权限


您可以向 Amazon S3 存储桶添加标签，以便分类并跟踪 Amazon 成本或者进行访问控制。您可以使用标签作为成本分配标签，在 Amazon 账单与成本管理中跟踪存储成本。您还可以使用标签来实现基于属性的访问权限控制（ABAC），从而根据标签来扩展访问权限以及授予对 S3 存储桶的访问权限。

有关更多信息，请参阅 [将标签与 S3 通用存储桶结合使用](buckets-tagging.md)。

## 通用存储桶配置选项
通用存储桶配置

Amazon S3 支持各种供您用于配置通用存储桶的选项。例如，您可以配置存储桶用于网站托管、添加配置以管理存储桶中对象的生命周期以及配置存储桶以记录对存储桶的所有访问。Amazon S3 支持供您存储和管理存储桶配置信息的子资源。您可以使用 Amazon S3 API 创建和管理这些子资源。但是，还可以使用控制台或 Amazon SDK。

**注意**  
还有对象级配置。例如，可以通过特定于该对象的配置访问控制列表 (ACL) 来配置对象级权限。

这些称为子资源，因为它们存在于特定存储桶或对象的上下文中。下表列出使您可以管理特定于存储桶的配置的子资源。


| 子资源 | 描述 | 
| --- | --- | 
|   *cors*（跨源资源共享）   |   您可以配置存储桶以便允许跨源请求。 有关更多信息，请参阅 [使用跨源资源共享 (CORS)](cors.md)。  | 
|   *事件通知*   |  您可以使存储桶向您发送特定存储桶事件的通知。 有关更多信息，请参阅 [Amazon S3 事件通知](EventNotifications.md)。  | 
| 生命周期 |  您可以为存储桶中明确定义了生命周期的对象定义生命周期规则。例如，您可以定义一个规则以在创建一年之后存档对象，或在创建 10 年之后删除对象。 有关更多信息，请参阅 [管理对象的生命周期](object-lifecycle-mgmt.md)。  | 
|   *地点*   |   创建存储桶时，请指定需要 Amazon S3 在其中创建存储桶的 Amazon Web Services 区域。Amazon S3 将此信息存储在位置子资源中并提供 API 用于检索此信息。  | 
|   *日志记录*   |  日志记录使您可以跟踪针对存储桶的访问请求。每个访问日志记录都提供有关单个访问请求的详细信息，如请求者、存储桶名称、请求时间、请求操作、响应状态和错误代码（如果有）。访问日志信息可能在安全和访问审核方面十分有用。它还可以帮助您了解您的客户群并了解您的 Amazon S3 账单。  有关更多信息，请参阅 [使用服务器访问日志记录来记录请求](ServerLogs.md)。  | 
|   *对象锁定*   |  要使用 S3 对象锁定，您必须为存储桶启用它。您还可以选择配置将应用于存储桶中放置的新对象的默认保留模式和保留期限。 有关更多信息，请参阅 [使用对象锁定以锁定对象](object-lock.md)。  | 
|   *策略* 和 *ACL*（访问控制列表）   |  所有资源（如存储桶和对象）在默认情况下为私有。Amazon S3 支持存储桶策略和访问控制列表（ACL）选项，供您用于授予和管理存储桶级权限。Amazon S3 将权限信息存储在*策略* 和 *acl* 子资源中。 有关更多信息，请参阅 [Amazon S3 的身份和访问管理](security-iam.md)。  | 
|   *复制*   |  复制是在相同或跨不同 Amazon Web Services 区域 中的存储桶自动、异步地复制对象。有关更多信息，请参阅 [在区域内和跨区域复制对象](replication.md)。  | 
|   *requestPayment*   |  默认情况下，创建存储桶的 Amazon Web Services 账户（存储桶拥有者）支付从存储桶进行的下载。存储桶拥有者可以使用此子资源指定对请求下载的人员收取下载费用。Amazon S3 提供了一个 API，用于管理此子资源。 有关更多信息，请参阅 [使用申请方付款通用存储桶进行存储传输和使用](RequesterPaysBuckets.md)。  | 
|   *标记*   |  您可以向 Amazon S3 存储桶添加标签，以便分类并跟踪 Amazon 成本或者进行访问控制。您可以使用标签作为成本分配标签，在 Amazon 账单与成本管理中跟踪存储成本。您还可以使用标签来实现基于属性的访问权限控制（ABAC），从而根据标签来扩展访问权限以及授予对 S3 存储桶的访问权限。 有关更多信息，请参阅 [将标签与 S3 通用存储桶结合使用](buckets-tagging.md)。  | 
|   *传输加速*   |  Transfer Acceleration 可在您的客户端与 S3 存储桶之间实现快速、轻松、安全的远距离文件传输。Transfer Acceleration 利用 Amazon CloudFront 中的全球分布式边缘站点。 有关更多信息，请参阅 [使用 Amazon S3 Transfer Acceleration 配置快速、安全的文件传输](transfer-acceleration.md)。  | 
| 版本控制 |  版本控制可帮助恢复意外覆盖和删除。 我们建议将版本控制作为从错误删除或覆盖恢复对象的最佳实践。 有关更多信息，请参阅 [使用 S3 版本控制保留对象的多个版本](Versioning.md)。  | 
|  网站 |  您可以配置存储桶以便用于静态网站托管。Amazon S3 通过创建*网站* 子资源来存储此配置。 有关更多信息，请参阅 [使用 Amazon S3 托管静态网站](WebsiteHosting.md)。  | 

## 通用存储桶操作


Amazon S3 的高可用性工程专注于*获取*、*放置*、*列出*和*删除*操作。由于通用存储桶操作针对集中的全球资源空间进行，因此我们建议不要在应用程序的高可用性代码路径上创建、删除或配置存储桶。最好是在单独的初始化或设置不常运行的例程时创建、删除或配置存储桶。

## 通用存储桶性能监控


当您的关键应用程序和业务流程依赖于 Amazon 资源时，监控系统并获取其警报非常重要。[监控数据](https://docs.amazonaws.cn/AmazonS3/latest/userguide/monitoring-overview.html)有助于维护 Amazon S3 和 Amazon 解决方案的可靠性、可用性和性能。可以使用多项 Amazon 服务来收集和汇总 S3 存储桶的指标和日志。

根据您的用例，您可以选择最适合贵组织需求的 Amazon 服务，来调试问题、监控数据、优化存储成本或解决多点问题。例如：
+ **提高使用 S3 的应用程序的性能：**[设置 CloudWatch 警报](https://docs.amazonaws.cn/AmazonS3/latest/userguide/cloudwatch-monitoring.html)以监控存储数据、复制指标或请求指标。
+ **要规划存储空间使用、优化存储成本或了解整个组织中有多少存储空间：**[使用 Amazon S3 Storage Lens 存储统计管理工具](https://docs.amazonaws.cn/AmazonS3/latest/userguide/storage-lens-optimize-storage.html)。或者，您可以通过启用高级指标并使用详细的状态代码指标来获取成功或失败请求的计数，[使用 S3 Storage Lens 存储统计管理工具提高数据性能](https://docs.amazonaws.cn/AmazonS3/latest/userguide/storage-lens-detailed-status-code.html)。
+  **要统一查看运营状况：**[将 S3 Storage Lens 存储统计管理工具使用情况和活动指标发布](https://docs.amazonaws.cn/AmazonS3/latest/userguide/storage_lens_view_metrics_cloudwatch.html)到 [Amazon CloudWatch 控制面板](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。
**注意**  
Amazon CloudWatch 发布选项可用于升级到**高级指标和建议**的 S3 Storage Lens 存储统计管理工具。您可以在 S3 Storage Lens 存储统计管理工具中为新的或现有的仪表板配置启用 CloudWatch 发布选项。
+ **要获取用户、角色或 Amazon 服务所执行操作的记录：**设置 [Amazon CloudTrail logs](https://docs.amazonaws.cn/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)。还可以使用 Amazon CloudTrail 日志将 Amazon S3 的 API 调用作为事件进行查看。
+ **要接收有关 S3 存储桶中何时发生特定事件的通知：**[设置 Amazon S3 事件通知](https://docs.amazonaws.cn/AmazonS3/latest/userguide/EventNotifications.html)。
+ **要获取向 S3 存储桶发出的请求的详细记录：**[设置 S3 访问日志](https://docs.amazonaws.cn/AmazonS3/latest/userguide/ServerLogs.html)。

有关可用于监控数据的所有不同 Amazon 服务的列表，请参阅 [Amazon S3 中的日志记录和监控](https://docs.amazonaws.cn/AmazonS3/latest/userguide/monitoring-overview.html)。