当lambda函数的名称作为阶段变量出现时,我正在使用AWS API Gateway和代理Lambda . 意思是我有一个API集成,它根据部署的阶段连接到适当的lambda . 在这里查看一般想法:
当我测试我的一个阶段(称为“staging”)时,一切正常,但是当测试另一个阶段(“ 生产环境 ”)时,我收到错误“由于配置错误导致执行失败:对Lambda函数的权限无效” .
我已经测试和验证过的事情:
1.应该由API调用的两个lambda都能很好地工作,并且从Lambda仪表板进行测试时可以正常工作 .
2.我've made sure (many times) that I'赋予API网关调用我的lambda函数的权限(即执行"aws lambda add-permission...") . 之后我多次验证了该策略(即执行了"aws lambda get-policy...") .
知道我还能检查什么吗?我可能忘记了什么?谢谢 .
2 回答
在阶段变量中指定Lambda函数时,不会自动创建调用Lambda函数的权限 . 您需要手动执行此操作:
(您需要在此语句中替换区域,lambda函数名称和帐号以及api-gateway ARN . )
找不到原因,但找到解决问题的解决方法 . 我没有使用$ stageVariables作为Lambda函数名,而是明确地写了我将逐个使用的Lambda函数的名称 . 这样,AWS将自动授予Lambda函数权限(对于每个显式写入的函数) . 之后,您可以将集成编辑回使用阶段变量 .