我可以使用CLI找到这种格式
aws sns publish --topic-arn arn:aws:sns:us-west-2:111111111111:test
--message "Testing the CLI"
--subject "From the CLI" --message-attributes "{\"somename\":
{\"DataType\":\"String\",\"StringValue\":\"somevalue\"}}"
但我无法找到(或弄清楚)是如何从API网关上的集成请求中执行此操作。
我认为它需要作为集成请求的查询参数来完成,但语法与为SQS添加消息属性不同。我通过使用此示例中的参数命名符号来测试它:
MessageBody=This+is+a+test+message
MessageAttribute.1.Name=test_attribute_name_1
MessageAttribute.1.Value.StringValue=test_attribute_value_1
MessageAttribute.1.Value.DataType=String
我也尝试过:
MessageAttributes '{"store":{"DataType":"String","StringValue":"example_corp"}}'
到目前为止无法使其正常运行,我们非常感谢任何帮助。
答案 0 :(得分:5)
在对AWS文档进行深入研究后,我发现没有准确的文档将API网关资源方法中的SNS Publish MessageAttributes设置为URL查询字符串参数。
基于他们在这里给出的部分语法示例:here,然后我就能把它扔到它上面直到出现问题。
这是您需要使用的正确的点符号语法和参数:
MessageAttributes.entry.1.Name = "Attribute1"
MessageAttributes.entry.1.Value.DataType = 'String'
MessageAttributes.entry.1.Value.StringValue = 'Test'
Where"姓名"和" DataType"是必需的。
https://docs.aws.amazon.com/sns/latest/api/API_Publish.html
干杯!