【问题标题】:Bootstrap User Data for ECS Container Instances for Mounting EFS storage用于挂载 EFS 存储的 ECS 容器实例的引导用户数据
【发布时间】:2021-01-18 18:05:27
【问题描述】:

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

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

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

尝试1 引导脚本(我插入了用于手动挂载的命令):

#!/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;

尝试2 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 集群控制台中。

【问题讨论】:

  • 您可以登录实例并请发布文件 /var/log/cloud-init-output.log 的日志要点吗?

标签: amazon-web-services amazon-ec2 amazon-ecs amazon-efs


【解决方案1】:

假设您使用的是 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 

这应该足够了,我不确定是否使用带有 cloud-init 语句的 bash 脚本。我建议先使用 EFS 文件系统信息填充 /etc/fstab 文件,然后按照 AWS 文档中的说明尝试挂载。

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

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 2017-07-11
    • 2018-08-05
    • 2022-07-07
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多