5

我有一个用 Go 编写的 Lambda 函数,它应该允许通过 HTML 表单/ JavaScript和 API 网关集成将图像文件上传到 S3 存储桶中,所有这些都在SAM 模板中定义。

以下是 Lambda 函数执行日志的示例:

在此处输入图像描述

现在的问题是,对于任何 JPEG 或 PNG 文件,我都会得到损坏的结果:

  • 结果图像的文件大小(解析multipart媒体消息后得到的)大于原始文件大小,例如:8kB(原始)到 12kB(S3 存储桶)。
  • 当我将原始 PNG 或 JPEG 文件与 S3 存储桶中的结果文件进行比较时,hexdump它们看起来几乎相同(也就是说:我怀疑是否涉及 base64 编码问题)。
  • 有趣的是,对于text/plain媒体类型,此设置有效。

我试图找出问题出在哪里,在当前时间点,我的预感是 API 网关配置中有些东西我丢失了。FWIW,我尝试了这个,但没有明显的行为变化:

$ aws apigateway update-integration-response \
                 --rest-api-id XXX --resource-id XXX \
                 --http-method POST --status-code 200 \
                 --patch-operations op='replace',path='/contentHandling',value='CONVERT_TO_BINARY'`
4

0 回答 0