我正在尝试自动引导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群集控制台中。
答案 0 :(得分:0)
假设您使用的是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个空格缩进。