1. What is it?

云环境部署项目的一大好处就是,你可以很方便的根据需求,选择拥有合适性能的 AWS EC2 实例类型,并添加 load balancing 和 auto scaling 来扩展规模。而 Serlverless 计算服务进一步优化了基础架构,在架构中不存任何 EC2 实例,不用配置实例,不用更新操作系统,不用配置 load balancing 和 auto scaling,现在需要你做的只是构建和部署应用到 lambda 服务上,并对应用进行监控和维护。

  • AWS Lambda 是 Serverless 架构中的计算服务。它可以在不使用服务器的情况下运行代码,你只需要按照消耗的计算时间进行付费,代码未运行时不产生费用。

  • 在使用 AWS Lambda 时,您只需负责自己的代码。AWS Lambda 管理提供内存、CPU、网络和其他资源均衡的计算机群。这是以灵活性为代价的,这意味着您不能登录计算实例,或针对提供的运行时自定义操作系统。通过这些约束,AWS Lambda 可以代表您执行操作和管理活动,包括预置容量、监控机群运行状况、应用安全补丁、部署您的代码以及监控和记录您的 Lambda 函数日志。

举例,在 Serverless 中的一个简单 web 服务:
AWS Lambda - 图1AWS Lambda - 图2

  • 将 http 请求视为对我们服务有一定意义的 Event,中间处理请求的逻辑代码视为 Handler,backend 可能一些与 handler 交互的后端服务。
  • Handler 就是 Lambda function,用于实现你的业务逻辑,它支持 JavaScriptPythonJavaC# 或者 Go
  • 那如何构建和部署 Lambda function 呢?
    • 与传统应用开发唯一不同的是,你需要写一个 handler method 作为你的代码入口。
    • 然后将这些代码打包成 zip 文件,将 zip 文件上传到 AWS Lambda Service。
    • 然后为你的 lambda function 配置 event sources,代码将在这些事件发生时自动运行以响应它们。
    • Lambda Service 会负责提供底层计算和运行时环境。

管理和调用 Lambda 资源的几种方式:

2. How to use it?

Lambda 支持多种编程语言

Sample:

在 AWS Lambda 上构建应用程序时,核心组件是 Lambda 函数和触发器。触发器是调用函数的 AWS 服务或应用程序,而 Lambda 函数是处理事件的代码和运行时。为了清晰起见,请考虑以下情景:

  • 文件处理 – 假设您有一个照片共享应用程序。人们使用您的应用程序上传照片,应用程序将这些用户照片存储到 Amazon S3 存储桶中。然后,您的应用程序创建每个用户照片的缩略图版本,并在用户的资料页面上显示这些缩略图。在这种情景下,您可以选择创建 Lambda 函数来自动创建缩略图。Amazon S3 是支持的 AWS 事件源之一,可以发布对象创建的事件并调用您的 Lambda 函数。您的 Lambda 函数代码可以从 S3 存储桶读取照片对象、创建缩略图版本,然后将其保存到其他 S3 存储桶中。
  • 数据和分析 – 假设您在构建分析应用程序并将原始数据存储到 DynamoDB 表中。在您编写、更新或删除表中的项目时,DynamoDB 流可以将项目更新事件发布到与表关联的流。在这种情况下,事件数据提供项目键、事件名称 (例如插入、更新和删除) 以及其他相关详细信息。您可以编写 Lambda 函数,通过聚合原始数据来生成自定义指标。
  • 网站 – 假设您在创建网站并且希望在 Lambda 上托管后端逻辑。您可以在 HTTP 上调用 Lambda 函数,使用 Amazon API Gateway 作为 HTTP 终端节点。现在,您的 Web 客户端可以调用 API,然后 API 网关 可将请求路由到 Lambda。
  • 移动应用程序 – 假设您有生成事件的自定义移动应用程序。您可创建 Lambda 函数来处理由自定义应用程序发布的事件。例如,在此情景中,您可以配置 Lambda 函数来处理自定义移动应用程序中的点击。

AWS Lambda 支持将多种 AWS 服务作为事件源。有关更多信息,请参阅 将 AWS Lambda 与其他服务一起使用。当您配置了这些事件源触发 Lambda 函数时,Lambda 函数在出现事件时自动调用。您可以定义事件源映射,这是您如何确定要跟踪的事件以及要调用的 Lambda 函数。