Image AWS API网关从base64浏览器返回二进制文件错误

Image AWS API网关从base64浏览器返回二进制文件错误,image,amazon-web-services,amazon-s3,Image,Amazon Web Services,Amazon S3,我在python 2.7中创建了一个AWS lambda,它接收一个id, 从s3存储桶检索文件并将其转换为base64: response = s3.Object( s3_bucket, r['prefix'] + str( id) ).get() data = base64.b64encode( response['Body'].read()) return data 一切正常,生成的base64经过测试并正确无误。这是一个jpeg 现在在api网关上: 创建API 添加到二进制支持二进

我在python 2.7中创建了一个AWS lambda,它接收一个id, 从s3存储桶检索文件并将其转换为base64:

response = s3.Object( s3_bucket, r['prefix'] + str( id) ).get()
data = base64.b64encode( response['Body'].read())
return data
一切正常,生成的base64经过测试并正确无误。这是一个jpeg

现在在api网关上:

  • 创建API
  • 添加到二进制支持二进制媒体类型:图像/jpeg
  • 将GET方法添加到资源中
  • 添加方法响应HTTP状态:200型号:image/jpeg=>Empty
  • 添加内容类型:=图像/jpeg处于“集成响应”状态200>“主体映射模板”
使用此模板:

$util.base64Decode($input.body)
部署API,测试。。。及 浏览器说:图像无法显示,因为它包含错误


我尝试了一百种不同的版本,但都没有结果。我的错误是什么?

最后我发现,目前,您无法通过web控制台解决此问题。根据daveg的建议,您必须使用AWS CLI更改为设置contentHandling=CONVERT_to_TEXT。正如我所说,在web界面上无法执行的操作


有关详细信息:

不清楚为什么要将图像返回为base64,但假设您有自己的理由,是否需要添加类似
内容编码:base64
响应头的内容,以便浏览器了解它正在处理什么?lambda函数返回base64图像。我希望api网关返回一个二进制文件。为此,我使用了
$util.base64Decode($input.body)
,但效果不好。很抱歉,我之前误读了您的问题。