Serverless 环境下如何使用异步事件触发器

阅读时长 7 分钟读完

随着云计算技术的普及,Serverless 架构作为一种新兴的应用架构方式,受到越来越多开发者的关注。在 Serverless 环境下,以事件驱动的编程方式成为了非常常见的做法。通过触发器将函数与事件解耦,使得函数可以被异步执行,并且响应时间更快。

本文将介绍在 Serverless 环境下如何使用异步事件触发器,同时提供实例代码以帮助您理解如何在项目中使用该功能。

异步事件触发器的定义

在 Serverless 架构中,事件触发器可以将事件和函数解耦以便于异步执行。事件触发器负责监听事件,一旦事件触发,则会将事件发送到已配置的函数。被触发的函数可以处理收到的事件,然后将结果发送给外部应用程序。

通常,异步事件触发器由以下几个组成部分:

  • 触发器:事件的来源,比如对象存储的文件上传完成事件;
  • 规则:定义何时触发器应该接收事件;
  • 处理程序:事件触发后处理事件的代码,通常是 AWS Lambda 函数。

Serverless 环境中的异步事件触发器

在 Serverless 技术中,Lambda 函数是最常用的处理程序。Lambda 函数是云业务中最受欢迎的微服务之一,由于其高弹性和低成本,它可以在数秒内响应请求,也可以在几毫秒内完成请求。

触发器和规则通常由云商提供,开发者只需要编写自定义函数即可。与 AWS Lambda 类似,其他的服务也提供了类似的能力,比如在 Google Cloud Platform GCP 中,触发器称为 Cloud Pub/Sub,规则称为 Cloud Scheduler。

除了 Lambda 函数作为处理程序外,Serverless 环境中还有其他的事件驱动函数。在 Azure 中,事件驱动函数称为触发器。此外,还有其他云厂商的解决方案,如 IBM 的 OpenWhisk。

如何使用异步事件触发器

为了从 Serverless 中使用异步事件触发器功能,您需要遵循以下四个简单的步骤:

  1. 创建一个事件源。这是一个负责将事件发送到触发器的 AWS 服务。一个示例是 Amazon S3,它允许您在存储桶中上传或删除对象时触发 Lambda 函数。

  2. 创建一个触发器。触发器定义了 Lambda 函数应响应的事件类型和发生事件的频率。

  3. 编写 Lambda 函数代码以对事件做出响应。

  4. 部署 Lambda 函数。

实例代码

在此,我们提供一个示例代码,它在文件上传成功后会发送一封电子邮件通知。本代码基于 AWS Lambda 函数和 Amazon S3 服务。

首先,您需要确保已具备 AWS CLI 工具,并且已安装并配置。您可以使用以下命令检查:

然后,您需要创建一个名为 lambda_function.py 的 Python 文件,其中包括以下代码:

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

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

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

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

请注意,此 Lambda 函数引用 Python 代码和 AWS SDK。Python 代码是在 AWS Lambda 中运行的 Lambda 函数,AWS SDK 用于将电子邮件发送到您的设备,确保您与 AWS 服务的内部通信仅限于 Python 函数定义的范围。

随后,在终端中使用以下命令创建部署包:

接下来,您需要使用 AWS CLI 在 AWS 中创建 Lambda 函数。

其中:

  • --function-name: 已部署的 Lambda 函数名称
  • --zip-file: 部署包的名称和位置
  • --handler: Lambda 函数代码和处理程序的入口点
  • --runtime: 指定代码的运行时
  • --timeout: Lambda 函数运行时限制
  • --environment: Lambda 函数环境中的变量
  • --role: Lambda 函数运行时身份验证,各位读者需要根据各自 AWS 账户情况进行更改

最后一步就是创建一个事件源和触发器,使之与 Lambda 函数相关联。

在 Amazon S3 控制台中,选择要监视更新的 S3 bucket,并转到此选定 S3 bucket 的 “Properties” 界面。

在 “Events” 部分,您可以为 S3 bucket 设置事件通知(向其他 AWS 服务发送通知)。单击“添加通知”,您将在 “属性配置” 界面中看到以下选项窗口:

为属性配置创建一个名称,则指定 Lambda 函数作为目标,并选择要监视的事件类型及其配置。最终点击 “保存”。

现在,您已经设置了事件通知,它将通知指定的 Lambda 函数,每当在 S3 bucket 中创建新对象时。Lambda 函数将在您的指定电子邮件地址中向您发送电子邮件通知。

要完成 Serverless 应用程序的开发流程-从构建到部署到监测,您还需要考虑其它细节。

结论

本文提供了在 Serverless 环境下使用异步事件触发器的详细指南和示例代码,您可以在涉及大量事件处理的项目中使用该功能加快响应速度,从而提高整体性能。

尝试运用在示例代码中给出的思路,您可以将其扩展到在各类场景下使用异步事件触发器的开发之中,该技术可以为您带来更好的性能表现和更高的开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67359d630bc820c5824f798e

纠错
反馈