

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

# 配合使用 Elastic Beanstalk 和 Amazon Elastic File System
<a name="services-efs"></a>

借助 Amazon Elastic File System (Amazon EFS)，您可以创建可由跨多个可用区的实例装载的网络文件系统。Amazon EFS 文件系统是一种 AWS 资源，它使用安全组来控制通过您的默认或自定义 VPC 中的网络进行访问。

在 Elastic Beanstalk 环境中，您可以使用 Amazon EFS 创建共享目录，以存储用户为应用程序上传或修改的文件。您的应用程序可以处理已装载的 Amazon EFS 卷，例如本地存储。这样，您不必更改应用程序代码即可纵向扩展到多个实例。

有关 Amazon EFS 的更多信息，请参阅 [Amazon Elastic File System 用户指南](https://docs.aws.amazon.com/efs/latest/ug/)。



**注意**  
Elastic Beanstalk *创建*了一个 Web 应用程序用户，您可以将其设置为亚马逊实例上应用程序目录的所有者。 EC2 有关更多信息，请参阅本指南*设计考虑因素*主题中的[持久性存储](concepts.concepts.design.md#concepts.concepts.design.storage)。

**Topics**
+ [配置文件](#services-efs-configs)
+ [加密文件系统](#services-efs-encrypted)
+ [示例应用程序](#services-efs-samples)
+ [清除文件系统](#services-efs-cleanup)

## 配置文件
<a name="services-efs-configs"></a>

Elastic Beanstalk 提供了可用于创建和装载 Amazon EFS 文件系统的[配置文件](ebextensions.md)。您可以创建 Amazon EFS 卷作为环境的一部分，也可以装载独立于 Elastic Beanstalk 创建的 Amazon EFS 卷。
+ **[storage-efs-createfilesystem.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-createfilesystem.config)**-使用`Resources`密钥在 Amazon EFS 中创建新的文件系统和挂载点。您的环境中的所有实例都可以连接同一个文件系统，以实现共享、可扩展的存储。使用 `storage-efs-mountfilesystem.config` 在每个实例上装载文件系统。
**内部资源**  
使用配置文件创建的任何资源都与环境的生命周期关联。如果终止环境或删除配置文件，这些资源将丢失。
+ **[storage-efs-mountfilesystem.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-mountfilesystem.config)** — 将 Amazon EFS 文件系统挂载到您环境中实例的本地路径上。您可以使用 `storage-efs-createfilesystem.config` 创建卷作为环境的一部分。或者，您可以使用 Amazon EFS 控制台或 AWS 软件开发工具包将其安装到您的环境 AWS CLI中。

要使用配置文件，请先使用 `storage-efs-createfilesystem.config` 创建 Amazon EFS 文件系统。按照配置文件中的说明将其添加到源代码中的 [.ebextensions](ebextensions.md) 目录里，以便在 VPC 中创建此文件系统。

将更新后的源代码部署到 Elastic Beanstalk 环境。这是为了确认文件系统已成功创建。然后，添加 `storage-efs-mountfilesystem.config` 以将此文件系统装载到环境中的实例上。在两个独立的部署过程中执行此操作可确保即使挂载操作失败，文件系统仍保持完整。如果在同一部署中同时执行两个步骤，则任何一个步骤出现问题都将导致文件系统在部署失败时终止。

## 加密文件系统
<a name="services-efs-encrypted"></a>

Amazon EFS 支持加密的文件系统。本主题中讨论的 [https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-createfilesystem.config](https://github.com/awslabs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/instance-configuration/storage-efs-createfilesystem.config) 配置文件定义了两个自定义选项。您可以使用这些选项创建 Amazon EFS 加密文件系统。有关更多信息，请参阅配置文件中的说明。

## 示例应用程序
<a name="services-efs-samples"></a>

Elastic Beanstalk 还提供了使用 Amazon EFS 作为共享存储的示例应用程序。这两个项目都有配置文件，您可以使用标准安装程序 WordPress 或 Drupal 安装程序在负载平衡的环境中运行博客或其他内容管理系统。当用户上传照片或其他媒体时，该文件将存储在 Amazon EFS 文件系统中。这避免了必须使用替代方案，即使用插件在 Amazon S3 中存储上传的文件。
+ **[负载平衡 WordPress](https://github.com/awslabs/eb-php-wordpress)** — 这包括用于 WordPress 安全安装并在负载平衡的 Elastic Beanstalk 环境中运行的配置文件。
+ **[负载均衡的 Drupal](https://github.com/awslabs/eb-php-drupal)** – 这包括用于安全安装 Drupal 并在负载均衡的 Elastic Beanstalk 环境中运行 Drupal 的配置文件和说明。

## 清除文件系统
<a name="services-efs-cleanup"></a>

如果您已创建 Amazon EFS 文件系统，以使用配置文件作为 Elastic Beanstalk 环境的一部分，则 Elastic Beanstalk 会在您终止环境时删除该文件系统。为最大限度降低运行应用程序的存储成本，请定期删除应用程序不需要的文件。或者，确保应用程序代码正确维护文件生命周期。

**重要**  
如果您已在 Elastic Beanstalk 环境外部创建 Amazon EFS 文件系统并已将该系统装载到环境的实例中，则 Elastic Beanstalk 不会在您终止环境时删除该文件系统。要确保不会保留个人信息且避免存储成本，请在您不再需要应用程序所存储的文件时删除它们。或者，您也可以删除整个文件系统。