ECS容器实例自动挂载EFS存储的Bootstrap脚本配置问题
自动挂载EFS到ECS容器实例的Bootstrap脚本配置
我最近在折腾让ECS容器实例每次启动时自动挂载EFS存储,思路是通过更新集群的CloudFormation堆栈,把挂载EFS的Bootstrap脚本追加到用户数据里。目前我的用户数据里已经有这段基础脚本了:
#!/bin/bash echo ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config; echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
下面给你一套可以直接复用的追加方案,亲测有效:
首先,要实现EFS的自动挂载,需要在现有脚本后面添加NFS客户端安装、挂载点创建、手动挂载以及配置开机自动挂载的步骤。完整的用户数据脚本应该是这样的:
#!/bin/bash echo ECS_CLUSTER=flask-ecs >> /etc/ecs/ecs.config; echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config; # 安装EFS所需的NFS客户端工具 yum install -y nfs-utils # 创建EFS的挂载目录,路径可以根据你的需求调整 mkdir -p /mnt/efs # 挂载EFS文件系统,记得替换成你的EFS ID和所在区域 mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-xxxxxxx.efs.us-east-1.amazonaws.com:/ /mnt/efs # 将挂载配置写入fstab,确保实例重启后自动挂载 echo "fs-xxxxxxx.efs.us-east-1.amazonaws.com:/ /mnt/efs nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 0 0" >> /etc/fstab
关键注意点:
- 一定要把
fs-xxxxxxx替换成你实际的EFS文件系统ID,us-east-1换成你的EFS所在的AWS区域 - 确认ECS容器实例的IAM角色已经具备
elasticfilesystem:ClientMount和elasticfilesystem:ClientWrite这两个权限,不然挂载操作会因为权限不足失败 - 如果你不需要写入权限,也可以把权限调整为只读,但大部分场景下还是需要读写权限的
内容的提问来源于stack exchange,提问作者Chandim Sett
相关产品推荐
相关产品推荐

