

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将 Elastic Beanstalk 和 Amazon S3 结合使用
<a name="AWSHowTo.S3"></a>

本主题介绍 Elastic Beanstalk 如何利用 Amazon Simple Storage Service（Amazon S3）以及它在 S3 存储桶中存储的对象类型。它还指出了在您终止 Elastic Beanstalk 环境后必须手动删除哪些对象，并提供了执行这些操作的说明。

## Elastic Beanstalk Amazon S3 客户账户存储桶
<a name="AWSHowTo.S3.aeb-bucket"></a>

Elastic Beanstalk 为您在其中创建环境的每个区域创建一个名为 `elasticbeanstalk-region-account-id` 的加密 Amazon S3 存储桶。您的 AWS 账户拥有此存储桶。Elastic Beanstalk 将临时配置文件和其他对象存储在此存储桶中，以确保应用程序正常运行。Elastic Beanstalk ACLs 要求为服务托管存储分区启用，因此启用此存储分区的访问控制列表 (ACL)。

请注意，默认情况下，Amazon S3 会禁用存储桶访问控制列表 (ACLs)。此外，*Amazon S3 用户指南*中的 [ACL 概述](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html)主题建议您保持 ACLs 禁用状态，特定用例除外。Elastic Beanstalk 服务托管存储桶属于需要启用的用例。 ACLs为了保持安全性，Elastic Beanstalk 部署会强制要求该存储桶归运行该应用程序的账户所有。

Elastic Beanstalk 保留 Amazon S3 存储桶所提供的默认加密。有关存储桶加密的更多信息，请参阅《Amazon Simple Storage Service 用户指南》**中的 [Amazon S3 默认加密](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html)。

## Elastic Beanstalk Amazon S3 客户账户存储桶的内容
<a name="AWSHowTo.S3.content"></a>

下表列出了 Elastic Beanstalk 存储在您客户账户存储桶中的一些对象。此表还显示了必须手动删除的对象。为避免产生不必要的存储成本，以及为确保不会保留个人信息，请务必在不再需要这些对象时手动删除它们。


|  **Object**  |  **何时存储？**  |  **何时删除？**  | 
| --- | --- | --- | 
|  [**应用程序版本**](applications-versions.md)  |  创建环境或将应用程序代码部署到现有环境时，Elastic Beanstalk 会将应用程序版本存储在 Amazon S3 中并将此版本与环境关联。  |  删除应用程序期间，视[版本生命周期](applications-lifecycle.md)而定。  | 
|  [**源包**](applications-versions.md)  |  使用 Elastic Beanstalk 控制台或 EB CLI 上传新的应用程序版本时，Elastic Beanstalk 会将此版本的副本存储在 Amazon S3 中，并将其设置为环境的源包。  |  *手动。*删除应用程序版本时，可以选择**从 Amazon S3 中删除版本**以同时删除相关源包。有关更多信息，请参阅 [管理应用程序版本](applications-versions.md)。  | 
|  **自定义平台**  |  创建自定义平台时，Elastic Beanstalk 会临时将相关数据存储在 Amazon S3 中。  |  自定义平台成功创建完成后。  | 
|  [**日志文件**](using-features.logging.md)  |  您可以请求 Elastic Beanstalk 检索实例日志文件（结尾或捆绑日志）并将它们存储在 Amazon S3 中。您还可启用日志轮换并将环境配置为在日志轮换后自动将日志发布到 Amazon S3。  |  结尾日志和捆绑日志：在创建后 15 分钟。 轮换日志：*手动。*  | 
|  [**保存的配置**](environment-configuration-savedconfig.md)  |  *手动。*  |  *手动。*  | 

## 删除 Elastic Beanstalk Amazon S3 存储桶中的对象
<a name="AWSHowTo.S3.delete-objects"></a>

在您终止环境或删除应用程序时，Elastic Beanstalk 将从 Amazon S3 中删除最相关的对象。为最大限度降低运行应用程序的存储成本，请定期删除应用程序不需要的对象。此外，请注意必须手动删除的对象，如 [Elastic Beanstalk Amazon S3 客户账户存储桶的内容](#AWSHowTo.S3.content)中所列出。要确保不会不必要地保留私有信息，请在不再需要这些对象时，将它们删除。
+ 删除不希望再在应用程序中使用的应用程序版本。删除应用程序版本时，可以选择 **Delete versions from Amazon S3**（从 Amazon S3 中删除版本）以删除相关的源包，即应用程序源代码的副本和 Elastic Beanstalk 于部署应用程序或上传应用程序时上传到 Amazon S3 的配置文件。要了解如何删除应用程序版本，请参阅[管理应用程序版本](applications-versions.md)。
+ 删除不需要的已轮换日志。您也可以下载它们或将它们移动到 Amazon Glacier 进行进一步分析。
+ 删除不会再在任何环境中使用的已保存配置。

## 删除 Elastic Beanstalk Amazon S3 存储桶
<a name="AWSHowTo.S3.delete-bucket"></a>

当 Elastic Beanstalk 创建存储桶时，还会创建适用于新存储桶的存储桶策略。该策略有两个用途：
+ 允许环境写入存储桶。
+ 防止意外删除存储桶。

由于 Elastic Beanstalk 创建的策略适用于其为环境创建的存储桶，因此除非您有意先删除存储桶策略，否则您将无法删除这些存储桶。您可以从 Amazon S3 控制台中存储桶属性的**权限**部分删除存储桶策略。

**警告**  
**建议从 Elastic Beanstalk Amazon S3 存储桶中删除不必要的特定对象，而不是删除整个存储桶。**  
如果删除 Elastic Beanstalk 已在您的账户中创建的某个存储桶，并且在相应区域仍具有现有应用程序和正在运行的环境，则您的应用程序可能停止正常运行。例如：  
当环境扩展时，Elastic Beanstalk 应该能够在 Amazon S3 存储桶中找到该环境的应用程序版本，并使用它来启动新的亚马逊实例。 EC2 
创建自定义平台时，Elastic Beanstalk 将在创建过程中使用临时 Amazon S3 存储。
  
有关删除 S3 存储桶的影响的更多信息，请参阅《*Amazon S3 用户指南*》中的[删除存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)中列出的注意事项。

**删除 Elastic Beanstalk 存储桶（控制台）**

《*Amazon S3 用户指南*》中的[删除 S3 存储桶](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)还介绍了删除 S3 存储桶的一般过程。由于接下来要在以下过程中删除由 Elastic Beanstalk 创建的存储桶，因此我们添加了其他步骤，首先删除存储桶策略。

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

1. 通过选择存储桶名称打开 Elastic Beanstalk 存储桶的页面。

1. 选择**权限**选项卡。

1. 选择 **Bucket Policy**（存储桶策略）。

1. 选择**删除**。

1. 返回 Amazon S3 控制台主页，然后选择 Elastic Beanstalk 存储桶。

1. 选择**删除存储桶**。

1. 通过在文本字段中输入存储桶名称来确认要删除该存储桶，然后选择**删除存储桶**。