Sha*_*ish 7 amazon-web-services aws-lambda aws-api-gateway
当 lambda 函数的名称作为阶段变量出现时,我将 AWS API Gateway 与代理 Lambda 一起使用。这意味着我有一个 API 集成,它根据部署的阶段连接到适当的 lambda。请参阅此处的总体思路:
当我测试我的一个阶段(称为:“暂存”)时,一切正常,但在测试另一个阶段(“生产”)时,我收到错误“由于配置错误执行失败:Lambda 函数的权限无效”。
我已经测试和验证的事情:
1. 当从 Lambda 仪表板测试时,应该由 API 调用的两个 lambda 都运行良好,并且符合预期。
2. 我已经确定(很多次)我已经允许 API 网关调用我的 lambda 函数(即执行“aws lambda add-permission...”)。之后我多次验证了该策略(即执行了“aws lambda get-policy...”)。
知道我还能检查什么吗?我可能在这里忘记了什么?谢谢。
我有同样有趣的问题。当您创建 API 时,您可能在创建之前不小心输入了 lambda 函数的名称。创建 lambda 后,名称将正确显示,但不会连接或授予权限。
尝试:
在阶段变量中指定 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
Run Code Online (Sandbox Code Playgroud)
(您需要替换此语句中的区域、您的 lambda 函数名称和您的帐号,以及 api-gateway ARN。)
找不到原因,但找到了解决问题的解决方法。我没有使用 $stageVariables 作为 Lambda 函数名称,而是明确地一一写入了我将使用的 Lambda 函数的名称。这样,AWS 将自动向 Lambda 函数授予权限(对于您显式写入的每个函数)。之后,您可以将集成编辑回使用阶段变量。
归档时间: |
|
查看次数: |
8189 次 |
最近记录: |