如何将 EFS 共享挂载到 AWS Fargate?

How can I mount an EFS share to AWS Fargate?

我有一个存储容器日志的 AWS EFS 共享。

我想将此 nfs 共享 (aws efs) 挂载到 AWS Fargate。可能吗?

任何支持文档link将不胜感激。

编辑:由于 April 2020 这个答案不准确。这是 Fargate 1.4.0 之前的情况。如果您使用的是早期版本的 Fargate,这仍然是相关的,否则请参阅更新的答案。

遗憾的是,目前无法将持久性存储与 AWS Fargate 一起使用,但是可以使用针对 AWS 容器服务 [2]

新推出的 public 路线图 [1] 来跟踪此功能的进展情况

您的用例似乎建议使用日志。您是否考虑过使用 AWSLogs 驱动程序 [3] 并将您的应用程序日志发送到 CloudWatch Logs?

[1] https://github.com/aws/containers-roadmap/projects/1

[2]https://github.com/aws/containers-roadmap/issues/53

[3]https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html

现已提供对 Fargate 的 EFS 支持!

https://aws.amazon.com/about-aws/whats-new/2020/04/amazon-ecs-aws-fargate-support-amazon-efs-filesystems-generally-available/

你可以做到这一点since April 2020!这有点棘手,但有效。

我 运行 遇到的最大问题是您需要将“平台版本”设置为 1.4.0 - 它默认为“最新”,即 1.3.0。

在您的容器定义中,您需要定义一个 volume 和一个 mountpoint,您希望将 EFS 共享安装在容器内:

音量:

     "volumes": [
        {
          "efsVolumeConfiguration": {
            "transitEncryptionPort": null,
            "fileSystemId": "fs-xxxxxxx",
            "authorizationConfig": {
              "iam": "DISABLED",
              "accessPointId": "fsap-xxxxxxxx"
            },
            "transitEncryption": "ENABLED",
            "rootDirectory": "/"
          },
          "name": "efs volume name",
          "host": null,
          "dockerVolumeConfiguration": null
        }
      ]

在容器中装载卷:

 "mountPoints": [
         {
          "readOnly": null,
          "containerPath": "/opt/your-app",
          "sourceVolume": "efs volume name"
          }

这些帖子对我有帮助,尽管它们缺少一些细节:

Tutorial: Using Amazon EFS file systems with Amazon ECS

EFSVolumeConfiguration

wow 需要平台版本为 1.4.0,正如@TheFiddlerWins 建议的那样