本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SNS 原始消息传输
为了避免让亚马逊 Data Firehose、Amazon SQS 和 HTTP/S 终端节点处理消息的 JSON 格式,亚马逊 SNS 允许发送原始消息:
-
当您为 Amazon Data Firehose 或 Amazon SQS 终端节点启用原始消息传输时,所有亚马逊 SNS 元数据都将从已发布的消息中去除,消息将按原样发送。
-
当您为 HTTP/S 终端节点启用原始消息传递时,其值设置为
true
的 HTTP 标头x-amz-sns-rawdelivery
将添加到消息中,指示该消息已发布而没有 JSON 格式。 当您为 HTTP/S 终端节点启用原始消息传输时,将传输消息正文、客户端 IP 和所需的标头。当您指定消息属性时,将不会发送它。
当您为 Firehose 端点启用原始消息传输时,消息正文将被传送。当您指定消息属性时,将不会发送它。
要使用 Amazon 开发工具包启用原始消息传输,您必须使用 SetSubscriptionAttribute
API 操作并将 RawMessageDelivery
属性的值设置为 true
。
利用 Amazon Web Services Management Console实现原始消息传输
登录 Amazon SNS 控制台
。 -
在导航面板上,选择 Topics(主题)。
-
在主题页面上,选择订阅了 Firehose、Amazon SQS 或 HTTP/S 终端节点的主题。
-
在该
MyTopic
页面的 “订阅” 部分中,选择订阅并选择 “编辑”。 -
在 Edit
EXAMPLE1-23bc-4567-d890-ef12g3hij456
(编辑示例1-23bc-4567-d890-ef12g3hij456) 页中,在详细信息部分选择 Enable raw message delivery (启用原始消息传输)。 -
选择 保存更改。
消息格式示例
在以下示例中,同一消息将发送到同一 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.