Amazon s3 如何知道lambda图像压缩是否完成?
我正在用apollo server express制作一个GraphQL API服务器 为了允许用户将其图像上传到S3,我做了一个名为userContentFileUpload的变异,其模式如下所示:Amazon s3 如何知道lambda图像压缩是否完成?,amazon-s3,aws-lambda,image-compression,Amazon S3,Aws Lambda,Image Compression,我正在用apollo server express制作一个GraphQL API服务器 为了允许用户将其图像上传到S3,我做了一个名为userContentFileUpload的变异,其模式如下所示: type Mutation { userContentFileUpload(file: File!) { uploadUrl fileUrl } } uploadUrl是用于上载图像文件的预签名S3 URL,fileUrl是一个S3 URL,包括上载图像文件将具有的密钥
type Mutation {
userContentFileUpload(file: File!) {
uploadUrl
fileUrl
}
}
uploadUrl
是用于上载图像文件的预签名S3 URL,fileUrl
是一个S3 URL,包括上载图像文件将具有的密钥
因此,客户端可以按如下方式使用此API:
fetch
或axios
将图像文件上载到uploadUrl
文件URL
作为上载文件的远程URLuploadUrl
的上传请求将在lambda函数的步骤1之前完成,因此客户端开始使用fileUrl
的时间与压缩文件实际放入S3存储桶的时间之间会有一个间隔
如何填补这一空白???据我所知,您现在有两个常规选项:
fileUrl
,则可以切换到。因为要处理几个月。因此,您可以创建一个Step函数来下载图像,创建压缩版本,然后返回给调用者。显然,这是有限度的。图像越大,处理时间可能越长,并且可能会出现超时等情况。因此使用2MB上传图像没有问题。上载1GB大小的图像可能会成为一个问题
第二种选择是在交付时压缩并缓存结果。如果你过去经常这样做。但你也可以使用
可能还有更多的选项可以选择如何构建这样的东西。但是如果没有更多的细节,很难找到适合您的最佳解决方案。我可以问一下,您在上传图像的元数据中获得的内容类型是什么吗?是二进制/八位字节流还是图像/png?