AWS Step 函数 string/json 串联
AWS Step function string/json concatenation
我已经使用 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
我检查了输入和结果路径。他们有这个价值。我可以直接使用这个值作为参数。这工作正常。但是我不能用其他字符串格式化。
"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)",
我已经使用 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
我检查了输入和结果路径。他们有这个价值。我可以直接使用这个值作为参数。这工作正常。但是我不能用其他字符串格式化。
"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)",