

# Amazon S3 入门
<a name="GetStartedWithS3"></a>

您可以通过使用存储桶和对象来开始使用 Amazon S3。*存储桶*是对象的容器。*对象*指的是一个文件和描述该文件的任何元数据。

要在 Amazon S3 中存储对象，您需要创建存储桶，然后将该对象上传到存储桶。当对象位于存储桶时，您可以将其打开、下载并移动它。当您不再需要对象或存储桶时，可以清理您的资源。

使用 Amazon S3，您只需按实际用量付费。有关 Amazon S3 特征和定价的更多信息，请参阅 [Amazon S3](https://www.amazonaws.cn/s3)。如果您是 Amazon S3 的新客户，则可以免费开始使用 Amazon S3。有关更多信息，请参阅 [Amazon 免费套餐](https://www.amazonaws.cn/free)。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)和[使用目录存储桶](directory-buckets-overview.md)。

**视频：Amazon S3 入门**  

**先决条件**  
开始之前，请确认您已完成[设置 Amazon S3](#setting-up-s3)中的步骤。

## 设置 Amazon S3
<a name="setting-up-s3"></a>

在注册 Amazon 时，将在 Amazon 中为您的 Amazon Web Services 账户 自动注册所有服务，包括 Amazon S3。您只需为使用的服务付费。

使用 Amazon S3，您只需按实际用量付费。有关 Amazon S3 特征和定价的更多信息，请参阅 [Amazon S3](https://www.amazonaws.cn/s3)。如果您是 Amazon S3 的新客户，则可以免费开始使用 Amazon S3。有关更多信息，请参阅 [Amazon 免费套餐](https://www.amazonaws.cn/free)。

要设置 Amazon S3，请使用以下部分中的步骤。

注册 Amazon 并设置 Amazon S3 时，您可以选择在 Amazon Web Services 管理控制台 中更改显示语言。有关更多信息，请参阅《*Amazon Web Services 管理控制台 入门指南*》中的[更改 Amazon Web Services 管理控制台 的语言](https://docs.amazonaws.cn/awsconsolehelpdocs/latest/gsg/getting-started.html#change-language)。

**Topics**
+ [

### 注册 Amazon Web Services 账户
](#sign-up-for-aws)
+ [

### 保护 IAM 用户
](#secure-an-admin)

### 注册 Amazon Web Services 账户
<a name="sign-up-for-aws"></a>

如果您还没有，Amazon Web Services 账户请完成以下步骤来创建一个。

**注册 Amazon Web Services 账户**

1. 打开 [https://portal.aws.amazon.com/billing/signup](https://portal.amazonaws.cn/billing/signup)。

1. 按照屏幕上的说明操作。

   在注册时，将接到电话或收到短信，要求使用电话键盘输入一个验证码。

   当您注册 Amazon Web Services 账户 时，系统将会创建一个。*Amazon Web Services 账户根用户*根用户有权访问该账户中的所有 Amazon Web Services 服务 和资源。作为最佳安全实践，请为用户分配管理访问权限，并且只使用根用户来执行[需要根用户访问权限的任务](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

注册过程完成后，Amazon 会向您发送一封确认电子邮件。在任何时候，您都可以通过转至 [https://aws.amazon.com/](https://www.amazonaws.cn/) 并选择**我的账户**来查看当前的账户活动并管理您的账户。

### 保护 IAM 用户
<a name="secure-an-admin"></a>

注册 Amazon Web Services 账户 后，启用多重身份验证（MFA）保护您的管理用户。有关说明，请参阅《IAM 用户指南》**中的 [为 IAM 用户启用虚拟 MFA 设备（控制台）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html#enable-virt-mfa-for-iam-user)。

要授予其他用户访问您的 Amazon Web Services 账户资源的权限，请创建 IAM 用户。为了保护您的 IAM 用户，请启用 MFA 并仅向 IAM 用户授予执行任务所需的权限。

有关创建和保护 IAM 用户的更多信息，请参阅《IAM 用户指南》中的以下主题：**
+ [在您的 Amazon Web Services 账户中创建 IAM 用户](https://docs.amazonaws.cn//IAM/latest/UserGuide/id_users_create.html)
+ [适用于 Amazon 资源的访问权限管理](https://docs.amazonaws.cn/IAM/latest/UserGuide/access.html)
+ [基于 IAM 身份的策略示例](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_examples.html)

## 步骤 1：创建您的第一个 S3 存储桶
<a name="creating-bucket"></a>

注册 Amazon 后，您即可使用 Amazon Web Services 管理控制台 在 Amazon S3 中创建存储桶了。Amazon S3 中的每个对象都存储在*存储桶*中。必须先创建一个存储桶，然后才能在 Amazon S3 中存储数据。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)和[使用目录存储桶](directory-buckets-overview.md)。

**注意**  
您无需为创建存储桶付费。只有将对象存储到存储桶中以及从存储桶传入和传出对象才需要付费。仿照本指南中的示例操作产生的费用非常少（不到 1 USD）。有关存储费用的更多信息，请参阅 [Amazon S3 定价](https://www.amazonaws.cn/s3/pricing/)。

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

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

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

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

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

   存储桶名称必须满足以下要求：
   + 在分区中是唯一的。分区是区域的分组。Amazon 目前有三个分区：`aws`（商用区域）、`aws-cn`（中国区域）和 `aws-us-gov`（Amazon GovCloud (US) Regions）。
   + 长度必须介于 3 到 63 个字符之间。
   + 只能由小写字母、数字、句点 (`.`) 和连字符 (`-`) 组成。为了获得最佳兼容性，我们建议您避免在存储桶名称中使用句点 (`.`)，但仅用于静态网站托管的存储桶除外。
   + 以字母或数字开头和结尾。
   + 有关存储桶命名规则的完整列表，请参阅[通用存储桶命名规则](bucketnamingrules.md)。
**重要**  
创建存储桶后，便无法更改其名称。
请勿在存储桶名称中包含敏感信息。存储桶名称会显示在指向存储桶中的对象的 URL 中。

1. （可选）在**常规配置**下，您可以选择将现有存储桶的设置复制到新存储桶。如果您不想复制现有存储桶的设置，请跳到下一步。
**注意**  
此选项：  
在 Amazon CLI 中不可用，仅在 Amazon S3 控制台中可用
不会将存储桶策略从现有存储桶复制到新存储桶

    要复制现有存储桶的设置，请在**从现有存储桶复制设置**下，选择**选择存储桶**。将打开**选择存储桶**窗口。找到包含您要复制的设置的存储桶，然后选择**选择存储桶**。**选择存储桶**窗口关闭，而**创建存储桶**窗口重新打开。

   在**从现有存储桶复制设置**下，您现在将看到您选择的存储桶的名称。新存储桶的设置现在与您选择的存储桶的设置相匹配。如果要移除复制的设置，请选择**恢复默认设置**。在**创建存储桶**页面上查看其余的存储桶设置。如果您不想进行任何更改，可以跳到最后一步。

1. 在 **Object Ownership**（对象所有权）下方，要禁用或启用 ACL，并控制上传到存储桶中的对象的所有权，请选择以下设置之一：

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

     默认情况下，ACL 处于禁用状态。Amazon S3 中的大多数现代使用案例不再需要使用 ACL。我们建议您将 ACL 保持为禁用状态，除非有必须单独控制每个对象的访问权限的情况。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

**已启用 ACL**
   + **Bucket owner preferred**（首选存储桶拥有者）— 存储桶拥有者拥有并完全控制其他账户使用 `bucket-owner-full-control` 标准 ACL 写入存储桶的新对象。

     如果应用**首选存储桶拥有者**设置，以要求所有 Amazon S3 上传都包含 `bucket-owner-full-control` 标准 ACL，则可以[添加存储桶策略](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，该策略只允许使用此 ACL 上传对象。
   + **对象编写者**— 该 Amazon Web Services 账户上传对象拥有该对象，对其拥有完全控制权，并且可以通过 ACL 授予其他用户访问该对象的权限。
**注意**  
默认设置为**强制存储桶拥有者**。要应用默认设置并将 ACL 保持为禁用状态，只需要 `s3:CreateBucket` 权限。要启用 ACL，您必须具有 `s3:PutBucketOwnershipControls` 权限。

1. 在**此存储桶的屏蔽公共访问权限设置**中，请选择要应用于存储桶的屏蔽公共访问权限设置。

   默认情况下，启用所有四个“屏蔽公共访问权限”设置。我们建议您将所有设置保持为启用状态，除非您知道您需要为您的特定使用案例关闭其中一个或多个设置。有关屏蔽公共访问权限的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。
**注意**  
要启用所有“屏蔽公共访问权限”设置，只需要 `s3:CreateBucket` 权限。要关闭任何“屏蔽公共访问权限”设置，您必须拥有 `s3:PutBucketPublicAccessBlock` 权限。

1. （可选）默认情况下，**存储桶版本控制**处于禁用状态。版本控制是在相同的存储桶中保留对象的多个变量的方法。对于 存储桶中存储的每个对象，您可以使用版本控制功能来保留、检索和还原它们的各个版本。使用版本控制能够更加轻松地从用户意外操作和应用程序故障中恢复数据。有关版本控制的更多信息，请参阅[使用 S3 版本控制保留对象的多个版本](Versioning.md)。

   要在存储桶上启用版本控制，请选择**启用**。

1. （可选）在 **Tags**（标签）下，您可以选择向存储桶添加标签。利用 Amazon 成本分配功能，可以使用存储桶标签来对存储桶的使用计费添加注释。一个标签即为一个键值对，用于表示用户分配给存储桶的标记。有关更多信息，请参阅 [使用成本分配 S3 存储桶标签](CostAllocTagging.md)。

   要添加存储桶标签，请输入 **Key**（键），并（可选）输入 **Value**（值），然后选择 **Add Tag**（添加标签）。

1. 要配置**默认加密**，请在**加密类型**下，选择以下选项之一：
   + **具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）**
   + **具有 Amazon Key Management Service 密钥的服务器端加密（SSE-KMS）**
   + **具有 Amazon Key Management Service（Amazon KMS）密钥的双层服务器端加密（DSSE-KMS）**
**重要**  
如果您将 SSE-KMS 或 DSSE-KMS 选项用于默认加密配置，则您将受到 Amazon KMS 的每秒请求数（RPS）配额限制。有关 Amazon KMS 限额以及如何请求增加限额的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[限额](https://docs.amazonaws.cn/kms/latest/developerguide/limits.html)。

   通过将具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）用作基本加密配置级别，对存储桶和新对象进行加密。有关默认加密的更多信息，请参阅[为 Amazon S3 存储桶设置默认服务器端加密行为](bucket-encryption.md)。有关 SSE-S3 的更多信息，请参阅[使用具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）](UsingServerSideEncryption.md)。

   有关使用服务器端加密对数据进行加密的更多信息，请参阅[利用加密来保护数据](UsingEncryption.md)。

1. 如果您选择了**具有 Amazon Key Management Service 密钥的服务器端加密（SSE-KMS）**或**具有 Amazon Key Management Service（Amazon KMS）密钥的双层服务器端加密（DSSE-KMS）**，请执行以下操作：

   1. 在 **Amazon KMS 密钥**下，通过以下方式之一指定您的 KMS 密钥：
      + 要从可用的 KMS 密钥列表中进行选择，请选择**从您的 Amazon KMS keys 密钥中进行选择**，并从可用密钥的列表中选择您的 **KMS 密钥**。

        Amazon 托管式密钥 (`aws/s3`) 和您的客户自主管理型密钥都显示在此列表中。有关客户自主管理型密钥的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[客户密钥和 Amazon 密钥](https://docs.amazonaws.cn//kms/latest/developerguide/concepts.html#key-mgmt)。
      + 要输入 KMS 密钥 ARN，请选择**输入 Amazon KMS key ARN**，然后在显示的字段中输入您的 KMS 密钥 ARN。
      + 要在 Amazon KMS 控制台中创建新的客户自主管理型密钥，请选择**创建 KMS 密钥**。

        有关创建 Amazon KMS key 的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[创建密钥](https://docs.amazonaws.cn//kms/latest/developerguide/create-keys.html)。
**重要**  
您只能使用与存储桶所在相同的 Amazon Web Services 区域中可用的 KMS 密钥。Amazon S3 控制台仅列出与存储桶位于同一区域中的前 100 个 KMS 密钥。要使用未列出的 KMS 密钥，您必须输入 KMS 密钥 ARN。如果您希望使用由其它账户拥有的 KMS 密钥，则必须首先有权使用该密钥，然后必须输入相应的 KMS 密钥 ARN。有关 KMS 密钥的跨账户权限的更多信息，请参阅《Amazon Key Management Service Developer Guide》**中的 [Creating KMS keys that other accounts can use](https://docs.amazonaws.cn//kms/latest/developerguide/key-policy-modifying-external-accounts.html#cross-account-console)。有关 SSE-KMS 的更多信息，请参阅 [使用 Amazon KMS (SSE-KMS) 指定服务器端加密](specifying-kms-encryption.md)。有关 DSSE-KMS 的更多信息，请参阅[使用具有 Amazon KMS 密钥的双层服务器端加密（DSSE-KMS）](UsingDSSEncryption.md)。  
在 Amazon S3 中使用 Amazon KMS key 进行服务器端加密时，您必须选择对称加密 KMS 密钥。Amazon S3 仅支持对称加密 KMS 密钥，而不支持非对称 KMS 密钥。有关更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[确定对称和非对称 KMS 密钥](https://docs.amazonaws.cn//kms/latest/developerguide/find-symm-asymm.html)。

   1. 将存储桶配置为使用 SSE-KMS 进行默认加密时，还可以使用 S3 存储桶密钥。S3 存储桶密钥可通过减少从 Amazon S3 到 Amazon KMS 的请求流量，降低加密成本。有关更多信息，请参阅 [使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本](bucket-key.md)。DSSE-KMS 不支持 S3 存储桶密钥。

      默认情况下，S3 存储桶密钥在 Amazon S3 控制台中处于启用状态。我们建议将 S3 存储桶密钥保留为启用状态以降低成本。要为存储桶禁用 S3 存储桶密钥，请在**存储桶密钥**下选择**禁用**。

1. （可选）S3 对象锁定有助于保护新对象不被删除或覆盖。有关更多信息，请参阅 [使用对象锁定以锁定对象](object-lock.md)。如果要启用 S3 对象锁定，请执行以下操作：

   1. 选择**高级设置**。
**重要**  
启用对象锁定会自动为存储桶启用版本控制。启用并成功创建存储桶后，还必须在存储桶的**属性**选项卡上配置对象锁定默认保留设置和法定保留设置。

   1. 如果要启用对象锁定，请选择 **Enable**（启用），阅读出现的警告，并予以确认。
**注意**  
要创建启用了对象锁定的存储桶，您必须具有以下权限：`s3:CreateBucket`、`s3:PutBucketVersioning` 和 `s3:PutBucketObjectLockConfiguration`。

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

您已在 Amazon S3 中完成存储桶创建。

**下一步**  
要将对象添加到您的存储桶，请参阅[步骤 2：将对象上传到存储桶](#uploading-an-object-bucket)。

## 步骤 2：将对象上传到存储桶
<a name="uploading-an-object-bucket"></a>

在 Amazon S3 中创建存储桶后，您就可以将对象上传到存储桶了。对象可以是任何类型的文件：文本文件、图片、视频等等。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅 [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) 和 [使用目录存储桶](directory-buckets-overview.md)。

**将对象上传到存储桶**

1. 通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.amazonaws.cn/s3/)。

1. 在 **Buckets (存储桶)** 列表中，选择要将对象上传到的存储桶的名称。

1. 在存储桶的**对象**选项卡上，选择**上传**。

1. 在**文件和文件夹**下，选择**添加文件**。

1. 选择要上传的文件，然后选择**打开**。

1. 选择**上传**。

您已成功将对象上传到存储桶。

**后续步骤**  
要查看您的对象，请参阅 [步骤 3：下载对象](#accessing-an-object)。

## 步骤 3：下载对象
<a name="accessing-an-object"></a>

当您将对象上传到存储桶后，您可以查看有关对象的信息并将对象下载到本地计算机上。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅 [S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone) 和 [使用目录存储桶](directory-buckets-overview.md)。

### 使用 S3 控制台
<a name="download-objects-console"></a>

本部分介绍如何使用 Amazon S3 控制台从 S3 存储桶下载对象。

**注意**  
一次只能下载一个对象。
如果您使用 Amazon S3 控制台下载对象的键名以句点 (`.`) 结尾，则该句点将从下载对象的键名中删除。要保留所下载对象名称末尾的句点，您必须使用 Amazon Command Line Interface（Amazon CLI）、Amazon SDK 或 Amazon S3 REST API。

**从 S3 存储桶下载对象**

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

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

1. 在存储桶列表中，选择要从中下载对象的存储桶的名称。

    

1. 您可以使用以下任一方式从 S3 存储桶下载对象：
   + 选中对象旁边的复选框，然后选择**下载**。如果您要将对象下载到特定文件夹，请在**操作**菜单中，选择**下载为**。
   + 如果要下载对象的特定版本，请打开**显示版本**（位于搜索框旁边）。选中所需对象版本旁边的复选框，然后选择**下载**。如果您要将对象下载到特定文件夹，请在**操作**菜单中，选择**下载为**。

您已成功下载您的对象。

**下一步**  
要在 Amazon S3 中复制并粘贴对象，请参阅[步骤 4：将对象复制到文件夹](#copying-an-object)。

## 步骤 4：将对象复制到文件夹
<a name="copying-an-object"></a>

您已向存储桶添加一个对象并已下载该对象。现在，您可以创建一个文件夹，复制对象并将其粘贴到此文件夹中。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)和[使用目录存储桶](directory-buckets-overview.md)。

**将对象复制到文件夹中**

1. 在**存储桶**列表中，选择您的存储桶名称。

1. 选择**创建文件夹**并配置新文件夹：

   1. 输入文件夹名称（例如，`favorite-pics`）。

   1. 对于文件夹加密设置，选择**禁用**。

   1. 选择**保存**。

1. 导航到包含待复制对象的 Amazon S3 存储桶或文件夹。

1. 选中要复制的对象名称左侧的复选框。

1. 选择**操作**，然后从显示的选项列表中选择**复制**。

   或者，从右上角的选项中选择**复制**。

1. 选择目标文件夹：

   1. 选择**浏览 S3**。

   1. 选择文件夹名称左侧的选项按钮。

      要导航到文件夹并选择子文件夹作为目标，请选择文件夹名称。

   1. 选择**选择目标**。

   目标文件夹的路径显示在**目标**框中。在**目标**中，您可以依次输入目标路径，例如 s3://*bucket-name*/*folder-name*/。

1. 在右下角，选择**复制**。

   Amazon S3 会将对象复制到目标文件夹。

**后续步骤**  
要删除 Amazon S3 中的对象和存储桶，请参阅[步骤 5：删除对象和存储桶](#deleting-object-bucket)。

## 步骤 5：删除对象和存储桶
<a name="deleting-object-bucket"></a>

当您不再需要对象或存储桶时，我们建议您删除它们以防止发生进一步的费用。如果您将此入门演练作为练习完成，并且不打算使用您的存储桶或对象，我们建议您删除存储桶和对象，从而不再产生费用。

在删除存储桶之前，请清空存储桶或删除存储桶中的对象。删除对象和存储桶后，它们将不再可用。

如果要继续使用相同的存储桶名称，我们建议您删除对象或清空存储桶，但不要删除存储桶。删除存储桶后，该名称可供重复使用。但是，在您有机会重复使用此名称之前，其他 Amazon Web Services 账户可能会创建具有相同名称的存储桶。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)和[使用目录存储桶](directory-buckets-overview.md)。

**Topics**
+ [

### 删除对象
](#clean-up-delete-objects)
+ [

### 清空存储桶
](#clean-up-empty-bucket)
+ [

### 删除存储桶
](#clean-up-delete-bucket)

### 删除对象
<a name="clean-up-delete-objects"></a>

如果您希望选择要删除的对象而不清空存储桶中的所有对象，则可以删除单个对象。

1. 在**存储桶**列表中，选择要从中删除对象的存储桶的名称。

1. 选择您要删除的对象。

1. 从右上角的选项中选择**删除**。

1. 在**删除对象**页面上，键入 **delete** 以确认删除您的对象。

1. 选择**删除对象**。

### 清空存储桶
<a name="clean-up-empty-bucket"></a>

如果您计划删除存储桶，则必须首先清空存储桶，这会删除存储桶中的所有对象。

**清空存储桶**



1. 在**存储桶**列表中，选择要清空的存储桶，然后选择**清空**。

1. 要确认您要清空存储桶并删除其中的所有对象，请在** Empty bucket（清空存储桶）**中，键入 **permanently delete**。
**重要**  
无法撤消清空存储桶操作。当正在执行清空存储桶操作时添加到存储桶的对象将被删除。

1. 要清空存储桶并删除其中的所有对象，并选择 **Empty（清空）**。

   **Empty bucket: Status（清空存储桶：状态）**页面打开，您可以使用该页面来查看失败和成功的对象删除操作的摘要。

1. 要返回到存储桶列表，请选择**退出**。

### 删除存储桶
<a name="clean-up-delete-bucket"></a>

清空存储桶或从存储桶中删除所有对象后，您可以删除存储桶。

1. 要删除存储桶，请在**存储桶**列表中选择该存储桶。

1. 选择**删除**。

1. 要确认删除，请在 **Delete bucket（删除存储桶）**中，键入存储桶的名称。
**重要**  
无法撤消删除存储桶的操作。存储桶名称是唯一的。如果您删除存储桶，则其他 Amazon 用户可以使用该名称。如果您希望继续使用相同的存储桶名称，请不要删除该存储桶。相反，清空并保留存储桶。

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

## 后续步骤
<a name="getting-started-next-steps"></a>

在前面的示例中，您了解了如何执行一些基本的 Amazon S3 任务。

下列主题介绍了各种可促使您深入了解 Amazon S3，进而在应用程序中实施服务的方式。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅[S3 Express One Zone](directory-bucket-high-performance.md#s3-express-one-zone)和[使用目录存储桶](directory-buckets-overview.md)。

**Topics**
+ [

### 了解常见使用案例
](#s3-use-cases)
+ [

### 控制对存储桶和对象的访问
](#control-access-resources)
+ [

### 保护和监控存储
](#manage-monitor-storage)
+ [

### 用 Amazon S3 进行开发
](#develop-with-s3)
+ [

### 从教程中学习
](#s3-getting-started-tutorials-list)
+ [

### 探索培训和支持
](#explore-training-and-support)

### 了解常见使用案例
<a name="s3-use-cases"></a>

您可以使用 Amazon S3 支持您的具体使用案例。[Amazon 解决方案库](https://www.amazonaws.cn/solutions/)和 [Amazon 博客](https://www.amazonaws.cn/blogs/)提供了具体使用案例的信息和教程。以下是 Amazon S3 的一些常见使用案例：
+ **Backup and storage**（备份和存储）- 使用 Amazon S3 存储管理功能来管理成本、满足法规要求、减少延迟并保存多个不同的数据拷贝以满足合规性要求。
+ **应用程序托管** - 部署、安装和管理可靠、高度可扩展和低成本的 Web 应用程序。例如，可以配置您的 Amazon S3 存储桶来承载一个静态网站。有关更多信息，请参阅 [使用 Amazon S3 托管静态网站](WebsiteHosting.md)。
+ **媒体托管** - 构建托管视频、照片或音乐上载和下载的高可用性基础设施。
+ **软件传输** - 托管可供客户下载的软件应用程序。

### 控制对存储桶和对象的访问
<a name="control-access-resources"></a>

Amazon S3 提供了各种安全功能和工具。有关概述，请参阅[Amazon S3 中的访问控制](access-management.md)。

默认情况下，S3 存储桶和对象都是私有的。您只能访问您创建的 S3 资源。您可以使用以下功能授予支持具体使用案例的细粒度资源权限，或审核您的 Amazon S3 资源的权限。
+ [S3 阻止公有访问](https://docs.amazonaws.cn/AmazonS3/latest/userguide/access-control-block-public-access.html) - 阻止对 S3 存储桶和对象的公有访问。默认情况下，“屏蔽公共访问权限”设置在存储桶级别处于开启状态。
+ [Amazon Identity and Access Management（IAM）身份](https://docs.amazonaws.cn/AmazonS3/latest/userguide/security-iam.html) – 使用 IAM 或 Amazon IAM Identity Center 在 Amazon Web Services 账户 中创建 IAM 身份，以管理对 Amazon S3 资源的访问。例如，您可以将 IAM 用于 Amazon S3，以控制用户或用户组对您的 Amazon Web Services 账户拥有 Amazon S3 存储桶的访问类型。有关 IAM 身份和最佳实践的更多信息，请参阅《IAM 用户指南》**中的 [IAM 身份（用户、用户组和角色）](https://docs.amazonaws.cn/IAM/latest/UserGuide/id.html)。
+ [桶策略](https://docs.amazonaws.cn/AmazonS3/latest/userguide/bucket-policies.html) - 使用基于 IAM 的策略语言为 S3 桶及其中的对象配置基于资源的权限。
+ [访问控制列表（ACL）](https://docs.amazonaws.cn/AmazonS3/latest/userguide/acls.html)- 向授权用户授予单个存储桶和对象的读写权限。作为一般规则，我们建议您使用基于 S3 资源的策略（存储桶策略和接入点策略）或 IAM 用户策略进行访问控制，而不是 ACL。策略是一种简化、更灵活的访问控制选项。借助存储桶策略和接入点策略，您可以定义广泛适用于针对 Amazon S3 资源的所有请求的规则。有关何时使用 ACL 而不是基于资源的策略或 IAM 用户策略的特定情况的更多信息，请参阅[Amazon S3 的身份和访问管理](security-iam.md)。
+ [S3 对象所有权](https://docs.amazonaws.cn/AmazonS3/latest/userguide/about-object-ownership.html) – 获取存储桶中每个对象的所有权，从而简化对存储在 Amazon S3 中的数据的访问管理。S3 对象所有权是 Amazon S3 存储桶级别的设置，您可以使用该设置来禁用或启用 ACL。默认情况下，ACL 处于禁用状态。禁用 ACL 后，存储桶拥有者拥有存储桶中的所有对象，并使用访问管理策略来专门管理对数据的访问权限。
+ [适用于 S3 的 IAM Access Analyzer](https://docs.amazonaws.cn/AmazonS3/latest/userguide/access-analyzer.html) - 评估和监控您的 S3 存储桶访问策略，确保这些策略仅提供对 S3 资源的预期访问权限。

### 保护和监控存储
<a name="manage-monitor-storage"></a>
+ [保护存储](data-protection.md) - 在 Amazon S3 中创建存储桶和上传对象后，可以保护对象存储。例如，可以使用 S3 版本控制、S3 复制和多区域接入点失效转移控制来进行灾难恢复，使用 Amazon Backup 来备份数据，使用 S3 对象锁定来设置保留期，防止删除和覆盖，并满足合规性要求。
+ [监控存储](monitoring-overview.md) - 监控是保持 Amazon S3 和您的 Amazon 解决方案的可靠性、可用性和性能的重要方面。您可以监控存储活动和成本。我们推荐您从 Amazon 解决方案的所有方面收集监控数据，更轻松地调试出现的多点故障。

  还可以使用 Amazon S3 中的分析和见解来了解、分析和优化存储使用情况。例如，使用 [Amazon S3 Storage Lens 存储统计管理工具](storage_lens.md) 了解、分析和优化存储。S3 Storage Lens 存储统计管理工具提供了超过 29 个使用和活动指标以及交互式仪表板，聚合整个组织、特定账户、区域、存储桶或前缀的数据。使用[存储类分析](analytics-storage-class.md)来分析存储访问模式，决定何时需要将数据移动到更经济高效的存储类。要管理成本，可以使用 [S3 生命周期](object-lifecycle-mgmt.md)。

### 用 Amazon S3 进行开发
<a name="develop-with-s3"></a>

Amazon S3 是一项 REST 服务。您可以使用 REST API 或 Amazon SDK 库（打包了底层 Amazon S3 REST API 以简化编程任务），向 Amazon S3 发送请求。您也可以使用 Amazon Command Line Interface (Amazon CLI) 调用Amazon S3 API。有关更多信息，请参阅《Amazon S3 API 参考》**中的 [Making requests](https://docs.amazonaws.cn/AmazonS3/latest/API/MakingRequests.html)。

Amazon S3 REST API 是面向 Amazon S3 的 HTTP 接口。借助 REST API，您可以使用标准的 HTTP 请求创建、提取和删除存储桶和对象。要使用 REST API，您可以借助任何支持 HTTP 的工具包。只要对象是匿名可读的，您甚至可以使用浏览器来提取它们。有关更多信息，请参阅《Amazon S3 API 参考》**中的 [Developing with Amazon S3](https://docs.amazonaws.cn/AmazonS3/latest/API/developing-s3.html)。

我们提供以下资源来帮助您使用所选的语言创建应用程序：

**Amazon CLI**  
您可以使用 Amazon CLI 访问 Amazon S3 功能。要下载和配置 Amazon CLI，请参阅《Amazon S3 API 参考》**中的 [Developing with Amazon S3 using the Amazon CLI](https://docs.amazonaws.cn/AmazonS3/latest/API/setup-aws-cli.html)。

Amazon CLI 提供两个层级的命令来访问 Amazon S3：高级别（[s3](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3-commands.html)）命令和 API 级别（[s3api](https://docs.amazonaws.cn/cli/latest/userguide/cli-services-s3-apicommands.html) 和 `s3control`）命令。高级 S3 命令构成简化了常见任务的执行，如创建、操作和删除对象及存储桶。s3api 和 s3control 命令提供对所有 Amazon S3 API 操作的直接访问，您可以使用它们执行单凭高级别命令无法完成的高级操作。

有关 Amazon S3 的列表 Amazon CLI 命令，请参见 [s3](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/index.html)、[s3api](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/index.html) 和 [s3control](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/index.html)。

**Amazon SDK 和 Explorer**  
使用 Amazon S3 开发应用程序时，您可以使用 Amazon SDK。Amazon SDK 包装了底层 REST API，可以简化您的编程任务。还提供 Amazon Mobile SDK 和 Amplify JavaScript 库，用于使用 Amazon 构建互连移动和 Web 应用程序。

除了 Amazon SDK 外，Amazon Explorer 也适用于 Visual Studio 和 Eclipse for Java IDE。在此情况下，可以将 SDK 和 Explorer 捆绑在一起作为 Amazon 工具包。

有关更多信息，请参阅《Amazon S3 API 参考》**中的 [Developing with Amazon S3 using the Amazon SDKs](https://docs.amazonaws.cn/AmazonS3/latest/API/sdk-general-information-section.html)。

**示例代码和库**  
[Amazon 开发人员中心](https://www.amazonaws.cn/code/Amazon-S3)和 [Amazon 示例代码目录](https://docs.amazonaws.cn/code-samples/latest/catalog/welcome.html)会特别针对 Amazon S3 编写示例代码和库。您可以运用这些代码示例了解 Amazon S3 API 的实施。您也可以查看 [https://docs.amazonaws.cn/AmazonS3/latest/API/Welcome.html](https://docs.amazonaws.cn/AmazonS3/latest/API/Welcome.html)，了解 Amazon S3 API 操作的详细信息。

### 从教程中学习
<a name="s3-getting-started-tutorials-list"></a>

开始使用分步教程，了解有关 Amazon S3 的更多信息。这些教程适用于实验室类型环境，使用了虚构的公司名称、用户名称等。其目的在于提供一般性指导。在未进行仔细审核并进行改进以满足组织环境的独特需求的情况下，这些过程不适合在您的生产环境中直接使用。

#### 开始使用
<a name="getting-started-tutorials"></a>
+ [教程：使用 Amazon S3 存储和检索文件](https://www.amazonaws.cn/getting-started/hands-on/backup-files-to-amazon-s3/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：开始使用 S3 Intelligent-Tiering](https://www.amazonaws.cn/getting-started/hands-on/getting-started-using-amazon-s3-intelligent-tiering/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：开始使用 S3 Glacier 存储类别](https://www.amazonaws.cn/getting-started/hands-on/getting-started-using-amazon-s3-glacier-storage-classes/?ref=docs_gateway/amazons3/tutorials.html)

#### 优化存储成本
<a name="storage-costs-tutorials"></a>
+ [教程：开始使用 S3 Intelligent-Tiering](https://www.amazonaws.cn/getting-started/hands-on/getting-started-using-amazon-s3-intelligent-tiering/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：开始使用 S3 Glacier; 存储类别](https://www.amazonaws.cn/getting-started/hands-on/getting-started-using-amazon-s3-glacier-storage-classes/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：使用 S3 Storage Lens 存储统计管理工具优化成本和了解使用情况](https://www.amazonaws.cn/getting-started/hands-on/amazon-s3-storage-lens/?ref=docs_gateway/amazons3/tutorials.html)

#### 管理存储
<a name="storage-management-tutorials"></a>
+ [教程：Amazon S3 多区域接入点入门](https://www.amazonaws.cn/getting-started/hands-on/getting-started-with-amazon-s3-multi-region-access-points/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：使用 S3 批量复制来复制 Amazon S3 存储桶中的现有对象](https://www.amazonaws.cn/getting-started/hands-on/replicate-existing-objects-with-amazon-s3-batch-replication/?ref=docs_gateway/amazons3/tutorials.html)

#### 托管视频和网站
<a name="host-web-video-tutorials"></a>
+ [教程：使用 Amazon S3、Amazon CloudFront 和 Amazon Route 53 托管点播流视频](tutorial-s3-cloudfront-route53-video-streaming.md)
+ [教程：在 Amazon S3 上配置静态网站](HostingWebsiteOnS3Setup.md)
+ [教程：使用注册到 Route 53 的自定义域配置静态网站](website-hosting-custom-domain-walkthrough.md)

#### 处理数据
<a name="data-processing-tutorials"></a>
+ [教程：使用 S3 对象 Lambda 转换应用程序的数据](tutorial-s3-object-lambda-uppercase.md)
+ [教程：使用 S3 对象 Lambda 和 Amazon Comprehend 检测和修订 PII 数据](tutorial-s3-object-lambda-redact-pii.md)
+ [教程：使用 S3 对象 Lambda 在检索图像时对其动态加水印](https://www.amazonaws.cn/getting-started/hands-on/amazon-s3-object-lambda-to-dynamically-watermark-images/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：使用 S3 批量操作对视频进行批量转码](tutorial-s3-batchops-lambda-mediaconvert-video.md)

#### 保护数据
<a name="protect-data-tutorials"></a>
+ [教程：使用额外的校验和检查 Amazon S3 中数据的完整性](https://www.amazonaws.cn/getting-started/hands-on/amazon-s3-with-additional-checksums/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：使用 S3 复制在 Amazon Web Services 区域内和区域之间复制数据](https://www.amazonaws.cn/getting-started/hands-on/replicate-data-using-amazon-s3-replication/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：使用 S3 版本控制、S3 对象锁定和 S3 复制保护 Amazon S3 上的数据免遭意外删除或应用程序错误](https://www.amazonaws.cn/getting-started/hands-on/protect-data-on-amazon-s3/?ref=docs_gateway/amazons3/tutorials.html)
+ [教程：使用 S3 批量复制来复制 Amazon S3 存储桶中的现有对象](https://www.amazonaws.cn/getting-started/hands-on/replicate-existing-objects-with-amazon-s3-batch-replication/?ref=docs_gateway/amazons3/tutorials.html)

### 探索培训和支持
<a name="explore-training-and-support"></a>

您可以向 Amazon 专家学习，提高您的技能并获得专家协助，实现您的目标。
+ **培训** - 培训资源提供了学习 Amazon S3 的实践方法。有关更多信息，请参阅 [Amazon 培训和认证](https://www.aws.training)和 [Amazon 线上技术讲座](https://www.amazonaws.cn/events/online-tech-talks)。
+ **论坛** - 您可以在论坛中查看帖子，了解使用 Amazon S3 的优势和局限。您也可以发布问题。有关更多信息，请参阅[论坛](https://forums.aws.csdn.net/index.jspa)。
+ **技术支持** - 如果有其他问题，请联系[技术支持](https://www.amazonaws.cn/contact-us)。

# 使用 Amazon CLI 的 Amazon S3 入门
<a name="GettingStartedS3CLI"></a>

您可以通过使用 Amazon Command Line Interface（Amazon CLI）来处理通用存储桶和对象，从而开始使用 Amazon S3。存储桶是对象的容器。对象指的是一个文件和描述该文件的任何元数据。

要在 Amazon S3 中存储对象，您需要创建存储桶，然后将该对象上传到存储桶。当对象位于存储桶时，您可以将其打开、下载并移动它。当您不再需要对象或存储桶时，可以清理您的资源。

使用 Amazon S3，您只需按实际用量付费。有关 Amazon S3 特征和定价的更多信息，请参阅 [Amazon S3](https://www.amazonaws.cn/s3/)。如果您是 Amazon S3 的新客户，则可以免费开始使用 Amazon S3。有关更多信息，请参阅 [Amazon 免费套餐](https://www.amazonaws.cn/free/)。

**注意**  
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息，请参阅 [教程：开始使用 S3 Express One Zone](s3-express-getting-started.md) 和[使用目录存储桶](directory-buckets-overview.md)。

## 设置
<a name="GettingStartedS3CLI.setting-up"></a>

在开始将 Amazon CLI 与 Amazon S3 结合使用之前，请确保您已经：
+ 注册了 Amazon 账户。有关说明，请参阅[设置 Amazon S3](GetStartedWithS3.md#setting-up-s3)。
+ 创建了具有 `s3:*` 权限的用户。有关说明，请参阅[设置 Amazon S3](GetStartedWithS3.md#setting-up-s3)。
+ 安装并配置了 Amazon CLI。有关说明，请参阅 *Amazon Command Line Interface 用户指南*中的[安装或更新最新版本的 Amazon CLI](https://docs.amazonaws.cn/cli/latest/userguide/getting-started-install.html)。

要验证是否正确地配置了 Amazon CLI，请运行以下命令：

```
aws sts get-caller-identity
```

有关更多信息，请参阅《Amazon CLI Command Reference》**中的 [get-caller-identity](https://docs.amazonaws.cn/cli/latest/reference/sts/get-caller-identity.html)。

如果正确安装和配置了 Amazon CLI，此命令将显示可用 Amazon S3 命令的列表。

## 步骤 1：创建第一个 Amazon S3 存储桶
<a name="GettingStartedS3CLI.step1"></a>

设置 Amazon CLI 后，您就可以在 Amazon S3 中创建存储桶了。Amazon S3 中的每个对象都存储在存储桶中。必须先创建一个存储桶，然后才能在 Amazon S3 中存储数据。

**注意**  
您无需为创建存储桶付费。只有将对象存储到存储桶中以及从存储桶传入和传出对象才需要付费。仿照本指南中的示例操作产生的费用非常少（不到 1 USD）。有关存储费用的更多信息，请参阅 [Amazon S3 定价](https://www.amazonaws.cn/s3/pricing/)。

**创建存储桶**

1. 使用 `s3api create-bucket` 命令创建存储桶。将 `amzn-s3-demo-bucket` 替换为唯一的存储桶名称，并将 `us-east-1` 替换为您所需的区域：

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-east-1
   ```

   对于 us-east-1 以外的区域，您需要指定位置限制：

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-west-2 --create-bucket-configuration LocationConstraint=us-west-2
   ```
**注意**  
存储桶创建后，便无法再更改其区域。
要最大程度地减少延迟和成本以及满足法规要求，请选择一个靠近您的区域。在某一区域存储的对象将一直留在该区域，除非您特意将其转移到其他区域。有关 Amazon S3 Amazon 区域的列表，请参阅《Amazon Web Services 一般参考》**中的 [Amazon 服务端点](https://docs.amazonaws.cn/general/latest/gr/rande.html#s3_region)。
存储桶名称必须满足以下要求：  
在分区中是唯一的。分区是区域的分组。Amazon 目前有三个分区：`aws`（商用区域）、`aws-cn`（中国区域）和 `aws-us-gov`（Amazon GovCloud (US) 区域）。
长度必须介于 3 到 63 个字符之间。
只能由小写字母、数字、句点（.）和连字符（-）组成。为了获得最佳兼容性，我们建议您避免在存储桶名称中使用句点（.），但仅用于静态网站托管的存储桶除外。
以字母或数字开头和结尾。
创建存储桶后，便无法更改其名称。
请勿在存储桶名称中包含敏感信息。存储桶名称会显示在指向存储桶中的对象的 URL 中。

1. 通过列出所有存储桶来验证是否创建了您的存储桶：

   ```
   aws s3 ls
   ```

1. 对于[对象所有权](about-object-ownership.md)，您可以禁用或启用 ACL，并控制上传到存储桶的对象的所有权。

   **已禁用 ACL**

   要设置**强制存储桶拥有者**（默认）：ACL 已禁用，存储桶拥有者自动拥有并完全控制通用存储桶中的每个对象：

   ```
   aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerEnforced}]"
   ```
**注意**  
默认情况下，ACL 处于禁用状态。Amazon S3 中的大多数现代使用案例不再需要使用 ACL。我们建议您将 ACL 保持为禁用状态，除非有必须单独控制每个对象的访问权限的情况。有关更多信息，请参阅 [为您的存储桶控制对象所有权和禁用 ACL。](about-object-ownership.md)。

   **已启用 ACL**
   + 要设置**存储桶拥有者优先**：存储桶拥有者拥有并完全控制其它账户使用 `bucket-owner-full-control` 标准 ACL 写入存储桶的新对象：

     ```
     aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"
     ```

     如果您应用**存储桶拥有者优先**设置并希望要求所有 Amazon S3 上传都包含 `bucket-owner-full-control` 标准 ACL，则可以[要求 Amazon S3 `PUT` 操作使用存储桶拥有者完全控制的标准 ACL（首选存储桶拥有者）](ensure-object-ownership.md#ensure-object-ownership-bucket-policy)，该策略只支持使用此 ACL 上传对象。
   + 要设置**对象编写者**：上传对象的 Amazon 账户拥有该对象，对其拥有完全控制权，并且可以通过 ACL 授予其他用户访问该对象的权限：

     ```
     aws s3api put-bucket-ownership-controls --bucket amzn-s3-demo-bucket --ownership-controls="Rules=[{ObjectOwnership=ObjectWriter}]"
     ```
**注意**  
默认设置为**强制存储桶拥有者**。要应用默认设置并将 ACL 保持为禁用状态，只需要 `s3:CreateBucket` 权限。要启用 ACL，您必须具有 `s3:PutBucketOwnershipControls` 权限。

   检查存储桶的当前对象所有权设置：

   ```
   aws s3api get-bucket-ownership-controls --bucket amzn-s3-demo-bucket
   ```

1. 验证是否已启用**屏蔽公共访问权限**（默认情况下，对于新存储桶启用此设置）：

   ```
   aws s3api get-public-access-block --bucket amzn-s3-demo-bucket
   ```

   默认情况下，为新的存储桶启用所有四个**屏蔽公共访问权限**设置。我们建议您将所有设置保持为启用状态，除非您知道您需要为您的特定使用案例关闭其中一个或多个设置。有关屏蔽公共访问权限的更多信息，请参阅[阻止对您的 Amazon S3 存储的公有访问](access-control-block-public-access.md)。

   如果您需要启用**屏蔽公共访问权限**，请使用以下命令：

   ```
   aws s3api put-public-access-block --bucket amzn-s3-demo-bucket --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"
   ```
**注意**  
要启用所有“屏蔽公共访问权限”设置，只需要 `s3:CreateBucket` 权限。要关闭任何“屏蔽公共访问权限”设置，您必须拥有 `s3:PutBucketPublicAccessBlock` 权限。

1. 为存储桶启用版本控制：

   ```
   aws s3api put-bucket-versioning --bucket amzn-s3-demo-bucket --versioning-configuration Status=Enabled
   ```

   默认情况下，存储桶版本控制处于禁用状态。版本控制是在相同的存储桶中保留对象的多个变量的方法。对于 存储桶中存储的每个对象，您可以使用版本控制功能来保留、检索和还原它们的各个版本。使用版本控制能够更加轻松地从用户意外操作和应用程序故障中恢复数据。有关版本控制的更多信息，请参阅[使用 S3 版本控制保留对象的多个版本](Versioning.md)。

1. Amazon S3 对象锁定有助于保护新对象不被删除或覆盖。有关更多信息，请参阅 [使用对象锁定以锁定对象](object-lock.md)。要启用[使用对象锁定以锁定对象](object-lock.md)（需要存储桶版本控制），请执行以下操作：

   对于新存储桶：

   ```
   aws s3api create-bucket --bucket amzn-s3-demo-bucket --region us-east-1 --object-lock-enabled-for-bucket
   ```

   对于现有存储桶：

   ```
   aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket --object-lock-configuration '{"ObjectLockEnabled": "Enabled"}'
   ```

   如果要在启用对象锁定的同时设置默认的[使用对象锁定以锁定对象](object-lock.md)，可以使用：

   ```
   aws s3api put-object-lock-configuration --bucket amzn-s3-demo-bucket --object-lock-configuration '{"ObjectLockEnabled":"Enabled","Rule":{"DefaultRetention":{"Mode":"COMPLIANCE","Days":30}}}'
   ```

   您可以将 `"COMPLIANCE"` 替换为 `"GOVERNANCE"` 以使用限制较少的模式，并根据需要调整天数。
**注意**  
要创建启用了对象锁定的存储桶，您必须具有以下权限：`s3:CreateBucket`、`s3:PutBucketVersioning` 和 `s3:PutBucketObjectLockConfiguration`。

1. 您可以向存储桶添加标签。利用 Amazon 成本分配功能，可以使用存储桶标签来对存储桶的使用计费添加注释。一个标签即为一个键值对，用于表示用户分配给存储桶的标记。有关更多信息，请参阅 [使用成本分配 S3 存储桶标签](CostAllocTagging.md)。

   向存储桶添加标签：

   ```
   aws s3api put-bucket-tagging --bucket amzn-s3-demo-bucket --tagging 'TagSet=[{Key=Purpose,Value=Testing},{Key=Environment,Value=Development}]'
   ```

1. 通过将具有 Amazon S3 托管式密钥的服务器端加密 (`SSE-S3`) 用作基本加密配置级别，对存储桶和新对象进行加密。要验证存储桶的默认加密，请使用以下命令：

   ```
   aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket
   ```

   您还可以为存储桶配置具有 Amazon KMS 密钥的服务器端加密 (`SSE-KMS`) 或具有 Amazon KMS 密钥的双层服务器加密 (`DSSE-KMS`)。Amazon 托管式密钥 (`aws/s3`) 和客户自主管理型密钥都可用作 `SSE-KMS` 和 `DSSE-KMS` 加密配置的 Amazon KMS 密钥。有关客户自主管理型密钥的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[客户密钥和 Amazon 密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#key-mgmt)。有关创建 Amazon KMS 密钥的更多信息，请参阅《Amazon Key Management Service Developer Guide》**中的 [Creating keys](https://docs.amazonaws.cn/kms/latest/developerguide/create-keys.html)。
**重要**  
Amazon KMS 密钥必须与 Amazon S3 存储桶位于同一 Amazon 区域中。Amazon S3 存储桶加密不支持跨区域 KMS 密钥。

   当您将存储桶配置为使用具有 SSE-KMS 的默认加密时，您也可以使用 Amazon S3 存储桶密钥。Amazon S3 存储桶密钥可通过减少从 Amazon S3 到 Amazon KMS 的请求流量，来降低加密成本。有关更多信息，请参阅 [使用 Amazon S3 存储桶密钥降低 SSE-KMS 的成本](bucket-key.md)。DSSE-KMS 不支持 Amazon S3 存储桶密钥。在 Amazon CLI 中，当创建新的存储桶时，Amazon S3 存储桶密钥默认处于未启用状态。这与默认启用它们的控制台行为不同。

   配置 `SSE-KMS` 并启用 Amazon S3 存储桶密钥：

   ```
   aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration "{\"Rules\":[{\"ApplyServerSideEncryptionByDefault\":{\"SSEAlgorithm\":\"aws:kms\",\"KMSMasterKeyID\":\"YOUR-KMS-KEY-ARN\"},\"BucketKeyEnabled\":true}]}"
   ```

   检查是否为存储桶启用了 Amazon S3 存储桶密钥：

   ```
   aws s3api get-bucket-encryption --bucket amzn-s3-demo-bucket
   ```

   输出将包括一个设置为 `true` 或 `false` 的 `BucketKeyEnabled` 字段。

   要配置 `DSSE-KMS`，请使用以下命令：

   ```
   aws s3api put-bucket-encryption --bucket amzn-s3-demo-bucket --server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms:dsse","KMSMasterKeyID":"YOUR-KMS-KEY-ARN"}}]}'
   ```

   有关默认加密的更多信息，请参阅[为 Amazon S3 存储桶设置默认服务器端加密行为](bucket-encryption.md)。有关 SSE-S3 的更多信息，请参阅[使用具有 Amazon S3 托管式密钥的服务器端加密（SSE-S3）](UsingServerSideEncryption.md)。
**重要**  
如果您将 SSE-KMS 或 DSSE-KMS 选项用于默认加密配置，则您将受到 Amazon KMS 的每秒请求数（RPS）配额限制。可以通过启用 Amazon S3 存储桶密钥来减少 KMS API 调用，这样可以减少发送到 Amazon KMS 的请求数量。有关 Amazon KMS 限额以及如何请求增加限额的更多信息，请参阅《Amazon Key Management Service 开发人员指南》**中的[限额](https://docs.amazonaws.cn/kms/latest/developerguide/limits.html)。

您已在 Amazon S3 中完成存储桶创建。下一步是将对象上传到存储桶。

## 步骤 2：将对象上传到存储桶
<a name="GettingStartedS3CLI.step2"></a>

在 Amazon S3 中创建存储桶后，您就可以将对象上传到存储桶了。对象可以是任何类型的文件：文本文件、图片、视频等等。

**将对象上传到存储桶**

1. 创建要上传的简单文本文件。您可以使用任何文本编辑器或运行以下命令：

   ```
   echo 'Hello, Amazon S3!' > example.txt
   ```

1. 使用 s3 cp 命令将文件上传到存储桶：

   ```
   aws s3 cp example.txt s3://amzn-s3-demo-bucket/
   ```

   如果上传成功，您将看到类似于以下内容的输出：

   ```
   upload: ./example.txt to s3://amzn-s3-demo-bucket/example.txt
   ```

1. 通过列出存储桶的内容来验证对象是否已上传：

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

您已成功将对象上传到存储桶。下一步是下载对象。

## 步骤 3：下载对象
<a name="GettingStartedS3CLI.step3"></a>

当您将对象上传到存储桶后，您可以查看有关对象的信息并将对象下载到本地计算机上。

**从 Amazon S3 存储桶下载对象**

1. 获取有关对象的信息：

   ```
   aws s3api head-object --bucket amzn-s3-demo-bucket --key example.txt
   ```

   此命令返回有关对象的元数据，包括其内容类型、内容长度和上次修改日期。

1. 将对象下载到您的本地计算机：

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/example.txt downloaded-example.txt
   ```

   如果下载成功，您将看到类似于以下内容的输出：

   ```
   download: s3://amzn-s3-demo-bucket/example.txt to ./downloaded-example.txt
   ```

1. 验证已下载文件的内容：

   ```
   cat downloaded-example.txt
   ```

**注意**  
与控制台不同，Amazon CLI 可以使用通配符或 `--recursive` 标志一次下载多个对象。
使用 Amazon CLI 下载对象时，对象键名称末尾的句点（.）会保留，这与在控制台中移除句点的行为不同。如果对象键以句点结尾，则这一点很重要。

下载多个对象的示例：

要从 Amazon S3 存储桶下载具有特定文件扩展名的多个对象，请使用带有 `exclude` 和 `include` 筛选条件的递归复制命令，如示例所示。

```
aws s3 cp s3://amzn-s3-demo-bucket/ . --recursive --exclude "*" --include "*.txt"
```

您已成功下载您的对象。下一步是将对象复制到文件夹中。

## 步骤 4：将对象复制到文件夹
<a name="GettingStartedS3CLI.step4"></a>

您已向存储桶添加一个对象并已下载该对象。现在，您创建一个文件夹并将对象复制到该文件夹中。

**将对象复制到文件夹中**

1. 在 Amazon S3 中，文件夹由对象键中的前缀表示。通过复制带有前缀的对象来创建“文件夹”：

   ```
   aws s3 cp s3://amzn-s3-demo-source-bucket/example.txt s3://amzn-s3-demo-destination-bucket/favorite-files/example.txt
   ```

   如果复制成功，您将看到类似于以下内容的输出：

   ```
   copy: s3://amzn-s3-demo-source-bucket/example.txt to s3://amzn-s3-demo-destination-bucket/favorite-files/example.txt
   ```

1. 通过列出文件夹的内容来验证对象是否已复制：

   ```
   aws s3 ls s3://amzn-s3-demo-destination-bucket/favorite-files/
   ```

您已成功将对象复制到文件夹中。下一步是删除对象和存储桶。

## 步骤 5：删除对象和存储桶
<a name="GettingStartedS3CLI.step5"></a>

当您不再需要对象或存储桶时，我们建议您删除它们以防止发生进一步的费用。如果您将此入门演练作为练习完成，并且不打算使用您的存储桶或对象，我们建议您删除存储桶和对象，从而不再产生费用。

在删除存储桶之前，请清空存储桶或删除存储桶中的对象。删除对象和存储桶后，它们将不再可用。

如果要继续使用相同的存储桶名称，我们建议您删除对象或清空存储桶，但不要删除存储桶。删除存储桶后，该名称可供重复使用。但是，在您有机会重复使用此名称之前，其它 Amazon 账户可能会创建具有相同名称的存储桶。

### 删除对象
<a name="GettingStartedS3CLI.step5.delete-object"></a>

如果您希望选择要删除的对象而不清空存储桶中的所有对象，则可以删除单个对象。

删除特定对象：

```
aws s3 rm s3://amzn-s3-demo-bucket/example.txt
```

如果删除成功，您将看到类似于以下内容的输出：

```
delete: s3://amzn-s3-demo-bucket/example.txt
```

### 清空存储桶
<a name="GettingStartedS3CLI.step5.empty-bucket"></a>

如果您计划删除存储桶，则必须首先清空存储桶，这会删除存储桶中的所有对象、版本和删除标记。

**清空存储桶**
**重要**  
无法撤消清空存储桶操作。当正在执行清空存储桶操作时添加到存储桶的对象将被删除。

1. **选项 1：**对于较小的存储桶，可以使用带有 `--recursive` 标志的 `rm` 命令来删除存储桶中的所有对象：

   ```
   aws s3 rm s3://amzn-s3-demo-bucket --recursive
   ```

   此命令删除存储桶中的所有对象，包括文件夹中的对象。
**注意**  
如果存储桶包含许多对象或大型对象，则此命令可能会超时。对于包含大量数据的存储桶，请使用 Amazon S3 生命周期规则使存储桶中的对象过期。

   **选项 2：**使用 Amazon S3 生命周期规则（建议用于大型存储桶）

   对于包含许多对象或大型对象的存储桶，请使用 Amazon S3 生命周期规则自动使所有对象过期并删除它们。等待生命周期规则进行处理（这可能需要长达 24 小时）。有关使用生命周期规则清空存储桶的更多信息，请参阅[如何使用生命周期配置规则清空 Amazon S3 存储桶？](https://repost.aws/knowledge-center/s3-empty-bucket-lifecycle-rule)

1. 验证存储桶是否为空：

   ```
   aws s3 ls s3://amzn-s3-demo-bucket
   ```

1. 如果存储桶启用了版本控制，请使用以下命令来删除受版本控制的对象和删除标记。

   移除受版本控制的对象：

   ```
   aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete "$(aws s3api list-object-versions --bucket amzn-s3-demo-bucket --output json --query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"
   ```

   移除删除标记：

   ```
   aws s3api delete-objects --bucket amzn-s3-demo-bucket --delete "$(aws s3api list-object-versions --bucket amzn-s3-demo-bucket --output json --query='{Objects: DeleteMarkers[].{Key:Key,VersionId:VersionId}}')"
   ```

1. 验证存储桶是否已清空了所有对象版本和删除标记：

   ```
   aws s3api list-object-versions --bucket amzn-s3-demo-bucket
   ```

   输出应显示没有剩余任何版本或删除标记。

### 删除存储桶
<a name="GettingStartedS3CLI.step5.delete-bucket"></a>

清空存储桶或从存储桶中删除所有对象后，您可以删除存储桶。

**重要**  
无法撤消删除存储桶的操作。存储桶名称是唯一的。如果您删除存储桶，则其他 Amazon 用户可以使用该名称。如果您希望继续使用相同的存储桶名称，请不要删除该存储桶。相反，清空并保留存储桶。

**删除存储桶**

1. 删除存储桶：

   ```
   aws s3api delete-bucket --bucket amzn-s3-demo-bucket
   ```

1. 通过列出所有存储桶来验证是否已删除了该存储桶：

   ```
   aws s3 ls
   ```

## 后续步骤
<a name="GettingStartedS3CLI.next-steps"></a>

在前面的示例中，您了解了如何使用 Amazon CLI 执行一些基本 Amazon S3 任务。

下列主题介绍了各种可促使您深入了解 Amazon S3，进而在应用程序中实施服务的方式。
+ [了解常见使用案例从教程中学习](GetStartedWithS3.md#s3-use-cases)
+ [控制对存储桶和对象的访问](GetStartedWithS3.md#control-access-resources)
+ [保护和监控存储](GetStartedWithS3.md#manage-monitor-storage)
+ [用 Amazon S3 进行开发](GetStartedWithS3.md#develop-with-s3)
+ [了解常见使用案例从教程中学习](GetStartedWithS3.md#s3-getting-started-tutorials-list)
+ [探索培训和支持](GetStartedWithS3.md#explore-training-and-support)

以下列表显示了 Amazon S3 的常见 Amazon CLI 命令：
+ [cp](https://docs.amazonaws.cn/cli/latest/reference/s3/cp.html)：在本地文件系统和 Amazon S3 之间或者在 Amazon S3 位置之间复制文件或对象
+ [ls](https://docs.amazonaws.cn/cli/latest/reference/s3/ls.html)：列出指定存储桶和前缀下的 Amazon S3 对象和通用前缀
+ [mb](https://docs.amazonaws.cn/cli/latest/reference/s3/mb.html)：创建 Amazon S3 存储桶
+ [mv](https://docs.amazonaws.cn/cli/latest/reference/s3/mv.html)：在本地文件系统和 Amazon S3 之间或在 Amazon S3 位置之间移动文件或对象
+ [presign](https://docs.amazonaws.cn/cli/latest/reference/s3/presign.html)：为 Amazon S3 对象生成预签名 URL，以支持在没有 Amazon 凭证的情况下进行临时访问
+ [rb](https://docs.amazonaws.cn/cli/latest/reference/s3/rb.html)：移除空的 Amazon S3 存储桶。您可以使用 `--force` 标志通过单个命令自动清空和删除包含内容的存储桶。此操作无法撤消。
+ [rm](https://docs.amazonaws.cn/cli/latest/reference/s3/rm.html)：从 Amazon S3 中删除对象
+ [sync](https://docs.amazonaws.cn/cli/latest/reference/s3/sync.html)：通过以递归方式将新的和更新的文件从源目录复制到目标，来同步目录和 Amazon S3 前缀。
+ [website](https://docs.amazonaws.cn/cli/latest/reference/s3/website.html)：将存储桶配置为静态网站

有关 Amazon S3 的 Amazon CLI 命令的更多信息，请参阅以下资源：
+ [s3](https://docs.amazonaws.cn/cli/latest/reference/s3/index.html)：用于简化常见操作的高级别 Amazon S3 命令
+ [s3api](https://docs.amazonaws.cn/cli/latest/reference/s3api/index.html)：直接访问所有 Amazon S3 API 操作
+ [s3control](https://docs.amazonaws.cn/cli/latest/reference/s3control/index.html)：直接访问所有 Amazon S3 控制 API 操作