程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何知道lambda图像压缩是否完成?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_262_0@如何解决如何知道lambda图像压缩是否完成?? 开发过程中遇到如何知道lambda图像压缩是否完成?的问题如何解决?下面主要结合日常开发的经验,给出你关于如何知道lambda图像压缩是否完成?的解决方法建议,希望对你解决如何知道lambda图像压缩是否完成?有所启发或帮助;

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

为了允许用户将他们的图像上传到 S3,我做了一个名为 userContentfileUpload Mutation 的突变,其架构如下所示:

type Mutation {
  userContentfileUpload(file: file!) {
    uploadUrl
    fileUrl
  }
}

uploadUrl 是用于上传图像文件的预签名 S3 URL,fileUrl 是 S3 URL,包括上传图像文件将具有的密钥。

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

  1. 使用 uploadUrlfetch 将图像文件上传到 axios
  2. 等待上传请求成功。
  3. 使用 fileUrl 作为上传文件的远程 URL。

现在我正在尝试添加一个 AWS lambda 函数来压缩上传的图像。

lambda 函数将:

  1. 由 S3 文件上传事件触发。
  2. 压缩上传的文件。
  3. 将压缩文件放入 S3 存储桶。

但是,由于向 uploadUrl 的上传请求会在 lambda 函数的第 1 步之前完成,所以客户端开始使用 fileUrl 的时间和压缩文件的时间会有一定的差距实际放入 S3 存储桶中。

我怎样才能填补这个空白??

@H_262_0@解决方法

据我所知,您现在有两个一般选项:

  1. 在收到图像时对其进行压缩(称为静态再现)。
  2. 交付时压缩图像并缓存结果(有时称为动态再现)。

这是您在所有资产交付系统中都有的两个选项。这两种方法各有优缺点。

由于您没有提供很多详细信息(图片大小、使用模式等),因此很难说两者中的哪一个更适合您。

因此,我将向您提示如何在 AWS 中实现两者。

如果您想在收到图像时对其进行压缩,并且只想在图像压缩时允许访问 fileUrl,则可以切换到 Step Functions。由于几个月API Gateway allows you to send incoming requests directly to express Step Functions进行处理。因此,您可以创建一个 Step Function 来下载图像,创建压缩版本,然后返回给调用者。显然,这是有局限性的。图像越大,处理可能需要的时间越长,您可能会超时等。所以上传 2MB 的图像,没问题。上传 1GB 大的图片,这可能会成为一个问题。

您的第二个选择是在交付时压缩并缓存结果。如果您使用 AWS Cloudfront,you can use Lambda@Edge 来执行此操作。但您也可以使用 S3 Object Lambdas。

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

大佬总结

以上是大佬教程为你收集整理的如何知道lambda图像压缩是否完成?全部内容,希望文章能够帮你解决如何知道lambda图像压缩是否完成?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。