如何在 Serverless 框架中使用 Lambda 函数进行图像压缩

前言

随着小程序、移动端应用等应用的广泛普及,对于图像的处理越来越成为前端工程师的一项必备技能。传统的图像处理方式需要在服务端进行处理,造成服务器开销过大,使用不够灵活。Serverless 架构上的图像处理方案,可以在 AWS Lambda 等函数计算服务上进行图像处理,并进行快速和灵活的优化。

本篇文章主要介绍如何在 Serverless 框架中使用 Lambda 函数进行图像压缩。

Lambda 函数

AWS Lambda 是一种事件驱动计算服务,可以在无需操作底层计算资源的情况下运行代码。本文中,我们将使用 AWS Lambda 函数来压缩图像。

图像压缩方法

图像压缩是基于对数据进行变换的原理,将大量的冗余数据剔除,保留图像主体部分信息,达到压缩数据的目的。在图像的压缩方面,主要有以下两种方法:

有损压缩

有损压缩是指压缩图像时会删除一些数据,从而获得更高的压缩比率。在这个过程中,图像的一些细节信息不能完全恢复,导致图像的质量降低,甚至出现色彩的变化和失真等问题。

无损压缩

无损压缩是数据压缩技术的一种,压缩前的数据经过压缩处理后可以完全恢复为压缩前的数据。在这个过程中不会丢失任何数据,因此图像的质量不会降低。

使用 Lambda 函数进行图像压缩

环境搭建

在 AWS 上创建 Lambda 函数之前,需要确保您已经创建了角色,该角色应该包含以下 AWS policy:

  • AWSLambdaExecute
  • AmazonS3ReadOnlyAccess

这些 policy 允许 Lambda 函数执行和读取 S3 存储桶中的对象。

Lambda 函数代码

在 AWS Lambda 控制台中创建一个新的 Lambda 函数。使用 Node.js 12.x 运行时环境,并添加图像压缩模块 sharp 作为 Lambda 函数的依赖项。

----- --- - -------------------
----- ----- - -----------------

--------------- - ----- ------- -- -
  ----- -- - --- ---------
  ----- --- - -------------------------------
  ----- ------ - --------------------------------
  ----- ------ - -
    ------- -------
    ---- ----
  --
  --- -
    ----- ---- - ----- -------------------------------
    ----- --------------- - ----- ----------------
      ------------- ----
      ------- -------- -- --
      ------------
    ----- ------------ - -
      ------- -------
      ---- --------------------
      ----- ----------------
      ------------ -----------------
      ---- --------------
    --
    ----- -------------------------------------
    ------ ----- -------------------
  - ----- --- -
    ---------------
    ------ ------ ----------- ---- ------- ------ ------
  -
--

使用 Serverless 框架

Serverless 框架可以帮助我们更容易地部署、管理和调试 AWS Lambda 函数。以下是如何在 Serverless 框架上使用 AWS Lambda 函数进行图像压缩的示例代码。

-------- -----------------

---------
  ----- ---
  -------- ----------
  ------- ---------

----------
  ---------
    -------- ---------------
    -------
      - ---
          ------- -----------
          ------ --------------------
          ------
            - ------- -----------
    ------------------
      - ------- -----
        -------
          - ------------
          - ------------
        --------- --------------------------

在 Serverless 框架上使用 AWS Lambda 函数进行图像压缩非常简单,只需在 serverless.yml 文件中进行配置即可。

工作原理

当有一个新的对象被上传至 S3 存储桶中时,S3 会发送事件通知 AWS Lambda 服务。AWS Lambda 通过执行上述 Lambda 函数,使用带有 s3:ObjectCreated:* 的事件触发器来处理压缩后的图像。

首先,AWS Lambda 函数使用 S3 GET 请求从原始存储桶读取图像。然后,该图像经过 sharp 压缩,再使用 S3 PUT 请求将压缩图像存储在另一个存储桶中。

结论

使用 Serverless 架构上的 AWS Lambda 函数进行图像压缩是一种进行前端开发的有效方法。在这种模式下,可以通过 AWS Lambda 函数为图像进行快速和灵活的优化,从而提高应用性能并减少开销。

希望本篇文章对您有所帮助。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67198748ad1e889fe2316918