我一直在網絡搜索這個答案。從本質上講,我們使用Swagger旋轉了一個API,這很棒,並且效果很好,但是有一件事情是行不通的......當我們調用一個Endpoint時,我們得到一個500錯誤(這不是我們提供的這個500錯誤是來自AWS的錯誤)。錯誤狀態爲「由於配置錯誤導致執行失敗:Lambda函數的權限無效」(https://youtu.be/H4LM_jw5zzs < - 這是來自其他用戶的視頻,是我收到的錯誤)。如何授予API網關通過CloudFormation調用lambda函數的權限?
我已經走了許多ratholes,並且已經找到了答案......這涉及到使用AWS CLI,看起來有點像這樣:
aws lambda add-permission \
--function-name FUNCTION_NAME \
--statement-id STATEMENT_ID \
--action lambda:InvokeFunction \
--principal apigateway.amazonaws.com \
--source-arn "arn:aws:execute-api:us-east-1:ACCOUNT_ID:API_ID/*/METHOD/ENDPOINT"
這是偉大的,所有的,但我們使用CloudFormation旋轉一切,我們希望這是自動化的。有沒有更簡單的方法來解決這個問題? CloudFormation中是否有某些內容會給我們提供我們需要的資源策略?
我對此有點觸目驚心,但今天我一直在爲它工作幾個小時,這對我們的API版本有點阻礙,所以任何幫助都將不勝感激。 :)
難道我的回答可以幫助您?如果是這樣,你能接受並贊成嗎?謝謝! – kixorz
對於它的價值,您也可以通過AWS SDK來實現。我將它用於Go,所以它在這裏:http://docs.aws.amazon.com/sdk-for-go/api/service/lambda/#Lambda.AddPermission ...我看不到有什麼方法列出現有權限。所以我只是容忍我的部署工具中已經存在的錯誤。奇怪的。我的意思是我什至都沒有看到需要這個權限的任何東西,也沒有在任何導出的Swagger中。 – Tom