【发布时间】:2017-12-13 06:24:07
【问题描述】:
我对 API Gateway 和 Lambda 非常陌生。我正在尝试将基于 Node.js Express 的 API 部署到 lambda。我正在使用来自 awslabs 的 aws-serverless-express example。因此,我的大部分 AWS 配置都是自动为我创建的。
我的 API 似乎通过 API 网关正常工作。我的 post 和 get 方法工作正常。但是,我需要支持 CORS。我的应用程序应该向 OPTIONS 请求返回正确的 CORS 响应,但它在 AWS 上不起作用。
最终,无论我做什么,我都会收到对选项请求的 500 响应。我无法弄清楚如何获取有关这 500 个错误的任何信息。我不确定是什么原因造成的。
这是 500 响应 {"message": "Internal server error"} 的正文。
这些是响应标头:
内容长度:36
内容类型:应用程序/json
日期:2017 年 7 月 9 日星期日 17:56:24 GMT
状态:500
通过:1.1 9af17e5a616bfc9ac07fc7e415ade9e6.cloudfront.net (CloudFront)
x-amz-cf-id:1_AZmkLqf1rjkog2MRtvcBAe54aIZdPWmNApBTwG48Af-v_g9WHkZw==
x-amzn-requestid:ec216a62-64cf-11e7-ad2b-4f1e96508dba
x-cache:来自云端的错误
我很确定我的 OPTIONS 请求甚至没有到达 Lambda 上的应用程序。
我已尝试使用 API 网关(以及在我的应用程序中)配置 CORS。我正在尝试将其配置为允许所有来源。
如果我可以查看或做些什么来调试此问题?
编辑:
为了调试此问题,我尝试在 CloudWatch 中为 API 网关启用日志记录。
完成此操作后,我在 CloudWatch 中看到这两个类似于网关的日志:
我一直在使用 prod,所以我点击那个链接并看到了这个:
我认为这是一长串日志条目。我不确定在这种情况下“流”是什么意思。有数百个这样的条目。因此,我选择具有最新时间戳的那个并单击它。现在我看到了:
看来我所有的网关日志都是这样的。 IE:显然是空的。
那么,我是否正确设置了日志记录?我找对地方了吗?
【问题讨论】:
-
500 错误正文中的内容是什么?
-
正文中唯一的内容是:{"message": "Internal server error"}
-
我已经用我从 Chrome 中提取的更多细节更新了这个问题。
-
确切的错误“内部服务器错误”将记录在您可以在舞台上启用的 cloudwatch 日志中。注意,如果 API 有任何配置错误,将会返回“Internal server error”。这种行为是因为 API 使用者将是您的用户,他们不应该真正看到有关您的 API 的任何调试信息。
-
我不清楚如何将 CloudWatch 与 API 网关一起使用。我在设置中的“CloudWatch 日志角色 ARN”下添加了一个 ARN。但是,当我这样做时,我无法理解 CloudWatch 中显示的内容。我什至不确定我正在寻找正确的东西。我将在上面添加有关日志记录的更多详细信息。
标签: node.js amazon-web-services aws-lambda aws-api-gateway