Amazon sns 从StepFunction发布SNS消息时,如何将JSONPath传递给MessageAttribute?
在从Step函数执行SNS发布时,我尝试将值动态传递给MessageAttribute参数 参考: 根据文档中提供的示例,如果要从Step函数发布到SNS:Amazon sns 从StepFunction发布SNS消息时,如何将JSONPath传递给MessageAttribute?,amazon-sns,aws-step-functions,Amazon Sns,Aws Step Functions,在从Step函数执行SNS发布时,我尝试将值动态传递给MessageAttribute参数 参考: 根据文档中提供的示例,如果要从Step函数发布到SNS: { "StartAt": "Publish to SNS", "States": { "Publish to SNS": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "Topi
{
"StartAt": "Publish to SNS",
"States": {
"Publish to SNS": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:us-east-1:111222333444:myTopic",
"Message.$": "$.input.message",
"MessageAttributes": {
"my attribute no 1": {
"DataType": "String",
"StringValue": "value of my attribute no 1"
},
"my attribute no 2": {
"DataType": "String",
"StringValue": "value of my attribute no 2"
}
}
},
"End": true
}
}
}
现在假设我对状态机的输入如下:
"SNSDetails": {
"attribute1": "some value",
"attribute2": "some other value",
}
如何动态访问“我的属性1”的“StringValue”中的$.SNSDetails.attribute1,以及类似地访问“我的属性2”的StringValue中的$.SNSDetails.attribute2,而不是对其进行硬编码
最终,我希望状态机将“我的属性1”的值转换为“某个值”,将“我的属性2”的值转换为“某个其他值”
提前感谢。您可以通过将
$
附加到StringValue
属性名称来执行此操作:这将指示引擎将属性值作为JSON路径进行评估
给定此输入有效载荷:
{
"input": {
"message": "Hello world"
},
"SNSDetails": {
"attribute1": "some value",
"attribute2": "some other value",
}
}
…此步骤的功能代码为:
{
"StartAt": "Publish to SNS",
"States": {
"Publish to SNS": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:us-east-1:111222333444:myTopic",
"Message.$": "$.input.message",
"MessageAttributes": {
"my attribute no 1": {
"DataType": "String",
"StringValue.$": "$.SNSDetails.attribute1"
},
"my attribute no 2": {
"DataType": "String",
"StringValue.$": "$.SNSDetails.attribute2"
}
}
},
"End": true
}
}
}
…它将被正确地解决
您可以在AWS控制台(步骤功能)上的执行事件历史记录(TaskScheduled详细信息)中轻松检查结果