在这篇博客中,我们将学习如何使用CLI创建、构建和测试无服务器应用程序模型。那么,让我们开始吧。
AWS无服务器应用模型 (SAM)是一个开源的框架,用于在亚马逊网络服务上开发无服务器应用。
它允许我们使用速记语法来表达函数、API、数据库和事件源映射。我们可以使用YAML来定义和建模我们的应用,每个资源只需几行。在部署过程中,SAM将SAM语法转换并扩展为AWS CloudFormation语法,使我们能够更快地构建无服务器应用程序。
前提条件
- AWS账户
- Python 3.9
- Docker,用于在本地测试应用程序
- Homebrew,用于Linux和macOS
步骤1:安装SAM CLI
使用以下命令,生成一个哈希值以验证下载的安装文件的完整性和真实性。
sha256sum aws-sam-cli-linux-x86_64.zip
解压缩安装文件。
unzip aws-sam-cli-linux-x86_64.zip -d sam-installation
安装AWS SAM CLI。
sudo ./sam-installation/install
验证安装。
sam --version


步骤2:创建一个SAM项目
对于初始化SAM应用程序的运行。
sam init
会有一些屏幕上的提示,所以在这个例子中,我将选择AWS快速启动模板,运行时间和压缩包类型,以及一个Hello World实例。


给项目起个名字,它将开始克隆并生成应用程序。


这将创建一个与我们指定的项目名称相同的目录。下面是项目目录的内容列表。


有三个文件很重要。
template.yaml:包 含AWS SAM模板,它定义了我们的应用程序所使用的AWS资源。- **
hello_world/app.py:**包含我们Lambda处理器的逻辑。 - **
hello_world/requirements.txt:**用于sam构建,包含应用程序需要的任何Python依赖。
第3步:构建SAM应用程序
移动到项目目录,样本应用程序的template.yaml文件所在的位置,并运行此命令。
sam build


在这里,为了构建我们的依赖关系,AWS SAM CLI附带了一些Lambda运行时的抽象,并将源代码转移到暂存文件夹中,以便一切都准备好被打包和部署。sam build 命令编译我们应用程序的依赖关系,并将我们的源代码转移到.aws-sam/build 下的文件夹,在那里它将被打包并发布到Lambda。
第四步:在本地测试SAM应用程序
在开发我们的应用程序时,我们可能会发现在本地测试是很方便的。AWS SAM CLI中的sam local命令允许我们在模拟Lambda执行环境的Docker容器中运行我们的应用程序。
有两种方法可以做到这一点。
- 在本地托管我们的API
- 直接调用我们的Lambda函数
在本地托管我们的API
运行这个命令。
sam local start-api


Docker镜像可能需要一些时间来加载。我们可以在它加载后浏览对我们的应用程序的请求。
http://127.0.0.1:3000/hello


在这里,start-api 命令创建了一个本地端点,作为我们REST API端点的副本。它下载了一个本地执行容器,我们可以在其中运行我们的函数。最终的结果与我们使用AWS云来调用我们的函数时一样。
直接调用我们的Lambda函数
运行这个命令。
sam local invoke "HelloWorldFunction" -e events/event.json


invoke命令直接调用我们的Lambda函数并接受来自我们的输入事件有效载荷。
总结
在这篇博客中,我们已经学会了如何创建、构建和测试我们的SAM应用程序。如果你有任何疑问,可以与我联系。