【问题标题】:AWS Step function string/json concatenationAWS Step 函数字符串/json 连接
【发布时间】:2024-05-20 02:10:02
【问题描述】:

我已经使用 AWS Step 功能编排了一条数据管道。 在最后一个状态下,我想发送自定义通知。我正在使用内部函数 States.Format 来格式化我的消息和主题。它适用于 Context 对象元素。在这里,我在 Message 参数中进行了测试。 但它不适用于输入 JSON。这是我的输入 JSON { “工作参数”:{ "pipe-line-name":"我的管道名", "other-keys":"其他值" } }

 "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 并将 - 替换为 _: ``` "Subject.$": "States.Format('[INFO] {} 成功完成!', $.job_param .pipe_line_name)", ```

标签: json amazon-web-services aws-step-functions


【解决方案1】:

如果您想在 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)", 

【讨论】:

  • 感谢Poorya,在我的情况下,将 - 转换为 _ 是不可能的。但是 $['job-param']['pipe-line-name'] 按预期工作。
最近更新 更多