本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SNS 原始消息交付
為了避免 Amazon 數據 FirehoseSQS,Amazon 和 HTTP/S 端點處理消息的JSON格式,Amazon SNS 允許原始消息交付:
-
當您為 Amazon 資料 Firehose 或 Amazon SQS 端點啟用原始訊息傳遞時,任何 Amazon SNS 中繼資料都會從已發佈的訊息中刪除,並依原狀傳送訊息。
-
當您啟用 HTTP /S 端點的原始郵件傳遞時,其值設定為的HTTP標頭
x-amz-sns-rawdelivery
會新增至郵件,表示郵件已發佈但未JSON格式化。true
-
當您啟用 HTTP /S 端點的原始郵件傳遞時,會傳遞郵件內文、用戶端 IP 和所需的標頭。當您指定訊息屬性時,系統不會傳送該訊息。
-
當您為 Firehose 端點啟用原始郵件傳遞時,會傳遞郵件內文。當您指定訊息屬性時,系統不會傳送該訊息。
若要使用啟用原始郵件傳遞 AWS SDK,您必須使用SetSubscriptionAttribute
API動作並將RawMessageDelivery
屬性值設定為true
。
使用 AWS Management Console啟用原始訊息交付
登錄到 Amazon 控SNS制台
。 -
在導覽面板上,選擇 Topics (主題)。
-
在「主題」頁面上,選擇訂閱 Firehose SQS、Amazon 或 HTTP /S 端點的主題。
-
在「」
MyTopic
頁面的「訂閱」區段中,選擇訂閱項目,然後選擇 「編輯」。 -
在編輯
EXAMPLE1-23bc-4567-d890-ef12g3hij456
頁面上的 [詳細資料] 區段中,選擇 [啟用原始郵件傳遞]。 -
選擇 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捨棄具有超過 10 個訊息屬性的訊息屬性,且已啟用原始訊息交付的 Amazon SQS 訂閱,並將其視為用戶端錯誤。