You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AWS CLI更新ECS Task Definition时JSON解析报错如何解决

根因说明

  • AWS CLI报错是shell执行时对未加双引号的变量做了分词处理,JSON中的空格、换行被拆分,AWS CLI仅收到开头的{字符,无法完成JSON解析
  • VSCode调试时长变量显示不全是默认的长文本截断机制,不属于bug,变量实际存储的内容完整,不影响执行

脚本修复

你原有脚本存在隐藏缺陷:仅提取容器定义注册新任务,会丢失原有任务的执行角色、CPU/内存、网络模式等配置,建议用如下完整修改逻辑:

# 拉取原有任务定义,过滤掉注册时不需要的系统生成元字段
TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition $TASKDEFINITION_ARN --query 'taskDefinition | {family: .family, networkMode: .networkMode, executionRoleArn: .executionRoleArn, taskRoleArn: .taskRoleArn, cpu: .cpu, memory: .memory, containerDefinitions: .containerDefinitions, requiresCompatibilities: .requiresCompatibilities, runtimePlatform: .runtimePlatform}' --output json)

# 直接修改对应环境变量
UPDATED_TASK_DEF=$(echo "$TASK_DEFINITION" | jq '.containerDefinitions[0].environment |= map(if .name == "ES_PORT_9200_TCP_ADDR" then .value = "vpc-kkslke-shared-3-abcdkalssdfy.us-east-1.es.amazonaws.com" else . end)')

# 注册新任务定义,变量加双引号避免分词
aws ecs register-task-definition --cli-input-json "$UPDATED_TASK_DEF"

如果要保留你原有拆分存储容器定义的逻辑,仅需修改最后一行的传参方式,二选一即可:

  • 直接读本地文件:aws ecs register-task-definition --family $FAMILY_NAME --container-definitions file://container-definition.json
  • 变量加双引号避免分词:aws ecs register-task-definition --family $FAMILY_NAME --container-definitions "$CONTAINER_DEF"

VSCode显示调整

如需调试时查看完整长变量内容,打开VSCode设置,搜索debug.maxStringLength,将默认的1024调整为更大的数值即可解除截断限制。

内容的提问来源于stack exchange,提问作者kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:36:04