1

我正在使用Amazon Elastic Beanstalk運行nodejs網頁。我只想將通知從AWS SNS發送到此網頁並實時捕獲它們。所以,當我發佈到HTTP端點時,沒有任何反應,我不知道如何獲得通知。如何確認訂閱並獲取HTTP端點的SNS通知?

作爲Http端點,我設置了我的AWS Elastic-Beanstalk http地址。

我正在閱讀亞馬遜文檔,但無處可以找到如何在http端點處捕獲一次sns消息。

請任何幫助將非常感激。謝謝。

回答

0

有3種消息與SNS。訂閱,取消訂閱和通知。在您正確處理訂閱消息之前,您將不會收到任何通知消息。這涉及到在收到訂閱請求時向AWS提出API請求。

在這種情況下,調用ConfirmSubscription:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#confirmSubscription-property

一旦你這樣做,那麼你將開始接收通知消息,你可以處理那些爲你的代碼允許。

+0

感謝您的回覆。問題是,當我從AWS SNS發佈時,我沒有收到scbscribe消息,因此沒有收到我的http端點中的令牌,也沒有收到任何其他POST內容。這個令牌是需要確認的,但是我沒有收到處理訂閱確認所需的POST「證書」。 –

+0

如果您嘗試在瀏覽器中訪問您的端點,是否一切正常? – datasage

+0

事實上,我試圖在瀏覽器中訪問它,我使用nodejs express,我試圖通過在我的js中設置一個「server.on('request'...」事件來處理「訂閱消息」文件,但我仍然無法處理它並確認此訂閱。 –

0

訂閱您的終端後,Amazon SNS將向終端發送預訂確認消息。 你應該從認購確認信息檢索SubscribeURL價值,無論是SubscribeURL本身或將其提供給您訪問指定的位置,以便您可以手動訪問SubscribeURL,例如端點有碼,使用網絡瀏覽器。

直到訂閱已確認,亞馬遜SNS纔會將消息發送到端點。

您可以使用Amazon SNS控制檯驗證訂閱是否已確認:訂閱ID將顯示訂閱的ARN,而不是您在第一次添加訂閱時看到的PendingConfirmation值。

1

當您給HTTP/HTTPS端點並從aws控制檯創建訂閱時,會發生什麼情況是,Amazon向該端點發送訂閱消息。現在這是一個休息電話,您的應用程序必須爲此端點提供一個處理程序,否則您會錯過捕獲此訂閱消息。您的處理程序傳遞的httpRequest對象需要訪問它的SNSMsgTypeHdr頭字段。這個值將是「SubscriptionConfirmation」。您需要先捕獲此特定消息,然後獲取訂閱網址。您可以在應用程序本身處理它,也可以將其打印出來,然後手動訪問該URL以進行訂閱。理想情況下,我會建議訂閱相同的主題,與您的郵件ID相同,以便每次您的應用獲得推送的消息時,您的郵件ID也會獲得該消息(儘管令牌會有所不同),但至少您會確保該消息被推送到您的端點。您需要做的就是繼續處理您的應用,然後根據您的需求處理該端點處的消息。

相關問題