随着云端技术的不断发展演进,人们对开发和部署更为便捷、高效的应用程序的需求也日益增长。Serverless 架构,即“无服务器架构”,应运而生。它屏蔽了底层服务器的管理细节,使得开发者可以将精力集中到应用程序的开发和功能实现,从而大大提高应用程序的效率和质量。
本文将从零开始介绍如何打造一个简单的 Serverless 应用,让您对 Serverless 应用有更深入的了解。文章将涵盖以下内容:
- Serverless 应用的基本原理和工作流程;
- 如何搭建 CloudFormation 环境和部署 Serverless 应用;
- 一个 Serverless 应用的示例:通过 AWS Lambda 和 AWS API Gateway 实现一个 Todo List 应用。
一、 Serverless 应用的基本原理和工作流程
Serverless 应用具体来讲,是运行在云端平台上的一种应用程序,其中的“无服务器”的含义是无需管理底层服务器的配置、复杂性和维护工作。Serverless 应用程序的整个运行周期都位于云端平台上,当有请求发起时,云平台会自动开启必要的资源并执行应用程序的代码。这种“按需分配资源”的方式,可以极大地提高应用程序的弹性、可靠性和可扩展性,同时,也可以使得开发者不必花费过多时间和精力去维护服务器基础设施,更加专注于应用程序的核心业务功能和开发。
下图展示了 Serverless 应用程序的基本工作流程。
在 Serverless 应用程序中,最核心的两个组件分别是 AWS Lambda 和 AWS API Gateway。
- AWS Lambda 是面向事件驱动的无服务器计算服务。它可以直接处理用户发起的事件,而无需为每个请求启动一个独立的服务器实例。当事件驱动时,AWS Lambda 会开启必要的运行环境来运行请求中的代码。AWS Lambda 是目前市场上最热门的 Serverless 计算平台,支持多种编程语言和许多常用的 AWS 服务和扩展库。
- AWS API Gateway 则是全托管的 REST 和 WebSocket API 服务,它可以将 Lambda 函数和其他 HTTP 端点绑定在一起,并提供灵活的流量管理和身份验证选项。
二、 如何搭建 CloudFormation 环境和部署 Serverless 应用
AWS CloudFormation 是一种部署 AWS 资源的 AWS 服务,它可以用来自动化创建和管理资源。以下是从头开始在 AWS Lambda 中使用 CloudFormation 来构建 Serverless 应用的步骤:
- 设定仓库和 Lambda 函数。
首先,您需要在 AWS Lambda 中为您的 Serverless 应用程序创建一个新函数。在此之后,您可以将函数的代码上传到 AWS 并为其创建一个引导程序。一旦您的代码和引导程序被上传成功,您即可使用 CloudFormation 根据您的定义来创建新的 AWS 资源。
- 创建 CloudFormation 栈。
为了部署 Serverless 应用,您需要首先创建一个新的 AWS CloudFormation 栈。栈是您准备在其中创建和管理 AWS 资源的一组 AWS 资源。栈可以是单独的,也可以包含其他栈。在创建栈步骤结束后,AWS CloudFormation 将配置、设置和管理您的资源。
- 定义并评估 AWS CloudFormation 模板。
AWS CloudFormation 模板是描述 Stack 所需的 AWS 资源的 JSON 文件。可以使用基础 AWS CloudFormation 模板来快速开始定义资源。
在线编辑器是可用的 CloudFormation 模板编辑器。它提供了一些有可能渲染错误的有用特性,例如语法检查和格式检查几。
- 部署 AWS CloudFormation 模板。
在结束定义您的 CloudFormation 模板并愿意为您的 AWS 资源分配提供的配置和资源时,请建立和部署 CloudFormation 模板。一旦您完成了该过程,CloudFormation 便会自动识别并配置您的资源。
三、 示例:通过 AWS Lambda 和 AWS API Gateway 实现一个 Todo List 应用
作为一个简单的 Serverless 应用程序示例,我们将开发一个 Todo List 应用。我们假设您有对 AWS Lambda 和 AWS API Gateway 的基本了解。
在本示例应用中,我们将使用以下技术:
- Node.js 作为开发语言;
- AWS Lambda 作为事件驱动的无服务器计算服务;
- AWS API Gateway 来实现 RESTful API;
- AWS DynamoDB 用于数据存储。
1. 创建一个 Todo List 应用的 API Gateway 资源
首先,您需要在 AWS 控制台中创建一个名为 "todo-api-gateway" 的 REST API。该 API 公开了一组 RESTful 资源,可以允许我们创建、列出、更新和删除待办事项。创建 API Gateway 后,您还需要创建 Lambda 函数,处理 API Gateway 的请求。
2. 新建一个 DynamoDB 表,并定义以待办事项为键的项目
在 AWS 控制台的 DynamoDB 页面中,新建一个名为 todos_table 的 DynamoDB 表。数据模型应至少包含以下属性:
- id:一个唯一的标识符;
- content:待办事项的内容;
- completed:指示待办事项是否已完成的布尔值。
3. 开始编写 Lambda 函数的代码
编写 Lambda 函数,该函数负责处理 API Gateway 发送的请求以及与 DynamoDB 交互。下面是示例 Lambda 函数的基本模板代码。
-- -------------------- ---- ------- -- ---------- --- -------- ----- --- - ------------------- ----- ---- - ---------------- ------------------- ------- ----------- --- ----- --------- - --- ------------------------------ -- -------- ------ ------ -- -------------- - ------- -------- --------- -- - --- ---- - ---------------------------- -- ---------- -------- --- -------- ------ -- -- ---------- ------ - --- ------ ------ -- --- ---- - - --- ---------- -------- ------------- ---------- ----- -- -- ---------- ------ - -------- --------- ------- -- --- ------ - - ---------- -------------- ----- ---- -- -- ---------- ------- --- --------- ------- -- --------------------- ----- ----- -- - -- ----- - ------------- ------ - ---- - -------------- ------ - --- --
在接下来的代码中,我们将引用此基本模板,并根据其需求修改它。
4. 编写 Lambda 函数的创建、列出、更新和删除方法
Todo List 应用程序的核心方法是创建、列出、更新和删除待办事项。下面是每个方法的代码示例。
-- -------------------- ---- ------- -- ---------- --- -------- ------ -------------- - ------- -------- --------- -- - --- ---- - ---------------------------- -- ------ - --- ------ ------ -- --- ---- - - --- ---------- -------- ------------- ---------- ----- -- -- ------ - -------- ----- ------- -- --- ------ - - ---------- -------------- ----- ---- -- -- ------- --- ----- ------- -- --------------------- ----- ----- -- - -- ----- - ------------- ------ - ---- - -------------- ------ - --- -- -- ---------- --- ------ ------ ------------ - ------- -------- --------- -- - --- ------ - - ---------- ------------- -- -- ------- --- ------ ------- -- ---------------------- ----- ----- -- - -- ----- - ------------- ------ - ---- - -------------- ------------ - --- -- -- ---------- --- -------------- ------ -------------------- - ------- -------- --------- -- - --- -- - ------------------------ --- ------ - - ---------- -------------- ---- - ----- -- -- ----------------- ---- --------- - ------------ -------------------------- - ------------- ---- -- ------------- --------- -- -- ------- --- ------------ ------- -- ------------------------ ----- ----- -- - -- ----- - ------------- ------ - ---- - -------------- - ---------- ------------- ------ ---- -- ----------- --- - --- -- -- ---------- --- -------- ------ -------------- - ------- -------- --------- -- - --- -- - ------------------------ --- ------ - - ---------- -------------- ---- - ----- -- - -- -- ------- --- ------------ ------- -- ------------------------ ----- ----- -- - -- ----- - ------------- ------ - ---- - -------------- - ---------- ------------- ------- ------ --- - --- --
这些方法在结合 API Gateway 和 HTTP 请求时可以使用,即:
- 发起 POST 请求以创建一个新的待办事项;
- 发起 GET 请求以列出待办事项;
- 发起 PATCH 请求以将单个待办事项标记为已完成;
- 发起 DELETE 请求以从列表中删除单个待办事项。
四、 总结
本文将从零开始介绍如何打造一个简单的 Serverless 应用,并附带示例代码,希望可以帮助您深入了解 Serverless 应用程序及其运作的基本原理。您可以通过本文提供的代码,使用 AWS Lambda 和 AWS API Gateway 创建自己的 Serverless 应用程序,并通过本文介绍的基本步骤进行部署。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64784cd5968c7c53b048b99e