json - AWS Step 函数字符串/json 连接

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

我已经使用 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
}
保存此状态机时,它给了我以下错误消息:

The value for the field 'Subject.$' must be a valid JSON Path


我检查了输入和结果路径。他们有这个值(value)。我可以直接使用这个值作为参数。这工作正常。但我不能用其他字符串格式化。
"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 - AWS Step 函数字符串/json 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64628131/

相关文章:

json - ExtJS Grid 不加载数据

amazon-web-services - 使用 BitBucket 管道在拉取请求合并时构建 Maven 项目

amazon-web-services - 如何从 AWS::Serverless::Function (SAM) 输出 api 资源 arns?

amazon-web-services - AWS Step Function 更新等待状态

amazon-web-services - 如何通过 CloudFormation 将 Api Gateway 与 Step Functions 集成

python - 如何使用 Requests 和 JSON 打印变量

php - 推进ORM:将具有外键关系的通用模型对象完全递归合并,以进行JSON序列化

javascript - 在 JQuery 中解析 JSON 文件

amazon-web-services - 亚马逊产品 API - 寻找基本概述和信息

amazon-web-services - Step Functions AWS SAM CLI 本地连接被拒绝错误