使用AWS CLI创建Step Function时遇InvalidDefinition错误求助
问题原因及解决方法
问题根源
AWS CLI的--definition参数要求传入完整的JSON字符串内容,但你直接传入了本地文件路径.\\CriarContaFaturamento-PrimeiraEtapa.asl.json。CLI会把这个路径字符串当作JSON来解析,而路径里的.属于非法JSON字符,因此触发InvalidDefinition错误。
解决方法
以下是两种可靠的解决方式,适配PowerShell和CMD环境:
方式1:CLI内置文件读取语法(通用)
AWS CLI支持用@前缀加文件路径的写法,自动读取文件内的JSON内容作为参数值,无需额外终端命令:
aws stepfunctions create-state-machine --name 'firstStep' --definition @.\CriarContaFaturamento-PrimeiraEtapa.asl.json --role-arn arn:aws:iam::xxxxxxxxxxxxx:role/aws-stepfunctions-xxxxxxx-dev-default --profile xxx --region us-east-1
方式2:终端原生命令读取文件内容
PowerShell环境
用Get-Content读取文件并通过-Raw参数保证输出为完整单行字符串:
aws stepfunctions create-state-machine --name 'firstStep' --definition (Get-Content .\CriarContaFaturamento-PrimeiraEtapa.asl.json -Raw) --role-arn arn:aws:iam::xxxxxxxxxxxxx:role/aws-stepfunctions-xxxxxxx-dev-default --profile xxx --region us-east-1
CMD环境
直接使用@前缀语法(与方式1一致)即可,无需额外调整。
额外检查步骤
在执行创建命令前,建议先验证JSON文件的格式合法性:
- 安装
jq工具后,执行以下命令检查:
jq . .\CriarContaFaturamento-PrimeiraEtapa.asl.json
如果JSON格式存在语法错误,jq会直接定位错误位置,修正后再重新执行创建命令。
内容的提问来源于stack exchange,提问作者Luis Felipe Gongora Garcia
相关产品推荐
相关产品推荐

