使用网关 API 将图像上传到 Lambda
Upload image to Lambda using gateway API
我正在尝试让用户将图片上传到 lambda 函数进行处理;使用网关 API 接口。
我试图为我的 POST 方法指定一个模型,但到目前为止我一直收到错误
Invalid model specified: Validation Result: warnings : [], errors : [Invalid model schema specified]
... 帮助不大。
我知道我不能直接将原始数据发送到 lambda,必须在两者之间使用某种格式。
我的理解是我可以让网关接口 base64 为我编码数据。
我尝试通过使用以下内容类型为 image/jpeg
的模型架构来做到这一点
{
"body" : $util.base64Encode($input.body)
}
如何发送图片?
如您所见,API 网关不支持二进制数据。我们正在努力解决这个问题,但我没有适合您的预计到达时间。一些客户已经成功地对数据进行了 base64 编码,就像您在问题中遇到的那样,只是它应该在集成请求中的映射模板中 而不是 方法请求。
如果您将内容类型设置为 image/jpeg,则仅当传入请求的 Content-Type header 也是 image/jpeg 时才应用编码,因此一定要设置它。
您还可以通过设置 'Request body passthrough'(API ) 到建议值("when there are no templates defined" 或 'WHEN_NO_TEMPLATES' 中的 API)
传递行为的文档 -> https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#passthroughBehavior
因为它看起来像是在处理二进制数据,而且 API 网关很复杂,我认为你应该:
- 使用 API Gateway as an S3 proxy
上传图片
- 为您上传图片的存储桶的 PUT 上的 lambda 函数设置触发器
我正在尝试让用户将图片上传到 lambda 函数进行处理;使用网关 API 接口。
我试图为我的 POST 方法指定一个模型,但到目前为止我一直收到错误
Invalid model specified: Validation Result: warnings : [], errors : [Invalid model schema specified]
... 帮助不大。
我知道我不能直接将原始数据发送到 lambda,必须在两者之间使用某种格式。
我的理解是我可以让网关接口 base64 为我编码数据。
我尝试通过使用以下内容类型为 image/jpeg
的模型架构来做到这一点{
"body" : $util.base64Encode($input.body)
}
如何发送图片?
如您所见,API 网关不支持二进制数据。我们正在努力解决这个问题,但我没有适合您的预计到达时间。一些客户已经成功地对数据进行了 base64 编码,就像您在问题中遇到的那样,只是它应该在集成请求中的映射模板中 而不是 方法请求。
如果您将内容类型设置为 image/jpeg,则仅当传入请求的 Content-Type header 也是 image/jpeg 时才应用编码,因此一定要设置它。
您还可以通过设置 'Request body passthrough'(API ) 到建议值("when there are no templates defined" 或 'WHEN_NO_TEMPLATES' 中的 API)
传递行为的文档 -> https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#passthroughBehavior
因为它看起来像是在处理二进制数据,而且 API 网关很复杂,我认为你应该:
- 使用 API Gateway as an S3 proxy 上传图片
- 为您上传图片的存储桶的 PUT 上的 lambda 函数设置触发器