用于挂载EFS存储的ECS容器实例的引导用户数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于挂载EFS存储的ECS容器实例的引导用户数据相关的知识,希望对你有一定的参考价值。

我正在尝试自动引导ECS容器实例,以便每次启动实例时,它都会使用EFS存储装入实例。

我去了我的集群的Cloud-formation堆栈,并尝试在更新堆栈时将我的引导脚本附加到用户数据中。以下脚本已经存在:

#!/bin/bashecho ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;

Attempt1 Bootstrap脚本(我插入了用于手动安装的命令):

#!/bin/bashecho ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;sudo yum install -y amazon-efs-utils;cd /home/ec2-user/;mkdir efs;sudo mount -t efs fs-456665f:/ efs;

Attempt2 Bootstrap脚本(参考文档AWS Documentation添加)

#!/bin/bashecho ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;  #cloud-config repo_update: true repo_upgrade: all  packages: - amazon-efs-utils  runcmd: - file_system_id_01=fs-456665f - efs_directory=/home/ec2-user/efs  - mkdir -p ${efs_directory} - echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab - mount -a -t efs defaults

登录到实例后,两次尝试都没有将EFS安装到实例中。现在,容器实例未显示在ECS群集控制台中。

答案

假设您使用的是YAML CloudFormation模板,我看到的唯一问题是该语句应该是多行,例如:

  UserData:
    "Fn::Base64": !Sub |
      #!/bin/bash
      echo ECS_CLUSTER=pidetodo-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
      sudo yum install -y amazon-efs-utils
      mkdir /home/ec2-user/efs
      sudo mount -t efs fs-456665f:/ /home/ec2-user/efs 

这应该足够了,我不确定将bash脚本与cloud-init语句一起使用。我建议首先使用EFS文件系统信息填充/ etc / fstab文件,然后在AWS文档提及时尝试mount。

记住YAML中的2个空格缩进。

以上是关于用于挂载EFS存储的ECS容器实例的引导用户数据的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 AWS ECS docker 容器上挂载 EFS 吗?

ECS Fargate 上的 EFS 挂载 - 非 root 用户的读/写权限被拒绝

ECS 中的 EFS 挂载“无法解决”

将 EFS 接入点挂载到 ECS 卷时出现问题

AWS EC2 用户数据 - 如何调试失败的 EFS 挂载失败

在 ECS 中附加卷 EFS