使用ecs-cli启动Fargate容器时如何配置enable_execute_command
解决方案
你可以通过以下两种方式实现需求:
方案1:服务创建后通过aws cli更新配置(最简便)
你之前更新失败是因为没有加强制新部署的参数,--enable-execute-command是服务级配置,不需要修改任务定义,执行以下命令即可开启:
aws ecs update-service --cluster ${cluster_name} --service ${service_name} \ --enable-execute-command \ --force-new-deployment
该命令会自动使用你当前的任务定义启动新的任务实例,新启动的所有Fargate容器都支持exec功能。
方案2:整合到启动脚本实现一键部署
如果不想每次创建服务都手动执行更新,可以把启动逻辑封装为shell脚本,示例如下:
# 原有ecs-cli配置与启动命令 ecs-cli configure --cluster ${cluster_name} --default-launch-type FARGATE --region ${AWS_REGION} --config-name ${config_name} ecs-cli compose --project-name ${service_name} service up # 自动开启exec功能 aws ecs update-service --cluster ${cluster_name} --service ${service_name} \ --enable-execute-command \ --force-new-deployment
前置依赖检查
开启功能前请确保你的ecsTaskExecutionRole已经添加了SSM会话管理所需的权限,权限示例如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }
验证方式
新任务启动完成后,执行以下命令确认配置已生效:
aws ecs describe-tasks --cluster ${cluster_name} --tasks <你的任务ARN> --query 'tasks[0].enableExecuteCommand'
返回true即可正常使用aws ecs execute-command进入容器执行命令。
内容的提问来源于stack exchange,提问作者Alice Heaton
相关产品推荐
相关产品推荐

