【发布时间】:2021-07-28 10:37:33
【问题描述】:
我正在使用 apollo-server-express 制作 GraphQL API 服务器。
为了允许用户将他们的图片上传到 S3,我做了一个名为 userContentFileUpload Mutation 的突变,其架构如下所示:
type Mutation {
userContentFileUpload(file: File!) {
uploadUrl
fileUrl
}
}
uploadUrl 是一个预签名的 S3 URL,用于上传图像文件,fileUrl 是一个 S3 URL,包括上传的图像文件将拥有的密钥。
因此客户端可以按如下方式使用此 API:
- 使用
fetch或axios将图像文件上传到uploadUrl。 - 等待上传请求成功。
- 使用
fileUrl作为上传文件的远程 URL。
现在我正在尝试添加一个压缩上传图像的 AWS lambda 函数。
lambda 函数将:
- 由 S3 文件上传事件触发。
- 压缩上传的文件。
- 将压缩文件放入 S3 存储桶。
但是,由于对uploadUrl的上传请求将在lambda函数的第1步之前完成,因此客户端开始使用fileUrl的时间与压缩文件实际放入的时间之间会有差距S3 存储桶。
我该如何填补这个空白??
【问题讨论】:
-
我能问一下您在上传图片的元数据中获得的内容类型是什么?是二进制/八位字节流还是图像/png?
标签: amazon-s3 aws-lambda image-compression