首页 > 解决方案 > Localstack 和 AWS SQS 接收带有 boto3 的消息返回不同的消息格式

问题描述

我遇到了一个问题(使用 boto3、python 和 localstack),其中 localstack 和 AWS 的消息格式之间的消息格式不同。我想知道我是否忽略了某些东西,我真的更愿意避免为我的 SQS 消费者使用两组不同的消息解析逻辑。

这是我如何发布到我的 SNS 主题,然后将消息推送到 SQS 队列

# Publish a simple message to the specified SNS topic
response = sns.publish(
    TopicArn=cfg.aws['sns_topic'],    
    Message='tacoPurchased',
    MessageAttributes = {
        'shell_type': {
            'DataType': 'String',
            'StringValue': 'soft'
        },
        'cheese': {
            'DataType': 'String',
            'StringValue': 'False'
        },
        'base': {
            'DataType': 'String',
            'StringValue': 'pork'
        },
        'extras': {
            'DataType': 'String',
            'StringValue': 'lettuce, cream_cheese'
        }
    }
)

这是接收消息与 sqs 队列不同的方式

亚马逊 SQS:


{u'Body': 'tacoPurchased', u'ReceiptHandle': 'AQEBquQzZY/tjknW3wgwH1yaJgMEbzDY8u+IsUYKpcSZ2lBzESfqfSkFuT6v9lMgiKH8YrtLdmADPL1cSKaCjDzWK9YTlHr6xvL1ZgWa8/vR+8s/+NaeuwdM6/Z3JkIPxkTKsws132M3za3KC0XfoabbYbp9EpUpFGlcZhacY1Fv/SLNw+LjiThcGC3fQD1qCQX7Dmq1+HrVhw4lFPC+SFX9yIN7/rcAe1rW+rQHubW4a1idPEv1FY8RzuDgwmMa3t4dF0KaAa3pZuzC9uOBh5c2Rj4KU5ExznUTqNcA8JZfuaPpBx+T4CZI0c+KaclyOrDXKJitGVwsxx1HKr5WCu8F06g0GTHn5eF0obfE0AgD++DlBzjs0ZAJM5Frv5Gp82LP5SdRjZUFKPTfa9E8pzU3mg==', u'MD5OfBody': '73c55f302c823ea1e6ec824b3b95eb7b', u'MD5OfMessageAttributes': 'e109406844f754d7b957d35f12993e7a', u'MessageId': 'fd405f0c-aa3e-44da-9dc2-d0e9edb8b55f', u'Attributes': {'SentTimestamp': '1574365120477'}, u'MessageAttributes': {'cheese': {u'DataType': 'String', u'StringValue': 'False'}, 'base': {u'DataType': 'String', u'StringValue': 'pork'}, 'shell_type': {u'DataType': 'String', u'StringValue': 'soft'}, 'extras': {u'DataType': 'String', u'StringValue': 'lettuce, cream_cheese'}}}

本地堆栈 SQS:

{u'Body': '{"MessageId": "d23e7da9-f171-48b7-8689-ec3932d32b1d", "Type": "Notification", "Timestamp": "2019-11-21T20:00:39.036078Z", "Message": "tacoPurchased", "TopicArn": "arn:aws:sns:us-east-1:000000000000:reggora-topic", "MessageAttributes": {"cheese": {"Type": "String", "Value": "False"}, "base": {"Type": "String", "Value": "pork"}, "extras": {"Type": "String", "Value": "lettuce, cream_cheese"}, "shell_type": {"Type": "String", "Value": "soft"}}}', u'Attributes': {'SentTimestamp': '1574366439045'}, u'ReceiptHandle': '297122ad-fb97-4677-bbe5-46e35e0d1985#cb8a4098-7d19-4564-b824-99ca73c89e2e', u'MD5OfBody': '65046a5bd2e45d668e6c8be71cf84b47', u'MessageId': '297122ad-fb97-4677-bbe5-46e35e0d1985'}

标签: pythonamazon-web-servicesboto3amazon-sqslocalstack

解决方案


推荐阅读