我一直在网络搜索这个答案。从本质上讲,我们使用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