AWS步骤函数字符串/json连接

AWS步骤函数字符串/json连接,json,amazon-web-services,aws-step-functions,Json,Amazon Web Services,Aws Step Functions,我使用AWS Step函数编排了一条数据管线。 在最后一个状态中,我想发送一个自定义通知。我正在使用一个内在函数States.Format来格式化我的消息和主题。它适用于上下文对象元素。在这里,我已经在Message参数中测试了它。 但它不适用于输入JSON。这是我的输入JSON { “作业参数”:{ “管线名称”:“我的管线名称”,“其他键”:“其他值” } } "Success State": { "Type": "Task"

我使用AWS Step函数编排了一条数据管线。 在最后一个状态中,我想发送一个自定义通知。我正在使用一个内在函数States.Format来格式化我的消息和主题。它适用于上下文对象元素。在这里,我已经在Message参数中测试了它。 但它不适用于输入JSON。这是我的输入JSON { “作业参数”:{ “管线名称”:“我的管线名称”,“其他键”:“其他值” } }

 "Success State": {
  "Type": "Task",     
  "Resource": "arn:aws:states:::sns:publish",
  "Parameters": {    

  "Message.$": "States.Format('Execution Id:{}, completed successfully!', $$.Execution.Id)",
  "Subject.$": "States.Format('[INFO] {} completed successfully!', $.job-param.pipe-line-name)",

  "TopicArn": "arn:aws:sns:us-east-1:************:sns-topic"
  },
  "End": true
}
保存此状态机时,它会显示以下错误消息:

字段“Subject.$”的值必须是有效的JSON路径

我检查了输入和结果路径。他们有这个价值。我可以直接使用这个值作为参数。这很好用。但是我不能用其他字符串格式化

"Subject.$": "$.job-param.pipe-line-name"
另一种方法是调用lambda来定制和触发SNS。但我想避免这种情况

我可以请求一些建议来修复此错误吗


提前谢谢

如果您想在JSON中使用任何带有
-
的名称,那么您可以这样编写JSON路径:

"Subject.$": "States.Format('[INFO] {} completed successfully!', $['job-param']['pipe-line-name'])",
但是,如果您更改输入JSON并将
-
替换为
-
,会更容易:

"Subject.$": "States.Format('[INFO] {} completed successfully!', $.job_param.pipe_line_name)", 

更改您的输入JSON并将
-
替换为
:`Subject.$:“States.Format('[INFO]{}已成功完成!',$.job\u param.pipe\u line\u name)”,``谢谢Poorya,无法像我的情况那样将-转换为`。但是$['job-param']['pipe-line-name']按预期工作。