如何将文件上传到 lambda 函数或 API 网关?

How to upload file to lambda function or API Gateway?

我正在尝试将文件从 iOS 上传到 AWS API 网关并将其传递给 Lambda 函数,我该如何实现这种情况?

我可以使用 multipart/form-data 上传到 AWS API 网关,但是如何让输入模型支持二进制数据?

[Edit1] 从 Spektre

的回答中移出

感谢您的回复,经过一些阅读我发现无法将文件上传到 lambda(并且这不合逻辑,因为它是基于事件的)并且是上传到 S3 并使 S3 通知 lambda 的唯一有效用例.

我强烈建议使用 S3 使用 AWS SDKs 之一直接上传。 AWS Lambda 最适合处理事件,而不是上传等内容传输。您可以查看其账单和限额,以更明智地决定它是否真的是您要找的东西。

API Gateway 添加了对 S3 代理的支持。这允许您将文件上传直接公开到 S3。

http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html

如果想通过 lambda 上传文件,一种方法是打开您的 AWS API 网关控制台。

转到

"API" -> {你的API} -> "设置"

在那里你会找到“二进制媒体类型”部分。

添加以下媒体类型:

multipart/form-data

保存您的更改。

然后转到“资源”->“代理方法”(例如“任何”)->“方法请求”->“HTTP 请求Headers”并添加以下内容headers” Content-Type", "接受"。

最终部署您的 api。

更多信息请访问:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html