簡體   English   中英

將AWS S3事件轉發到SQS最終會變成與從S3到SNS到SQS不同的消息嗎?

[英]Will AWS S3 event forwarding to SQS will end up being a different message than S3 to SNS to SQS?

我正在使用Splunk技術插件,該插件將從SQS隊列中提取消息。 盡管TA建議使用S3轉發到SNS並訂閱了SQS,但是S3也有可能直接轉發到SQS。

SNS會對S3發送的內容進行任何更改嗎? 還是對SQS完全透明的傳輸方法?

是的,默認情況下,S3→SQS和S3→SNS→SQS將在SQS消息主體內產生兩種不同的數據結構/格式。

這是因為SNS訂閱會為每個傳遞的消息提供元數據 -SNS MessageId ,驗證真實性的Signature ,SNS最初接受消息的Timestamp和其他屬性。 原始消息在此外部JSON結構的Message屬性內被編碼為JSON字符串。

因此,使用直接SQS,您可以使用(偽代碼)提取S3事件...

s3event = JSON.parse(sqsbody)

...但是從SNS到SQS ...

s3event = JSON.parse(JSON.parse(sqsbody).Message)

您可以禁用其他結構,並通過對SNS主題的SQS訂閱啟用原始消息傳遞來使SNS僅發送原始有效負載。

https://docs.aws.amazon.com/sns/latest/dg/sns-large-payload-raw-message-delivery.html

啟用原始消息傳遞后,S3→SQS和S3→SNS→SQS的內容將相同。

原始消息傳遞的不利之處在於,原始消息傳遞會丟失潛在有用的故障排除信息,例如SNS消息ID和SNS發出的時間戳。

另一方面,如果接收服務(SQS使用者)假定消息總是通過SNS來發送,並希望在SQS消息正文中找到SNS數據結構,則直接發送S3→SQS將導致使用者發現SQS的郵件正文與預期不符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM