开始使用 AWS SAM CLI

了解如何使用 AWS SAM CLI 在本地调试 lambda 函数

欢迎来到雲闪世界。我们将学习 AWS SAM CLI 的概念。SAM 是无服务器 应用程序 模型的缩写,是 Amazon Web Services 提供的一个框架,可以利用它在本地机器上构建应用程序并将其直接部署到 AWS Lambdas。

初始背景

以前,在引入 AWS SAM CLI 之前,开发人员曾经使用在线编辑器直接在 AWS Lambda 上编写、测试和部署代码。这是通过使用 AWS 管理控制台创建 Lambda 函数来完成的。创建函数后,您可以使用 AWS Lambda 提供的在线代码编辑器在其中添加代码。

虽然,这似乎是一种非常方便的编写和测试代码的方式,无需部署,如果你有非常简单的函数,其中不包含太多复杂的逻辑,或者你正在单独处理它,那么这种方法就没问题。然而,将代码放在在线代码编辑器中的想法对我来说听起来相当吓人。在这个过程中,你无法完全控制你的代码。如果有人不小心删除了你的函数,那么你就必须从头开始重写代码,而这是我们作为开发人员应该真正避免的事情。

相反,在这个基础设施即代码的时代,大多数事情都可以通过编写代码来实现,我们应该考虑一个更强大的想法,即代码可以进行版本控制并易于管理。市场上有很多工具可用于编写和开发您的功能,一旦准备好部署,您就可以使用 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 有了一些了解,让我们继续尝试了解底层工作流程。

如果您看到上图,您会发现有两个主要部分 - 一个是"本地应用程序存储库",另一个是"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

我已经在计算机上安装了该程序,因此我收到"要求已满足"的消息。但是,如果您是第一次安装,它将根据需要下载 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

相关推荐
黑龙江亿林等保3 小时前
云ECS服务器:哈尔滨三级等保的云计算解决方案
运维·服务器·云计算
运维&陈同学11 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念
运维·docker·云原生·容器·kubernetes·云计算
科技云报道12 小时前
推动AI云产业向深向实,云·AI·算力创新发展大会即将启幕
云计算
dessler13 小时前
云计算&虚拟化-虚拟化技术介绍
linux·运维·云计算
神秘的土鸡13 小时前
丹摩征文活动 | SD3+ComfyUI的图像部署实践
人工智能·云计算·aigc·ai绘画·gpu算力·安全架构
云计算DevOps-韩老师16 小时前
【网络云计算】2024第45周周考-分组技能大赛-LVM结合RAID解题思路【RAID结合LVM】
网络·云计算·perl·devops·lvm扩容·lvm基本概念·raid基础
林农17 小时前
C03S01-Linux网络基本设置
linux·网络·云计算
容器魔方18 小时前
KubeEdge 1.19.0版本发布!更完备的节点设备能力,全新的Dashboard体验
云原生·容器·云计算
小安运维日记1 天前
CKA认证 | Day1 k8s核心概念与集群搭建
运维·云原生·容器·kubernetes·云计算·k8s
这里是苏同学1 天前
Linux操作系统之软件安装与包管理器工具
linux·运维·网络·centos·云计算