File upload 通过Amazon API网关和lambda上传图像
我有一个带有File upload 通过Amazon API网关和lambda上传图像,file-upload,amazon-s3,aws-lambda,aws-api-gateway,File Upload,Amazon S3,Aws Lambda,Aws Api Gateway,我有一个带有API网关和Lambda的restapi。 我不想创建一个用于上传配置文件图片的端点,该端点将文件传递到Lambda函数,在该函数中,文件被调整大小,将其注册到数据库并返回新图像的url路径 有没有办法利用这些服务做到这一点? 在网上找不到任何东西(我找到的唯一建议是直接上传到S3,这需要IAM权限,并且有一个事件触发一个调整图片大小的Lambda函数) 谢谢 更新 AWS更新了APIGATEWAY,并且知道您可以 感谢@blue和@Manzo的评论将文件直接上传到S3不一定需要IA
API网关
和Lambda
的restapi。
我不想创建一个用于上传配置文件图片的端点,该端点将文件传递到Lambda
函数,在该函数中,文件被调整大小,将其注册到数据库并返回新图像的url路径
有没有办法利用这些服务做到这一点?
在网上找不到任何东西(我找到的唯一建议是直接上传到S3,这需要IAM权限,并且有一个事件触发一个调整图片大小的Lambda函数)
谢谢
更新
AWS更新了APIGATEWAY,并且知道您可以感谢@blue和@Manzo的评论将文件直接上传到S3不一定需要IAM权限。您将创建一个API端点,该端点返回一个,然后可用于将文件直接上载到S3。API端点后面的Lambda函数将是S3存储桶唯一需要正确IAM权限的东西。由于API网关和Lambda当前本机不支持,您可以将文件传递到based64编码为API网关的图片,然后传递到Lambda函数。您的Lambda函数可以进行based64解码,然后调整大小,将其注册到数据库并返回新图像的url路径。谢谢。我试过你说的了。我得到
无法将请求正文解析为json:unrecogned token
。我的请求temaplate
有一个属性:有效负载:$input.body
。它应该以字符串形式返回正文(文件),但会抛出一个错误。修复了它!添加$util.base64Encode()
。该道具如下所示:“payload”:“$util.base64Encode($input.body)”
。现在我得到一个损坏的文件。它位于应用程序/octet流上,我无法操作或确定图像类型。有什么解决办法吗?@JoJoB。你能解决这个问题吗。我遇到了同样的问题。@advncd我使用了下面的建议。我有一个端点,它给我一个指向s3 bucket的签名url,然后我直接上传它。您可以使用此标志url的权限、文件类型和文件大小。目前,API网关将每个输入编码为JSON,因此img数据将被破坏(或者至少我不知道如何解码)。我认为他们正在计划向API网关添加更多功能,其中之一是文件上传。你是对的,但我有自己的lambda函数授权用户,并根据他的id将文件保存到s3存储桶中。我不认为让用户获得s3 url然后上传文件是一个好主意,API的目的是抽象逻辑和基础设施,用户不应该处理所有这些事情,甚至不应该知道我们现在使用s3或awsAPI网关支持二进制数据……是的,这里的示例: