当 lambda 函数的名称作为阶段变量出现时,我将 AWS API Gateway 与代理 Lambda 一起使用。这意味着我有一个 API 集成,它根据部署的阶段连接到适当的 lambda。
请参阅此处的总体思路:
当我测试我的一个阶段(称为:“暂存”)时,一切正常,但在测试另一个阶段(“生产”)时,我收到错误“由于配置错误执行失败:Lambda 函数的权限无效”。
我已经测试和验证的事情:
1. 当从 Lambda 仪表板进行测试时,应由 API 调用的两个 lambda 都运行良好并符合预期。
2. 我已经确定(多次)我已经允许 API 网关调用我的 lambda 函数(即执行“aws lambda add-permission...”)。之后我多次验证了该策略(即执行了“aws lambda get-policy...”)。
知道我还能检查什么吗?我可能在这里忘记了什么?
谢谢。
最佳答案
在阶段变量中指定 Lambda 函数时,不会自动创建调用 Lambda 函数的权限。您需要手动执行此操作:
aws lambda add-permission --function-name arn:aws:lambda:eu-west-1:111111111111:function:some-function:default --source-arn arn:aws:execute-api:eu-west-1:111111111111:xxxxxxxxxx/* --principal apigateway.amazonaws.com --statement-id 88b42004-f504-44d5-9adf-d027ee65a890 --action lambda:InvokeFunction
(您需要替换此语句中的区域、您的 lambda 函数名称和您的帐号,以及 api-gateway ARN。)
关于amazon-web-services - 带有代理 Lambda : Invalid permissions on Lambda function 的 AWS API 网关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40704994/