Amazon SNS 原始消息传输 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon SNS 原始消息传输

为避免使 Amazon Kinesis Data FirehoseAmazon SQSHTTP/S 终端节点处理 JSON 格式的消息,Amazon SNS 允许原始消息传输:

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

  • 当您为 HTTP/S 终端节点启用原始消息传递时,其值设置为 x-amz-sns-rawdelivery 的 HTTP 标头 true 将添加到消息中,指示该消息已发布而没有 JSON 格式。

要使用 Amazon 开发工具包启用原始消息传输,您必须使用 SetSubscriptionAttribute API 操作并将 RawMessageDelivery 属性的值设置为 true

利用 Amazon Web Services Management Console实现原始消息传输

  1. 登录 Amazon SNS 控制台

  2. 在导航面板上,选择主题

  3. Topics(主题)页面上,选择一个订阅了 Kinesis Data Firehose、Amazon SQS 或 HTTP/S 终端节点的主题。

  4. 我的主题页上的订阅部分中,选择一个订阅,然后选择编辑

  5. Edit EXAMPLE1-23bc-4567-d890-ef12g3hij456 (编辑示例1-23bc-4567-d890-ef12g3hij456) 页中,在详细信息部分选择 Enable raw message delivery (启用原始消息传输)

  6. 选择保存更改

消息格式示例

在以下示例中,同一消息将发送到同一 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.