首页 文章

具有代理Lambda的AWS API Gatewat:对Lambda函数的无效权限

提问于
浏览
0

当lambda函数的名称作为阶段变量出现时,我正在使用AWS API Gateway和代理Lambda . 意思是我有一个API集成,它根据部署的阶段连接到适当的lambda . 在这里查看一般想法:
enter image description here

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

我已经测试和验证过的事情:
1.应该由API调用的两个lambda都能很好地工作,并且从Lambda仪表板进行测试时可以正常工作 .
2.我've made sure (many times) that I'赋予API网关调用我的lambda函数的权限(即执行"aws lambda add-permission...") . 之后我多次验证了该策略(即执行了"aws lambda get-policy...") .

知道我还能检查什么吗?我可能忘记了什么?谢谢 .

enter image description here

2 回答

  • 0

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

  • 2

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

    enter image description here

相关问题