使用网关API将代码上传到Lambda

时间:2016-05-25 08:41:29

标签: aws-lambda aws-api-gateway

我试图让用户将图片上传到lambda函数进行处理;使用网关API接口。

我试图为我的POST方法指定一个模型,但到目前为止我一直收到错误

  

指定的模型无效:验证结果:警告:[],错误:[指定的模型架构无效]

......没那么有帮助。

据我所知,我不能直接将原始数据发送到lambda,并且必须在中间使用某种格式。

我的理解是我可以让网关接口base64为我编码数据。

我尝试使用以下内容类型为image / jpeg

的模型架构
{
    "body" : $util.base64Encode($input.body)
}

如何发送图片?

2 个答案:

答案 0 :(得分:2)

如您所见,API网关中没有二进制数据的本机支持。我们正在努力解决这个问题,但我没有为您提供ETA。有些客户已经成功地对您的问题中的数据进行了编码,只有它应该位于集成请求方法请求中的映射模板中。

如果将内容类型设置为image / jpeg,则只有当传入请求中的Content-Type标头也是image / jpeg时,编码才会应用,因此请务必进行设置。

您还可以通过设置“请求正文直播”来拒绝对发送正确内容类型的方法的传入请求。 (API中的passthroughBehavior)到建议值("没有定义模板"或者' WHEN_NO_TEMPLATES'在API中)

直通行为的文档 - > https://docs.aws.amazon.com/apigateway/api-reference/resource/integration/#passthroughBehavior

答案 1 :(得分:1)

由于看起来使用二进制数据和API网关很复杂,我认为你应该:

  1. 使用API Gateway as an S3 proxy
  2. 上传图片
  3. 在PUT上为您上传图像的存储桶设置lambda函数的触发器