我试图让用户将图片上传到lambda函数进行处理;使用网关API接口 .
我试图为我的POST方法指定一个模型,但到目前为止我一直收到错误
指定的模型无效:验证结果:警告:[],错误:[指定的模型架构无效]
......没那么有帮助 .
我知道我无法直接将原始数据发送到lambda,并且必须在中间使用某种格式 .
我的理解是我可以让网关接口base64为我编码数据 .
我尝试使用以下内容类型为image / jpeg的模型架构
{
"body" : $util.base64Encode($input.body)
}
如何发送图像?
2 回答
如您所见,API网关中没有二进制数据的本机支持 . 我们正在努力解决这个问题,但我没有为您提供ETA . 有些客户已经成功地对您的问题中的数据进行了base64编码,只有它应该位于Integration Request not Method Request中的映射模板中 .
如果将内容类型设置为image / jpeg,则仅当传入请求中的Content-Type标头也是image / jpeg时才会应用编码,因此请务必进行设置 .
您还可以通过将'Request body passthrough'(API中的passthroughBehavior)设置为建议值(API中的"when there are no templates defined"或'WHEN_NO_TEMPLATES')来拒绝对 don't 发送正确内容类型的方法的传入请求
直通行为的文件 - > https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#passthroughBehavior
由于看起来使用二进制数据和API网关很复杂,我认为你应该:
使用API Gateway as an S3 proxy上传图片
在PUT上为您上传图像的存储桶设置lambda函数的触发器