在当今的云计算时代,Serverless 已经成为了一种非常受欢迎的架构模式。它能够让开发者更加专注于代码的编写而不必担心其他基础架构的配置,同时也能够大幅度降低运行成本。本文将介绍如何使用 Serverless,快速实现图像处理,为大家提供指导意义以及代码示例。
前置条件
在进行本次实验之前,需要一些前置条件。首先,您需要一个 AWS 账号,亦或其他云平台账号。其次,您需要在本地安装一个 Serverless 框架,以便能够在本地进行开发和调试。
创建项目
使用 Serverless 的第一步就是创建我们的项目。首先,打开终端,并执行以下命令:
# https://github.com/serverless/examples/tree/master/aws-python-simple-http-endpoint git clone https://github.com/serverless/examples cd aws-python-simple-http-endpoint sudo npm install -g serverless serverless create --template aws-python-simple-http-endpoint --path image-processing
上面的代码中,我们从 Github 上下载了 Serverless 提供的一个示例项目,并用它生成了一个新的项目目录。
添加 ImageMagick
在进行图像处理之前,我们需要在我们的项目中添加 ImageMagick。ImageMagick 是一款开源的图像处理库,我们将在使用它进行图像处理之前,先安装相关依赖。
sudo apt-get update sudo apt-get install imagemagick -y
安装完成后,我们需要验证是否安装成功。
convert -version
如果安装正确,则会输出如下版本号:
Version: ImageMagick 6.9.10-23 Q16 x86_64 20190101 https://imagemagick.org
编写代码
现在,我们已经成功准备好了开发环境并完成了项目的创建。接下来,我们需要编写代码实现图像处理的逻辑。
首先,我们需要让我们的 AWS Lambda 函数知道它需要调用 ImageMagick。创建一个名为 serverless.yml
的配置文件,并将以下内容添加到其中:
-- -------------------- ---- ------- -------- ---------------- --------- ----- --- -------- --------- ---------- ---------- -------- ----------------- ------- - ----- ----- --------- ------- ---- -------- - ------------------------------ ------- ------------------- ------------- --------- ---- ---- ----- ---- --------- - ----------------------
其中,
service: image-processing
表示我们的 Service 名称。provider
表示我们的 Provider,这里我们采用了 AWS。functions
定义了我们的 Lambda 函数,这里我们创建了名为thumbnail
的函数。plugins
指定了我们使用了serverless-python-requirements
这个插件,以便我们能够在代码中使用依赖包。custom
定义了我们的一些自定义配置,用于优化部署包的大小。
接下来,我们需要创建一个名为 handler.py
的文件,并将以下代码添加到其中:
-- -------------------- ---- ------- ------ -- ------ ---------- ------ ------ --- ---------------- --------- ---- ---------- - ------------------------------- -------------- - -------------------------------- - ------- --- --- ---------------------- ----------------------- ----------- ----------------- ------------- - ------------------------------------------------ ------ -------------- ---- ------- -------------- ------ ----------------------------- -- -- ------ -------------- ---- ------- ------- ------ --------- -- -- ------ -------------- ---- ------- -------
以上代码通过调用 ImageMagick 进行图像处理,并返回处理后的缩略图数据。
部署代码
现在我们已经完成了项目的开发,接下来开始部署我们的代码。在终端中,执行以下命令:
cd image-processing serverless deploy
上述命令会自动将代码打包并上传到 AWS Lambda 服务器,并创建相关的 API 网关并发布。我们只需要等待一小段时间,即可看到部署成功的消息。
测试 API
部署完 API 后,我们可以通过 Postman 或其他 HTTP 请求工具对其进行测试。使用 POST 方法访问 /thumbnail
接口,会将请求的 Body 转化为 ImageMagick 可以处理的二进制图像,并返回经过处理后的缩略图数据。
-- -------------------- ---- ------- ------ -------- ------ ------ - ----------------------- -------- - ------------------------------------------------------------------------------------ ------------- --------------------------------- ------------------------------- ------ - ----------------------------------------- -------- - --------------------- ----- ---------------------- ----------------
以上就是通过 Serverless 搭建的简单图像处理 API 的全部过程。在实际应用中,您可以根据自己的需求进行更改,并添加更多的功能。
总结
我们已经通过 Serverless 简单地搭建了一个图像处理的 API,让我们感受到了 Serverless 高效开发的魅力。虽然本文只是介绍了 Serverless 的一个小应用,但是相信读者在实际运用时能够深入探索,从而开创出属于自己的奇妙空间。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6484974148841e989439634b