Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 如何知道lambda图像压缩是否完成?_Amazon S3_Aws Lambda_Image Compression - Fatal编程技术网

Amazon s3 如何知道lambda图像压缩是否完成?

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,包括上载图像文件将具有的密钥

我正在用apollo server express制作一个GraphQL API服务器

为了允许用户将其图像上传到S3,我做了一个名为userContentFileUpload的变异,其模式如下所示:

type Mutation {
  userContentFileUpload(file: File!) {
    uploadUrl
    fileUrl
  }
}
uploadUrl
是用于上载图像文件的预签名S3 URL,
fileUrl
是一个S3 URL,包括上载图像文件将具有的密钥

因此,客户端可以按如下方式使用此API:

  • 使用
    fetch
    axios
    将图像文件上载到
    uploadUrl
  • 等待上载请求成功
  • 使用
    文件URL
    作为上载文件的远程URL
  • 现在我尝试添加一个AWS lambda函数来压缩上传的图像

    lambda功能将:

  • 由S3文件上载事件触发
  • 压缩上传的文件
  • 将压缩文件放入S3存储桶
  • 但是,由于对
    uploadUrl
    的上传请求将在lambda函数的步骤1之前完成,因此客户端开始使用
    fileUrl
    的时间与压缩文件实际放入S3存储桶的时间之间会有一个间隔


    如何填补这一空白???

    据我所知,您现在有两个常规选项:

  • 收到图像时压缩图像(称为静态格式副本)
  • 在交付图像时压缩图像并缓存结果(有时称为动态格式副本)
  • 这是所有资产交付系统中的两个选项。这两种方法各有优缺点

    因为您没有提供很多细节(图像大小、使用模式等),所以很难说这两个选项中哪一个更适合您

    因此,我将给您一些提示,说明如何在AWS中实现这两者

    如果您希望在收到图像时压缩图像,并且仅希望在压缩图像时允许访问
    fileUrl
    ,则可以切换到。因为要处理几个月。因此,您可以创建一个Step函数来下载图像,创建压缩版本,然后返回给调用者。显然,这是有限度的。图像越大,处理时间可能越长,并且可能会出现超时等情况。因此使用2MB上传图像没有问题。上载1GB大小的图像可能会成为一个问题

    第二种选择是在交付时压缩并缓存结果。如果你过去经常这样做。但你也可以使用


    可能还有更多的选项可以选择如何构建这样的东西。但是如果没有更多的细节,很难找到适合您的最佳解决方案。

    我可以问一下,您在上传图像的元数据中获得的内容类型是什么吗?是二进制/八位字节流还是图像/png?