【问题标题】:AWS API Gateway with proxy Lambda: Invalid permissions on Lambda function具有代理 Lambda 的 AWS API Gateway:Lambda 函数的权限无效
【发布时间】:2017-04-03 22:51:17
【问题描述】:

当 lambda 函数的名称作为阶段变量出现时,我正在使用带有代理 Lambda 的 AWS API Gateway。这意味着我有一个 API 集成,它根据部署阶段连接到适当的 lambda。 请参阅此处的总体思路:

当我测试我的一个阶段(称为:“staging”)时,一切正常,但在测试另一个阶段(“production”)时,我收到错误“由于配置错误导致执行失败:Lambda 函数的权限无效” .

我已经测试和验证的事情:
1. 应该由 API 调用的两个 lambda 都运行良好,并且在从 Lambda 仪表板进行测试时符合预期。
2. 我已经确定(很多次)我已经允许 API 网关调用我的 lambda 函数(即执行“aws lambda add-permission...”)。之后我多次验证了该策略(即执行“aws lambda get-policy...”)。

知道我还能检查什么吗?我可能在这里忘记了什么? 谢谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-api-gateway


    【解决方案1】:

    在阶段变量中指定 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。)

    【讨论】:

    • 感谢 Digitalkapitaen 的回复,但正如我在最初的问题中所说 - “我已经确保(很多次)我已经允许 API 网关调用我的 lambda 函数(即执行"aws lambda add-permission...")".
    • 我相信您这样做是非常小心的。但是,您自己对该问题的回答显然表明权限设置不正确。我认为将此答案标记为无用是有问题的,因为设置正确的权限是您在问题中陈述的问题的解决方案。
    • 问题当然与权限问题有关(这从问题本身很清楚 - “...无效权限...”)但不幸的是,这个具体答案没有帮助。使用此命令手动设置权限根本不起作用。我认为答案没有帮助,因为我特别指出我在原始问题(“aws lambda add-permission”)中使用了这个命令,所以基本上答案只是重复了问题的一部分。话虽如此,也许我太仓促了,也许答案可能对其他人在不同的情况下有用。
    【解决方案2】:

    我遇到了同样有趣的问题。当您创建 API 时,您可能在创建之前不小心输入了 lambda 函数的名称。 然后在创建 lambda 之后 - 名称将正确显示,但不会连接或授予权限。

    试试:

    1. 删除您从 api 网关输入的 lambda
    2. 从下拉列表中重新输入所需的 lambda 函数使用下拉列表

    1. 如果 AWS 要求您授予 lambda - BINGO 的执行权限。,现在应该可以工作了。

    【讨论】:

    • 谢谢,它有效。我先做了gateway的api方法。然后制作了lambda函数。我怀疑这是问题所在。
    【解决方案3】:

    找不到原因,但找到了解决问题的解决方法。 我没有使用 $stageVariables 作为 Lambda 函数名称,而是明确地写出了我将要使用的 Lambda 函数的名称。这样,AWS 将自动授予 Lambda 函数权限(对于您明确编写的每个函数)。之后,您可以将集成编辑回使用阶段变量。

    【讨论】:

    猜你喜欢
    • 2021-02-22
    • 2019-02-12
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2021-06-01
    • 2021-08-27
    • 1970-01-01
    • 2020-01-08
    相关资源
    最近更新 更多