g_g*_*llz 5 json amazon-web-services amazon-sns python-3.x boto3
我试图将简单的JSON消息发送到boto3中的sns主题.但是,我在邮件的标记中不断收到_jsonparsefailure,我只收到默认值.这是我的代码:
mess = {'default': 'default', 'this': 'that'}
jmess = json.JSONEncoder().encode(mess)
response = self.boto_client.publish(
TopicArn=self.TopicArn,
MessageStructure='json',
Message=jmess
)
Run Code Online (Sandbox Code Playgroud)
我也试过json.dumps(),它产生相同的结果.
mess = {'default': 'default', 'this': 'that'}
jmess = json.dumps(mess)
response = self.boto_client.publish(
TopicArn=self.TopicArn,
MessageStructure='json',
Message=jmess
)
Run Code Online (Sandbox Code Playgroud)
我似乎遵循文档设置的所有准则,并且在运行脚本时我没有得到异常.有SQS队列订阅主题,我直接从控制台提取结果数据.
好的,我解决了.结果消息需要如下所示:
json.dumps({"default": "my default", "sqs": json.dumps({"this": "that"})})
Run Code Online (Sandbox Code Playgroud)
亚马逊在这方面有可怕的文件.希望这有助于下一个人.
编辑
如果将sqs队列设置为仅接收原始消息,也可以删除MessageStructure='json'和发送json.dumps({'this':'that'}).这只需通过控制台完成.
这是我修复它的方式:
message = {"record_id": "my_id", "name": "value"}
json_message = json.dumps({"default":json.dumps(message)})
sns_client.publish("topic_arn",Subject="test",MessageStructure="json",Message=json_message)
Run Code Online (Sandbox Code Playgroud)
SNS期望"默认"作为包含要发布的消息的密钥.
| 归档时间: |
|
| 查看次数: |
4474 次 |
| 最近记录: |