使用Lambda的亚马逊API网关提供了POST方法的权限错误

问题描述:

我一直在使用Apex组装和部署Lambda函数,并且通过AWS API网关使用GET方法的函数正在正常工作。使用Lambda的亚马逊API网关提供了POST方法的权限错误

我现在需要创建一个API来使用POST调用Lambda函数并传入一个JSON对象。要获取POST的基础工作,我创建了一个简单的lambda函数,只是做以下

console.log("!!!!!!! Received request"); 
callback(null, {data: "Success"}); 
return; 

当我打电话使用从API网关一个GET方法,这lambda函数和测试的API,它工作正常 - API网关在CloudWatch中的成功调用中记录“接收的请求”时,测试机制会提供“成功”消息。

然而,当我使用POST请求来调用API网关相同的lambda函数,我得到以下

“消息”:“内部服务器错误”

而且我也看到“执行失败,由于配置错误:对Lambda函数的权限无效“

所以我想知道的是,在通过POST方法调用该函数时,调用Lambda函数的角色是否需要任何其他特权。如果有的话,我需要分配给正在使用的角色的特权是什么?

谢谢, Sanjay。

如果要通过API网关级别调用POST方法,则必须部署该post方法。转到AWS API网关控制台。然后选择您的POST API名称,并在网格(屏幕)顶部找到名为Actions的下拉列表,其中有一个名为deploy的选项。你必须选择那么只有你的POST API才能工作。

+0

我这样做了,并部署了一遍,但得到了同样的错误。可以肯定的是,我不是在外部测试它(使用Postman等),但是,作为第一步,从API网关API定义控制台中对其进行测试。 –

API网关需要权限来调用您的Lambda函数。如果通过Web控制台配置API,则会提示您自动添加权限, Lambda函数未使用阶段变量指定。

因此,如果您使用像CloudFormation或Swagger导入的工具来创建或更新API,或者Lambda函数是通过stage变量指定的,则需要手动发出aws lambda add-permission命令来设置权限。

查看这些信息了解更多详情:

Lambda function -> Api Gateway stage variable permission manually

AWS API Gatewat with proxy Lambda: Invalid permissions on Lambda function