AWS 上的 API 网关和 lambda 出现“内部服务器错误”

Tho*_*mas 3 amazon-web-services aws-lambda aws-api-gateway

这个网站和网络上都有大量类似的问题,这让我相信 AWS 的文档确实存在问题,因为这给很多人带来了悲伤。

所以,我决定一步步发布最基本的示例。

首先,我们创建一个新函数:

在此输入图像描述

它有默认的“一切”,我没有碰任何一行代码。

在此输入图像描述

(红色错误消息是 AWS 与 Firefox 配合不佳)

默认代码通过测试:

在此输入图像描述

现在我添加一个触发器:

在此输入图像描述

这给了我触发器的链接:

在此输入图像描述

我可以转到 API 端点:https://spy3z1jvu8.execute-api.ap-northeast-1.amazonaws.com/default/test

它有效:

在此输入图像描述

现在,问题就要开始了。我打开创建的 API 网关:

在此输入图像描述

并尝试默认链接:https://spy3z1jvu8.execute-api.ap-northeast-1.amazonaws.com

和...

在此输入图像描述

大多数有类似问题的人似乎都遇到了网关问题,需要一些 json 内容等,但这里是一个未修改的 AWS 示例,并且网关链接不起作用。

故障排除步骤要求添加日志记录并以这种方式进行故障排除,但日志中没有任何有趣的内容。

这个问题的根源可能是什么?

Mar*_*cin 5

这个问题的根源可能是什么?

你是对的。这是 AWS/控制台故障。具体来说,它在 lambda 基于资源的权限中为默认路由提供了错误的权限。要解决这个问题,您必须编辑权限

具体来说,转到您的函数 Resource-based policy(这与执行角色不同)。您应该Policy statement在那里找到一个需要编辑的内容。Source ARN然后从类似的内容进行更改:

arn:aws:execute-api:ffffff:xxxx:api-id/*/*/function-name
Run Code Online (Sandbox Code Playgroud)

arn:aws:execute-api:ffffff:xxxx:api-id/*/*
Run Code Online (Sandbox Code Playgroud)