【问题标题】:AWS Api-Gateway error 500 on postman / success on api gateway test邮递员上的 AWS Api-Gateway 错误 500/api 网关测试成功
【发布时间】:2020-09-25 17:06:45
【问题描述】:

我在 api 网关中遇到了一个 lambda 集成的奇怪问题(尝试过代理以及同样的问题)

lambda 首先命中 AppSync 并在错误时返回 JSON 内容或在成功时返回 XLXS 文件。

在 API 网关测试控制台上进行测试时,它会按预期返回状态 200 和二进制结果。但是当我通过邮递员在外部尝试时它失败了。

更多信息:

集成类型:Lambda

成功响应:

response = buffer.toString("base64");

错误响应:

response= JSON.stringify(err);

无服务器apigateway设置:

exportXls: 
handler: ./src/apiGatewayLambdas/exportxls/exportXls.handler
role:  AppSyncLambdaRole 
events:
    - http:
        path: /api/exportxls
        method: post
        integration: lambda

        contentHandling: CONVERT_TO_BINARY

【问题讨论】:

  • 您通过 Postman 发送什么?你检查过 Lambda 日志吗? :)
  • 这是我没有收到错误日志的奇怪之处......我只看到来自测试控制台的成功日志。以及我设法在 cloudwatch 上获取的一些日志,它们都显示了 2020 年 6 月 6 日星期六 14:46:31 UTC:成功完成执行 2020 年 6 月 6 日星期六 14:46:31 UTC:方法完成,状态为:200(刚刚测试)
  • 对,您是否启用了 API 网关日志,这可能会有所帮助?
  • 是 lambda 执行成功后的错误:转换前的方法请求主体:[Binary Data] 由于配置错误,执行失败:无法转换请求
  • 这是一个用于启用转换的无服务器插件。我也尝试将其删除并明确设置内容类型和内容处置,但出现同样的问题

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


【解决方案1】:

显然,带有 lambda 或代理集成的 Apigateway 将正文编码为 base64。所以我将我的 lambda 更改为

let buffer = new Buffer(_event.body, "base64");
let body = buffer.toString("ascii");
body = JSON.parse(body);

一切都按预期进行。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 2019-05-14
    • 2017-09-09
    • 2017-12-13
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    相关资源
    最近更新 更多