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

使用AWS CLI更新Step Function时遭遇JSON解析错误求助

解决AWS Step Functions CLI更新时的JSON解析错误

我之前在Windows上用AWS CLI时也遇到过一模一样的JSON解析问题,咱们来拆解下问题出在哪以及怎么解决:

1. 核心问题:嵌套JSON的引号未正确处理

你提交的JSON文件里,definition字段的值本身是一个完整的JSON状态机定义,但你把它当成字符串放在外层JSON里时,内部的双引号没有转义,这直接导致JSON解析器无法正确识别结构——这就是报错里"无效控制字符"的根源(其实是解析器把未转义的双引号当成了外层JSON的结构分界)。

错误的写法

{ 
  "stateMachineArn": "arn:aws:states:us-west-2:xxxxx", 
  "definition": "{ "Comment": "A TEST example...", ... }", 
  "roleArn": "iam_role" 
}

正确的两种写法

写法一:直接嵌套JSON对象(推荐)

AWS CLI的--cli-input-json支持直接嵌套JSON结构,不需要把definition转成字符串,这样完全不用处理引号转义:

{
  "stateMachineArn": "arn:aws:states:us-west-2:xxxxx",
  "definition": {
    "Comment": "A TEST example of the Amazon States Language using Pass states",
    "StartAt": "Hello",
    "States": {
      "Hello": {
        "Type": "Pass",
        "Result": "Hello",
        "Next": "World"
      },
      "World": {
        "Type": "Pass",
        "Result": "World",
        "End": true
      }
    }
  },
  "roleArn": "arn:aws:iam::xxxxx:role/your-actual-role-name"
}

写法二:转义内部双引号(如果坚持用字符串格式)

如果你一定要把definition作为字符串传递,需要给内部所有双引号加上反斜杠转义:

{
  "stateMachineArn": "arn:aws:states:us-west-2:xxxxx",
  "definition": "{ \"Comment\": \"A TEST example of the Amazon States Language using Pass states\", \"StartAt\": \"Hello\", \"States\": { \"Hello\": { \"Type\": \"Pass\", \"Result\": \"Hello\", \"Next\": \"World\" }, \"World\": { \"Type\": \"Pass\", \"Result\": \"World\", \"End\": true } } }",
  "roleArn": "arn:aws:iam::xxxxx:role/your-actual-role-name"
}

2. 修复Windows路径的格式问题

在Windows系统中,CLI命令里的路径反斜杠\会被解析为转义字符,所以需要改成正斜杠/或者双反斜杠\\:

修正后的命令

# 写法一:用正斜杠
aws stepfunctions update-state-machine --cli-input-json file://C:/Users/nufardo/Desktop/test.json

# 写法二:用双反斜杠
aws stepfunctions update-state-machine --cli-input-json file://C:\\Users\\nufardo\\Desktop\\test.json

3. 提前验证JSON合法性(可选但推荐)

修改完JSON后,你可以用Windows自带的PowerShell快速验证格式是否正确:

Get-Content C:\Users\nufardo\Desktop\test.json | ConvertFrom-Json

如果命令执行后没有报错,且能正常输出JSON结构,说明格式没问题。

按照上面的步骤调整后,再执行AWS CLI命令应该就能成功更新你的状态机了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:17:44