【问题标题】:Got error 502 bad gateway, message: "Internal server error" when call lambda function调用 lambda 函数时出现错误 502 bad gateway,消息:“内部服务器错误”
【发布时间】:2017-05-17 00:25:48
【问题描述】:

当调用 lambda 函数上传大小为 3MB 的视频时,它工作正常。但是当调用 lambda 函数上传大小大于 7MB 的视频时,我收到错误 502 bad gateway 并显示消息:“内部服务器错误”并且:

  • 内容长度→36
  • content-type →application/json 日期 →Tue, 09 May 2017 14:50:47 GMT
  • 状态→502
  • 通过 →1.1 7a85b832328dd1601b1abdd4f06ee281.cloudfront.net (CloudFront)
  • x-amz-cf-id →0aY02rUX-0WJDjR2tLInShdHxrUMX3ncFv42C60udOPSaW7b5rdbNw==

  • x-amzn-requestid →e310d705-34c6-11e7-8f97-abf7320514e7

  • x-cache →来自云端的错误

我的有效载荷是: { "文件名":"test.mp4", "data":"data:video/mp4;base64,AAAAHGZ0eXBkYXNoAAAA......."(视频格式base64的内容) }

所以请帮助我为什么会出现这个错误以及如何/在哪里配置来传递这个问题。谢谢。

【问题讨论】:

  • Lambda 日志中有什么内容吗?
  • @stdunbar 在 cloudwatch 中没有其他内容 :( 。我认为 lambda 函数不接受大主体的请求。对吗?
  • 为什么要在请求中传递视频内容?
  • @johni:我使用 lambda 作为后端。前端允许用户选择文件并将请求包含的文件内容(base64)发送到后端。后端使用此信息将文件上传到 s3 并将文件名、描述...写入 dynamodb。这是我的工作流程,但是,您能否根据我的工作流程提出另一种方法来做到这一点?
  • 是的。您应该有一个 lambda 生成具有上传权限的“预签名”URL(谷歌该术语) - 客户端使用它来将视频上传到您的存储桶。您可以将描述添加到 s3 对象元数据。然后将触发器(用于新的 s3 对象事件)设置为新的 lambda,它将(自动)更新您的 dynamoDb 表。

标签: aws-lambda


【解决方案1】:

Lambda 调用的请求大小限制为 6MB。

AWS Lambda Limits

【讨论】:

  • 感谢您的回答。那么为了解决这个问题,你有另一种解决方案来发送大尺寸的请求吗?
  • 我知道的唯一解决方案是直接上传到 S3 并稍后触发 lambda(通过事件触发器或 API 网关)。基本上,这就是 johni 已经提出的建议。
  • 感谢您的想法和 Johni 的想法。我会尽力做到这一点。有结果后,我会再次发布。 :)
【解决方案2】:

我要感谢你们所有人,特别是 Johni 和 Jens Walter。 最后,我根据您的建议解决了我的问题。 “您应该有一个 lambda 生成具有上传权限的“预签名”URL(谷歌该术语) - 客户端使用它来将视频上传到您的存储桶。您可以将描述添加到 s3 对象元数据中。然后将触发器(用于新的 s3 对象事件)设置为新的 lambda,它将(自动)更新您的 dynamoDb 表。”

【讨论】:

    猜你喜欢
    • 2019-12-10
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2021-08-03
    • 2019-09-15
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多