Amazon SNS 原始消息传送 - Amazon Simple Notification Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon SNS 原始消息传送

为了避免让 Amazon Data Firehose SQS、AmazonHTTP/S 端点处理消息的JSON格式,亚马逊SNS允许发送原始消息:

  • 当您为 Amazon Data Firehose 或亚马逊SQS终端节点启用原始消息传输时,将从已发布的消息中删除所有亚马逊SNS元数据,并按原样发送消息。

  • 当您为 HTTP /S 端点启用原始消息传送时,其值设置为的HTTP标头x-amz-sns-rawdelivery将添加到消息中,表示消息已在未JSON格式化的情况下发布。true

  • 当您为 HTTP /S 端点启用原始消息传输时,将传递消息正文、客户端 IP 和所需的标头。当您指定消息属性时,将不会发送它。

  • 当您为 Firehose 端点启用原始消息传输时,消息正文将被传送。当您指定消息属性时,将不会发送它。

要使用启用原始消息传送 AWS SDK,必须使用SetSubscriptionAttributeAPI操作并将RawMessageDelivery属性的值设置为true

利用 AWS Management Console实现原始消息传输

  1. 登录 Amazon SNS 控制台

  2. 在导航面板上,选择 Topics(主题)。

  3. 主题页面上,选择已订阅到 Firehose、A SQS mazon HTTP 或 /S 终端节点的主题。

  4. MyTopic 页面上,在 “订阅” 部分中,选择订阅并选择编辑

  5. 在 E dit 中 EXAMPLE1-23bc-4567-d890-ef12g3hij456页面上的 “详细信息” 部分中,选择 “启用原始消息传送”。

  6. 选择 Save changes(保存更改)

消息格式示例

在以下示例中,同一条消息被发送到同一 Amazon SQS 队列两次。唯一的区别是第一条消息禁用原始消息传输,第二条消息则启用该传输。

  • 原始消息传输已禁用

    { "Type": "Notification", "MessageId": "dc1e94d9-56c5-5e96-808d-cc7f68faa162", "TopicArn": "arn:aws:sns:us-east-2:111122223333:ExampleTopic1", "Subject": "TestSubject", "Message": "This is a test message.", "Timestamp": "2021-02-16T21:41:19.978Z", "SignatureVersion": "1", "Signature": "FMG5tlZhJNHLHUXvZgtZzlk24FzVa7oX0T4P03neeXw8ZEXZx6z35j2FOTuNYShn2h0bKNC/zLTnMyIxEzmi2X1shOBWsJHkrW2xkR58ABZF+4uWHEE73yDVR4SyYAikP9jstZzDRm+bcVs8+T0yaLiEGLrIIIL4esi1llhIkgErCuy5btPcWXBdio2fpCRD5x9oR6gmE/rd5O7lX1c1uvnv4r1Lkk4pqP2/iUfxFZva1xLSRvgyfm6D9hNklVyPfy+7TalMD0lzmJuOrExtnSIbZew3foxgx8GT+lbZkLd0ZdtdRJlIyPRP44eyq78sU0Eo/LsDr0Iak4ZDpg8dXg==", "SigningCertURL": "https://sns.us-east-2.amazonaws.com/SimpleNotificationService-010a507c1833636cd94bdb98bd93083a.pem", "UnsubscribeURL": "https://sns.us-east-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:111122223333:ExampleTopic1:e1039402-24e7-40a3-a0d4-797da162b297" }
  • 原始消息传输已启用

    This is a test message.

Amazon SQS 订阅的消息属性和原始消息传送

Amazon SNS 支持消息属性的传送,允许您提供有关消息的结构化元数据项,例如时间戳、地理空间数据、签名和标识符。对于启用了原始消息传送功能的 Amazon SQS 订阅,最多可以发送 10 个消息属性。要发送 10 个以上的消息属性,必须禁用 “原始消息传送”。但是,在启用原始消息传送的情况下,Amazon 会SNS丢弃定向到亚马逊SQS订阅的包含 10 个以上消息属性的消息,将其视为客户端错误。