2016-03-04 21 views
1

以下是使用AWS Java API複製的步驟: 1.創建Nodejs Lambda函數 2.創建SNS主題 3.訂閱SNS使用ARN創建的lambda函數的主題AWS SNS對lambda的引用不會使用Java API自動創建事件源

現在,如果我們轉到Lambda函數並查看「事件源」選項卡,我們不會將SNS主題列爲事件源。所以SNS根本不觸發Lambda函數。看起來像一個AWS問題給我。

P.S:用於重現上述問題的AWS用戶密鑰具有一攬子訪問(管理策略)附加。所以它看起來不像權限問題。如果我通過AWS Console重複上述步驟,事件源會正確添加到Lambda函數中。

有沒有人遇到過這個問題?如何解決這個問題?或任何解決方法。

回答

1

您需要添加SNS的權限才能調用Lambda。你可以通過撥打AddPermission Function來做到這一點。

背景:Lambda SNS使用Push Model來調用Lambda。這意味着SNS直接調用您的lambda函數(類似於您從Java SDK調用invokeFunction)。 lambda IAM權限模型要求明確允許每個調用者調用該函數。

這不同於Lambda Kinesis事件源,它使用Pull Model(lambda函數運行,然後從Kinesis Stream中拉出記錄)。

+0

謝謝瑞恩。是的,這是真的。我後來通過他們的開發者指南瀏覽了一遍。顯然,當我們從AWS控制檯創建lambda函數時,我們不需要執行此步驟。它在幕後進行。 – infinity

相關問題