将 Amazon EFS 卷与 Amazon ECS 结合使用的最佳实践 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 Amazon EFS 卷与 Amazon ECS 结合使用的最佳实践

将 Amazon EFS 与 Amazon ECS 结合使用时,请记下以下最佳实践建议。

Amazon EFS 卷的安全性和访问控制

Amazon EFS 提供访问控制功能,您可以使用这些功能来确保存储在 Amazon EFS 文件系统中的数据是安全的,并且只能从需要它的应用程序中访问。您可以通过启用静态加密和动态加密来保护数据。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 Amazon EFS 中的数据加密

除了数据加密之外,您还可以使用 Amazon EFS 来限制对文件系统的访问。可以通过三种方法在 EFS 中实现访问控制。

  • 安全组 – 使用 Amazon EFS 挂载目标,您可以配置用于允许和拒绝网络流量的安全组。您可以将附加到 Amazon EFS 的安全组配置为允许来自附加到您的 Amazon ECS 实例的安全组的 NFS 流量(端口 2049),或者在使用 awsvpc 网络模式时,允许来自 Amazon ECS 任务的该流量。

  • IAM – 您可以使用 IAM 限制对 Amazon EFS 文件系统的访问。配置后,Amazon ECS 任务需要一个 IAM 角色来访问文件系统,以挂载 EFS 文件系统。有关详细信息,请参阅 Amazon Elastic 文件系统用户指南 中的使用 IAM 控制文件系统数据访问

    IAM 策略还可以强制执行预定义的条件,例如要求客户端使用 TLS 连接到 Amazon EFS 文件系统。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的客户端的 Amazon EFS 条件键

  • Amazon EFS 接入点 – Amazon EFS 接入点是 Amazon EFS 文件系统中特定于应用程序的入口点。您可以使用接入点为通过接入点发出的所有文件系统请求强制执行用户身份(包括用户的 POSIX 组)。访问点还可以为文件系统强制执行不同的根目录。这样,客户端只能访问指定目录或其子目录中的数据。

IAM 策略

您可以使用 IAM 策略来控制对 Amazon EFS 文件系统的访问权限。

您可以为使用文件系统策略访问文件系统的客户端指定以下操作。

操作 描述

elasticfilesystem:ClientMount

提供对文件系统的只读访问权限。

elasticfilesystem:ClientWrite

提供对文件系统的写入权限。

elasticfilesystem:ClientRootAccess

提供在访问文件系统时使用根用户的权限。

您需要在策略中指定每个操作。这些策略可通过以下方式定义:

  • 基于客户端 – 将策略附加到任务角色

    在创建任务定义时设置 IAM 授权选项。

  • 基于资源 – 将策略附加到 Amazon EFS 文件系统

    如果不存在基于资源的策略,则默认情况下,在创建文件系统时,会向所有主体(*)授予访问权限。

在您设置 IAM 授权选项时,我们会将与任务角色关联的策略与 Amazon EFS 基于资源的策略进行合并。IAM 授权选项将任务身份(任务角色)和策略传递给 Amazon EFS。设置后,Amazon EFS 基于资源的策略就能为策略中指定的 IAM 用户或角色提供上下文。如果您未设置该选项,Amazon EFS 资源级策略会将 IAM 用户标识为“匿名”。

考虑在 Amazon EFS 文件系统上实施全部三种访问控制,以最大限度地提高安全性。例如,您可以将附加到 Amazon EFS 挂载点的安全组配置为仅允许来自与您的容器实例或 Amazon ECS 任务关联的安全组的入口 NFS 流量。此外,您可以将 Amazon EFS 配置为要求 IAM 角色访问文件系统,即使连接来自允许的安全组。最后,您可以使用 Amazon EFS 接入点,强制执行 POSIX 用户权限并为应用程序指定根目录。

以下任务定义代码段显示如何使用接入点挂载 Amazon EFS 文件系统。

"volumes": [ { "efsVolumeConfiguration": { "fileSystemId": "fs-1234", "authorizationConfig": { "accessPointId": "fsap-1234", "iam": "ENABLED" }, "transitEncryption": "ENABLED", "rootDirectory": "" }, "name": "my-filesystem" } ]

Amazon EFS 卷性能

Amazon EFS 提供两种性能模式:通用型模式和最大 I/O 模式。通用型模式适用于对延迟敏感的应用程序,例如内容管理系统和 CI/CD 工具。相比之下,最大 I/O 文件系统适用于数据分析、媒体处理和机器学习等工作负载。这些工作负载需要从数百甚至数千个容器中执行并行操作,并且需要尽可能高的总吞吐量和 IOPS。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 Amazon EFS 性能模式

某些对延迟敏感的工作负载同时需要由最大 I/O 性能模式提供更高的 I/O 级别以及由通用性能模式提供的更低延迟。对于此类工作负载,我们建议创建多个通用性能模式文件系统。用此方式,您可以将应用程序工作负载分散到所有这些文件系统间,只要工作负载和应用程序可以支持它即可。

Amazon EFS 卷吞吐量

所有 Amazon EFS 文件系统都有相关的计量吞吐量,该吞吐量由使用预调配吞吐量的文件系统的预调配吞吐量或使用突增吞吐量的文件系统以 EFS 标准或单区存储类存储的数据量决定。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的了解计量吞吐量

Amazon EFS 文件系统的默认吞吐量模式为突增模式。在突增模式下,可用于文件系统的吞吐量会随着文件系统的增长而横向缩减或扩展。因为基于文件的工作负载通常会激增,在一段时间内需要高水平的吞吐量,其余时间则需要低水平的吞吐量,因此,Amazon EFS 被设计为可在一段时间内突增到允许高吞吐量。此外,由于许多工作负载的读取量大,因此读取操作与其他 NFS 操作(例如写入)的计量比例为 1:3。

所有 Amazon EFS 文件系统均为每 TB 的 Amazon EFS 标准存储或 Amazon EFS 单区存储提供 50 MB/s 的一致基准性能。所有文件系统,不管其大小如何,都能突增到 100 MB/s。拥有超过 1TB 的 EFS 标准存储或 EFS 单区存储的文件系统每 TB 可以突增至 100 MB/s。由于读取操作以 1:3 的比例计量,对于每 TiB 的读取吞吐量,您最多可以驱动到 300 MiB/s。当您将数据添加到文件系统时,文件系统可用的最大吞吐量会随着您在 Amazon EFS 标准存储类中的存储量而自动线性扩展。如果您需要的吞吐量超过存储的数据量所能达到的吞吐量,则可以将预配置吞吐量配置为工作负载需要的特定量。

文件系统吞吐量在连接到文件系统的所有 Amazon EC2 实例间共享。例如,一个吞吐量可突增至 100 MB/s 的 1TB 文件系统可以从单个 Amazon EC2 实例中驱动 100 MB/s,每个实例可以驱动 10 MB/s。有关更多信息,请参阅《Amazon Elastic 文件系统用户指南》中的 Amazon EFS 性能

优化 Amazon EFS 卷的成本

Amazon EFS 为您简化扩展存储的过程。随着您添加更多数据,Amazon EFS 文件系统会自动增长。尤其是在 Amazon EFS 突增吞吐量模式下,Amazon EFS 上的吞吐量将随着标准存储类中文件系统大小的增大而扩展。要在不为 EFS 文件系统的预调配吞吐量支付额外费用的情况下提高吞吐量,您可以与多个应用程序共享一个 Amazon EFS 文件系统。使用 Amazon EFS 接入点,您可以在共享的 Amazon EFS 文件系统中实施存储隔离。这样,即使应用程序仍共享同一个文件系统,但除非您授权,否则它们无法访问数据。

随着数据的增长,Amazon EFS 可帮助您将不经常访问的文件自动移动到较低的存储类。Amazon EFS 标准-不频繁访问(IA)存储类可降低并非每天访问的文件的存储成本。这样做并不会损害 Amazon EFS 提供的高可用性、高持久性、弹性和 POSIX 文件系统访问。有关更多信息,请参阅《Amazon Elastic File System User Guide》中的 EFS storage classes

考虑使用 Amazon EFS 生命周期策略,通过将不经常访问的文件移至 Amazon EFS IA 存储来自动节省成本。有关更多信息,请参阅 Amazon Elastic File System User Guide(《Amazon Elastic File System 用户指南》)中的 Amazon EFS lifecycle management(Amazon EFS 生命周期管理)。

创建 Amazon EFS 文件系统时,您可以在 Amazon EFS 跨多个可用区(标准)复制您的数据或将您的数据冗余存储在单个可用区中之间进行选择。与 Amazon EFS 标准存储类相比,Amazon EFS 单区存储类可以大幅降低存储成本。对于不需要多可用区弹性的工作负载,考虑使用 Amazon EFS 单区存储类。您可以通过将不经常访问的文件移至 Amazon EFS 单区-不频繁访问来进一步降低 Amazon EFS 单区存储的成本。有关更多信息,请参阅 Amazon EFS 不频繁访问

Amazon EFS 卷数据保护

对于使用标准存储类的文件系统,Amazon EFS 跨多个可用区冗余存储您的数据。如果您选择 Amazon EFS 单区存储类,则您的数据将冗余存储在单个可用区内。此外,Amazon EFS 被设计为在指定年度内提供 99.999999999%(11 个 9)的持久性。

与任何环境一样,最佳做法是进行备份并构建防范意外删除的保护措施。对于 Amazon EFS 数据,最佳实践包括使用 Amazon Backup 进行正常运行且定期测试的备份。使用 Amazon EFS 单区存储类的文件系统默认配置为在创建文件系统时自动备份文件,除非您选择禁用此功能。有关更多信息,请参阅《Amazon Elastic File System 用户指南》中的 Backing up EFS file systems