如何将 Amazon EFS 卷挂载到我的 Elastic Beanstalk 环境中的实例?

上次更新时间:2020 年 9 月 25 日

我想将 Amazon Elastic File System (Amazon EFS) 卷挂载到我的 AWS Elastic Beanstalk 环境中的实例。

简短描述

在 Elastic Beanstalk 环境中,您可以使用 Amazon EFS 创建共享目录,以存储应用程序用户上传或修改的文件。您的应用程序可以将挂载的 Amazon EFS 卷用作本地存储,因此,您不必更改应用程序代码就能扩展到多个实例。

要将 Amazon EFS 卷挂载到您的 Elastic Beanstalk 环境中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,您必须在源代码中添加置文件。

解决方法

1.    创建 Amazon EFS 文件系统,然后记下 EFS ID 和安全组 ID。

2.    要允许连接,请编辑文件系统的安全组规则,以允许从与 Elastic Beanstalk 环境中的实例相关联的安全组进入端口 2049(网络文件系统或 NFS)的入站连接。

3.    更新实例安全组,以允许端口2049到EFS安全组的出站连接。

注意: 如果要在另一个子网中的环境上挂载一个子网的挂载目标,则Amazon EFS安全组必须允许从Amazon Virtual Private Cloud (Amazon VPC) CIDR到端口2049的入站连接。

4.    在应用程序包的 root 目录中,创建一个名为 .ebextensions 的目录。

5.    向您的目录添加格式化配置文件(YAML 或 JSON)。

重要提示: 在配置文件中添加文件系统 ID。将 FILE_SYSTEM_ID: {"Ref" : "FileSystem"} 替换为 FILE_SYSTEM_ID: fs-xxxxxxxx。配置文件包含一个脚本,该脚本会在 fstab(文件系统表)系统配置文件中添加一个条目,并装载 (-t) nfs4 类型的 fstab 文件中所列的所有 (-a) 文件系统。对于 Amazon EFS ,该类型始终为 nfs4。在部署期间,系统会使用 mount -a 命令自动挂载 fstab 文件中所列的文件系统。

6.    将包含第 5 步中的配置文件的源代码部署到您的 Elastic Beanstalk 应用程序。

7.    要确认您的 Amazon EFS 卷是否已挂载到指定挂载路径上的实例,请运行以下命令:

df -H