AWS Serverless Application Model(SAM)可以让开发人员通过一些简单的模板和配置文件,轻松地构建基于 AWS Lambda 的 serverless 应用程序。SAM 还有自己的本地调试器和 CLI 工具。如果你是前端工程师,想要使用 Serverless 应用程序,那么这篇文章将对你有所帮助,它将详细讲解如何使用 NPM 包 @aws-cdk/aws-sam。
安装
在开始使用 @aws-cdk/aws-sam 之前,请确保已经安装 Node.js 和 AWS-CDK。要安装 @aws-cdk/aws-sam,可以按照以下命令:
--- ------- ----------------
使用
Lambda 函数
首先,我们需要定义一个 Lambda 函数。这个函数将接收两个数值作为参数,并且返回这两个数的和。让我们看看如何在 SAM 模板中定义这个函数:
---------- ----------- ----- ------------------------- ----------- -------- ----- -------- ----------- -------- ---------- ------- ------ ----- --- ----------- ----- ------- ------- ---
在这里,我们使用 AWS::Serverless::Function 类型定义了一个 Lambda 函数。该函数的 CodeUri 为 ./src,是函数代码所在的文件夹。 Handler 属性指定了处理函数的代码位置和名称。Runtime 属性指定了代码运行的环境。Events 属性定义了与该函数关联的事件源,它在这里是一个 API。
API Gateway
我们需要一个 API Gateway 来触发 Lambda 函数。在 SAM 模板中,使用 AWS::Serverless::Api 类型定义 API Gateway:
---------- ------ ----- -------------------- ----------- ---------- ----
在这里,我们使用 AWS::Serverless::Api 类型定义了一个 API Gateway。该 API 的 StageName 为 prod。
部署
现在,我们使用 AWS-CDK 部署 SAM 应用程序。使用以下命令:
--- ------
这将构建和发布应用程序至 AWS 平台。
示例代码
下面是一个完整的 SAM 模板文件,其中包含了 Lambda 函数和 API Gateway 的定义:
------------------------- ------------ ---------- -------------------------- ---------- ----------- ----- ------------------------- ----------- -------- ----- -------- ----------- -------- ---------- ------- ------ ----- --- ----------- ----- ------- ------- --- ------ ----- -------------------- ----------- ---------- ----
app.js
这是一个简单的 Node.js Lambda 函数,其中两个数相加,并返回结果。
--------------- - ----- ------- -- - ----- ---- - ------------------------------------------- ----- ---- - ------------------------------------------- ----- --- - ---- - ----- ----- -------- - - ----------- ---- ----- ---------------- ------- --- -- -- ------ --------- --
部署
使用以下命令,构建并发布 SAM 应用程序
--- ------
总结
@aws-cdk/aws-sam 简化了云基础架构的开发和运维过程,使得前端开发人员不需要成为 DevOps 工程师,也可以简单地构建和部署 serverless 应用程序。在本文中,我们介绍了如何使用 @aws-cdk/aws-sam 构建和部署一个简单的 Lambda 函数和 API Gateway,并提供了完整的示例代码和模板文件,希望能够帮助你快速地入门学习 AWS 的 serverless 技术。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f6b447aa9b7065299ccb8c8