了解如何使用 AWS SAM CLI 在本地调试 lambda 函数
![](https://i-blog.csdnimg.cn/direct/47ba829cb68d404fb4fc56974a114d9b.png)
欢迎来到雲闪世界。我们将学习 AWS SAM CLI 的概念。SAM 是无服务器 应用程序 模型的缩写,是 Amazon Web Services 提供的一个框架,可以利用它在本地机器上构建应用程序并将其直接部署到 AWS Lambdas。
初始背景
以前,在引入 AWS SAM CLI 之前,开发人员曾经使用在线编辑器直接在 AWS Lambda 上编写、测试和部署代码。这是通过使用 AWS 管理控制台创建 Lambda 函数来完成的。创建函数后,您可以使用 AWS Lambda 提供的在线代码编辑器在其中添加代码。
![](https://i-blog.csdnimg.cn/direct/1ca8efbac0db46aaae3271cc9d640485.png)
虽然,这似乎是一种非常方便的编写和测试代码的方式,无需部署,如果你有非常简单的函数,其中不包含太多复杂的逻辑,或者你正在单独处理它,那么这种方法就没问题。然而,将代码放在在线代码编辑器中的想法对我来说听起来相当吓人。在这个过程中,你无法完全控制你的代码。如果有人不小心删除了你的函数,那么你就必须从头开始重写代码,而这是我们作为开发人员应该真正避免的事情。
相反,在这个基础设施即代码的时代,大多数事情都可以通过编写代码来实现,我们应该考虑一个更强大的想法,即代码可以进行版本控制并易于管理。市场上有很多工具可用于编写和开发您的功能,一旦准备好部署,您就可以使用 AWS Lambda 提供的本机流程将其部署到在线服务。
了解 AWS 中的无服务器功能和应用程序
AWS 中的无服务器函数或 Lambda 函数是一段可以用任何受支持的语言(如 C#、Python、NodeJS、Ruby 等)编写的代码。此代码可以部署在 AWS 上并根据触发事件执行。AWS 中有许多受支持的事件,例如 API 网关,可用于触发 Lambda 函数。除此之外,还有其他事件,如 S3 事件、SNS 主题、SQS 队列等。所有这些事件都可用于触发 Lambda 函数执行。
另一方面,无服务器应用程序是类似服务的组合,旨在实现特定目标。此类应用程序可能由一个或多个 Lambda 函数组成,并结合其他 AWS 服务(如 DynamoDB 表或 SNS 主题)。
什么是 AWS SAM --- 无服务器应用程序模型
SAM 是亚马逊开发的开源框架,可帮助我们定义无服务器资源,如 Lambda 函数、API 网关以及其他一些资源。SAM 使用 CLI(称为 SAM CLI)提供对 API 的访问。借助此实用程序,您可以轻松定义资源并将其部署到 AWS 中的任何环境中,而无需进行大量手动工作。SAM 基于之前构建的 Cloud Formation 模板。如果您已经有使用 Cloud Formation Stack 部署无服务器资源的经验,那么使用 AWS SAM CLI 对您来说将非常容易。
现在我们对 AWS SAM 有了一些了解,让我们继续尝试了解底层工作流程。
![](https://i-blog.csdnimg.cn/direct/18f34d5bf1e9401e95763ec79356c9e8.png)
如果您看到上图,您会发现有两个主要部分 - 一个是"本地应用程序存储库",另一个是"AWS 云"。在本地存储库中,有根目录" my-sls-app-1 ",它类似于无服务器应用程序。在该应用程序内部,还有另一个目录" lambda-1 ",它是 lambda 函数的目录。在 lambda 函数目录下,我有" main.py "文件,我可以在其中编写 lambda 函数的代码。这里要注意的一点是,在根应用程序目录下,可以定义多个 lambda 函数和其他 AWS 资源。但是,为了简单起见,我想将其限制为仅一个 lambda 函数。
您可以看到的下一个项目是" sam-template.yaml ",这是 SAM 框架将用于部署应用程序的模板。我将在本系列的后面部分解释它。此模板有点类似于 Cloud Formation 模板,但其中有一些细微的修改。如果您熟悉 Cloud Formation 模板,那么您可以轻松使用此模板。开发代码后,您可以运行" sam-package "命令,该命令将使用此模板作为 SAM 框架的输入,然后将其转换为 Cloud Formation 模板并将其存储为名称" sam-deploy.yaml "。除了生成部署模板之外,SAM 框架还会创建 lambda 函数的 zip 文件并将其上传到 S3 中的预定义存储桶。此上传文件的 URL 将出现在部署模板中以供参考。
部署模板准备就绪后,您就可以将资源部署到 AWS Cloud 中了。为此,您需要运行" sam-deploy "命令,该命令将以部署模板作为输入,并根据 SAM 模板文件上指定的 AWS Lambda 函数、API 网关等资源创建 Cloud Formation Stack。此部署不仅可用于部署 Lambda 函数,还可用于部署其他服务,如 API 网关、SNS 主题、SQS 队列、Dynamo DB 表等。这一切都是为了创建和部署您的无服务器应用程序。
使用 AWS SAM 的好处
AWS SAM 能够与其他 AWS 服务集成,从而为我们提供许多可以利用的好处。
- 单一部署配置------通过使用 AWS SAM,您可以轻松地在属于同一堆栈的一个位置管理所有必要的资源
- AWS Cloud Formation 的扩展--- 由于 SAM 是作为现有 Cloud Formation 的扩展而构建的,因此您可以获得相同的部署功能的可靠性。借助此功能,您还可以在 SAM YAML 模板中使用 Cloud Formation 中可用的所有资源
- 本地调试和测试--- 借助 AWS SAM CLI,您现在可以在本地执行和测试无服务器应用程序。CLI 通过安装 Docker 映像在本地提供类似 Lambda 的执行环境并运行代码。这可以帮助您轻松地逐步执行代码并找出在从控制台直接在 Lambda 环境上运行代码时可能无法检测到的问题
安装 SAM CLI
到目前为止,我们已经对 AWS SAM 有了一定的了解。现在让我们继续学习如何在本地机器上安装它。假设您的机器上已经安装了 Python,您只需运行以下命令即可安装 CLI。
pip 安装 aws-sam-cli
![](https://i-blog.csdnimg.cn/direct/72533f49af864f72a115b497be08a4d7.png)
我已经在计算机上安装了该程序,因此我收到"要求已满足"的消息。但是,如果您是第一次安装,它将根据需要下载 SAM 包和所有必要的依赖项。
结论
在本文中,我们了解了 AWS 无服务器应用程序模型 (SAM) 的含义以及如何使用它来开发无服务器应用程序。此外,我们还了解了它的工作流程以及如何打包和部署无服务器应用程序。在我即将发表的文章中,我将演示如何在本地调试和测试无服务器应用程序,以及如何使用 SAM CLI 打包和部署无服务器应用程序。
感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)
订阅频道(https://t.me/awsgoogvps_Host)
TG交流群(http://t.me/awsgoogvpsHost)
#aws CLI cheat sheet #aws cli Debug #aws cli get S3 object #aws cli login with access key #aws cli to download from s3 #aws command line download from s3 #homebrew install aws cli#aws sdk get caller identity #aws s3 cli get object #aws s3 put object#aws s3 headobject#aws s3 put-object #aws s3 sync vs cp