更新AWS ECS服务并启用Execute Command,同时保留容器数据
解决ECS容器数据保留与Execute Command启用问题
一、不丢失数据启用Execute Command
- 先确认容器数据存储方式:如果数据存在绑定的EBS卷/EFS文件系统中,直接更新服务启用Execute Command不会丢失数据;如果是容器本地临时存储,先完成临时备份再操作。
- 具体操作步骤:
- 登录ECS控制台,定位到目标服务,进入「服务配置编辑」界面
- 在「任务定义」模块,选择更新任务定义(若当前任务定义未开启Execute Command)
- 在任务定义的容器配置项中,找到「Execute Command」选项并勾选启用,同时确保任务关联的IAM角色已附加
AmazonECSExecuteCommandRolePolicy权限 - 保存更新后的任务定义,回到服务配置页面选择「更新服务」,采用默认滚动更新策略(保证容器逐步替换,避免服务中断)
- 服务更新完成后,可通过ECS控制台或AWS CLI执行命令进入容器:
aws ecs execute-command --cluster <集群名称> --task <任务ID> --container <容器名称> --command "/bin/bash"
二、无需启用Execute Command找回容器数据的方法
- 若使用持久化存储(EBS/EFS):
将存储卷挂载到临时EC2实例或新的ECS任务中,直接读取并导出数据。例如创建临时EC2实例,挂载对应EBS卷后,通过SCP工具将数据下载到本地。 - 若为容器本地存储:
- 停止目标任务,但不要删除任务(防止容器本地存储被清理)
- 创建新的任务定义,添加临时持久化卷(如EBS卷)
- 启动临时任务,将原任务的容器数据目录挂载到临时卷,执行数据复制操作
- 通过临时持久化卷访问并导出数据
内容的提问来源于stack exchange,提问作者momo668
相关产品推荐
相关产品推荐

