如何将常量字符串与JSONPath拼接?AWS Step Functions报错求助
解决AWS Step Functions中SNS消息拼接JSONPath的问题
你遇到的错误是因为Message.$字段要求值是合法的JSONPath表达式或者Step Functions支持的内置函数调用,而你直接把常量字符串和JSONPath混合写的方式不符合语法规范。
正确的实现方式:使用States.Format内置函数
Step Functions提供了States.Format函数,可以轻松实现常量字符串与JSONPath变量的拼接,语法类似常规的字符串格式化逻辑。
修改后的ASL定义如下:
"Notify Failure": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Message.$": "States.Format('A job submitted through Step Functions failed for document id {}', $.document_id)", "Subject": "Job failed", "TopicArn": "arn:aws:sns:us-west-2:xxxxxxx:xxxxxxxx" }, "End": true }
关键点说明:
States.Format的第一个参数是格式化模板字符串,用{}作为变量占位符- 第二个参数
$.document_id是从输入JSON中提取document_id属性的合法JSONPath - 整个表达式需要用单引号包裹字符串部分,确保ASL语法解析正确
这样修改后,状态机定义就能正常保存,执行时会自动把输入中的document_id值替换到占位符位置,生成你需要的通知消息。
内容的提问来源于stack exchange,提问作者LP13
相关产品推荐
相关产品推荐

