我一直在使用Apex和函数部署和部署Lambda函数,我通过AWS API Gateway使用GET方法正常工作。
我现在需要创建一个API,使用POST调用Lambda函数并传入JSON对象。为了获得POST工作的基础知识,我创建了一个简单的Lambda函数,它只执行以下操作
dump(head) {
// i don't want the 'head' to be changed, so I use a reference instead.
node *p = head;
// loop each car + the locomotive until end is reached
while(*p != null)
{
// count the load
write p->value;
// inspect the next car
p = p->next;
}
}
当我使用API网关中的GET方法调用此Lambda函数并测试API时,它运行正常 - API网关测试机制提供“成功”消息,而在CloudWatch中成功调用中记录“已接收请求”。
但是,当我使用POST请求从API网关调用相同的Lambda函数时,我得到以下内容
“message”:“内部服务器错误”
我还看到“由于配置错误导致执行失败:对Lambda函数的权限无效”
所以我想知道,当通过POST方法调用该函数时,调用Lambda函数的角色是否需要任何其他特权。如果是这样,我需要为正在使用的角色分配什么权限?
谢谢, 桑杰。
答案 0 :(得分:0)
如果要通过API网关级别调用POST方法,则必须部署该post方法。转到AWS API Gateway控制台。然后选择你的POST API名称,在网格(屏幕)的顶部你会找到一个名为Actions的下拉列表,其中有一个名为deploy的选项。您必须选择只有POST API才能正常工作。
答案 1 :(得分:0)
API Gateway需要具有调用Lambda函数的权限。如果您通过Web控制台配置API,则会提示您自动添加权限,和未使用阶段变量指定Lambda函数。
因此,如果您使用CloudFormation或Swagger导入等工具来创建或更新API,或者使用阶段变量指定Lambda函数,那么您需要发出aws lambda add-permission
命令手动设置权限。
有关详细信息,请参阅这些帖子:
Lambda function -> Api Gateway stage variable permission manually
AWS API Gatewat with proxy Lambda: Invalid permissions on Lambda function