2016-11-22 31 views
1
  1. 我創建了SNS話題
  2. 我創建API網關端點調用lambda函數
  3. 我創建話題HTTPS訂閱指向API網關端點

問題:AUTH = none時一切正常,但當啓用AUTH = AWS_IAM時,預訂和消息都不會傳遞到我的lambda。它們也不會顯示在Lambda或Gateway網關的Cloudwatch日誌中,因爲它通常是驗證錯誤的情況。發佈SNS消息AWS_IAM驗證API網關端點

問題:

  • 什麼是通過HTTPS端點交付給AWS_IAM所以它不會允許它的身份(我的第一個想法是中繼SNS海報令牌,但它似乎並不如此)
  • 我找不到任何方式將HTTPS端點與任何身份關聯,有沒有辦法?
  • 有很多關於將SNS交付給SQS或通往SNS的網關的信息,但找不到有關實現我所做的任何信息。
  • 有什麼方法可以調試AWS_IAM認證問題嗎?文檔我已經看到建議「檢查特權」,這是我已經做了很多小時,但我沒有更多的想法。

我很樂意聽到您的任何想法,謝謝。

+0

你是如何訂閱API網關端點到SNS主題的......我已閱讀文檔(http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html#SendMessageToHttp.prepare)但並不瞭解太多。 –

+0

與將消息發佈到任何HTTPS端點的方式相同。您只需添加額外的代碼以確認基於event.Type的訂閱,那麼您需要觸發GET event.SubscribeURL。對不起,您的評論錯過了。 – shd

回答

0

正如你可以在文檔中看到,SNS只能做基本/摘要驗證http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html

有在有關驗證消息的有效性的文檔一節但這是代碼你不得不寫或者從後端的其中一個SNS SDK提取。不幸的是,真的沒有辦法讓SNS通過AWS SigV4簽署請求。

0

爲什麼不讓Lambda函數直接訂閱SNS主題(無需通過API網關)?

這應該是簡單的:https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html

+0

這絕對是一種有效的方法,背後的想法是爲任何類型的客戶端(不一定知道aws)開放休息API。不幸的是,在這個階段我不能改變這個設計。 – shd

+1

再次閱讀SNS的文檔之後:https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html我嚴重懷疑SNS可以將IAM認證的HTTPS POST請求發送給API網關端點。文檔僅討論基本和摘要認證,但IAM是不同的。另一個指針是,沒有辦法爲SNS POST配置主體。 (另外,如果「客戶端」/發行商是SNS,則通過API網關會產生不必要的額外成本。) – Digitalkapitaen

0

下面是完整的鏈接,這將幫助您解決身份認證問題。 https://aws.amazon.com/premiumsupport/knowledge-center/iam-authentication-api-gateway/

如果這是「檢查權限」問題,那麼您的IAM用戶沒有任何足夠的資源訪問權限來進行任何更改。

+0

我已經看到我的API的鏈接和其他部分工作正常。唯一的問題是,SNS HTTPS訂閱不會轉發發送SNS消息的用戶的憑據。換句話說,我不知道我的用戶是什麼,或者我如何將用戶分配給HTTPS訂閱。 – shd