我有一个用 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'`