开始使用 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
相关文章:
开始使用 AWS SAM CLI
了解如何使用 AWS SAM CLI 在本地调试 lambda 函数 欢迎来到雲闪世界。我们将学习 AWS SAM CLI 的概念。SAM 是无服务器 应用程序 模型的缩写,是 Amazon Web Services 提供的一个框架,可以利用它在本地机器上构建应用程序并将其直接部署到 AWS Lambdas。…...
RK3588 RTL8125BG调试
RTL8125B是一款PCIE转RJ45的网卡控制器芯片,在底层调试时只需配置PCIE即可 diff --git a/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi b/arch/arm64/boot/dts/rockchip/rk3588-nvr-demo.dtsi index 798359eaf061..d8a7a43cdfa0 100755 --- a/arch/arm64/bo…...
Python自省(机制与函数)
Python 自省(Introspection)是一种强大的特性,它允许程序在运行时检查对象的类型、属性以及它们如何相互关联。这种能力让 Python 非常适合于快速开发、调试以及编写需要高度动态交互的代码。Python 的自省机制主要通过内置的函数和类型来实现…...
【JavaEE】JVM 内存区域划分,以及 Java 垃圾回收机制引用计数器,可达性分析等
目录 1. JVM执行流程 2. JVM运行时数据区 2.1 堆 2.2 Java虚拟机栈(线程私有) 2.3本地方法栈(线程私有) 2.4 程序计数器 2.5 元数据区 3. JVM的类加载机制 1) 加载 2) 验证 3) 准备 4) 解析 5) 初始化 双亲委派模型 4. java垃圾回收 4.1 死亡对象判断方法 a) …...
Web开发:C# MVC + Session机制实现授权免登录demo
token基础demo 【需求】 Home/Index 登录界面,校验成功后可以登录到Main/Index ,用户登录3分钟内关闭网站,再次访问Home/Index时可以免密登录Main/Index 【配置文件-Program.cs】 var builder WebApplication.CreateBuilder(args);// Add services t…...
【Qt】QWidget的font属性
QWidget的font属性 API说明 font() 获取当前 widget 的字体信息. 返回 QFont 对象. setFont(const QFont& font) 设置当前 widget 的字体信息. 关于Qfont 属性说明 family 字体家族. ⽐如 "楷体", "宋体", "微软雅⿊" 等. pointSiz…...
每天一个数据分析题(四百八十五)- 统计推断
假设检验中,关于p值说法正确的是? A. p值是在原假设成立时,样本观察结果发生的概率。 B. p值是接受原假设的概率 C. p值是相对样本统计量而言的 D. 用p值做决策比用域值做决策更准确 数据分析认证考试介绍:点击进入 题目来源…...
基于STM32的农业病虫害检测检测系统:OpenCV、MQTT、Flask框架、MySQL(代码示例)
一、项目概述 随着全球农业现代化的不断推进,智能农业监测系统应运而生。此项目旨在通过实时监测土壤湿度、温度等环境数据,结合作物生长状态的分析,提高农业生产效率和作物质量。通过引入STM32单片机、OpenCV图像处理技术和后端数据分析系统…...
算法日记day 39(动归之打家劫舍)
一、打家劫舍1 题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。…...
Vue 生命周期详解含demo、面试常问问题案例
Vue 生命周期详解、面试常问问题案例 含 demo 文章目录 Vue 生命周期详解、面试常问问题案例 含 demo一、Vue 生命周期是什么二、Vue 中如何使用生命周期钩子1. **beforeCreate**2. **created**3. **beforeMount**4. **mounted**5. **beforeUpdate**6. **updated**7. **beforeD…...
表单自定义规则的校验
在 Vue 3 中使用 Element Plus 的表单组件进行自定义规则的校验非常方便。Element Plus 提供了 ElForm 和 ElFormItem 组件,它们内置了表单验证的功能。下面我将详细介绍如何使用 Element Plus 进行自定义规则的校验。 创建表单及规则 首先,你需要创建…...
JVM 有哪些垃圾回收算法(回收机制)?
JVM 有哪些垃圾回收算法(回收机制)? 标记-清除算法 在Java虚拟机中,标记-清除算法是一种用于垃圾回收的算法。它分为两个阶段:标记阶段和清除阶段。 在标记阶段,垃圾收集器会遍历堆内存中的所有对象&…...
2024年高教社杯数学建模国赛A题思路解析+代码+论文
2024年高教社杯全国大学生数学建模竞赛(以下简称国赛)将于9月5日晚6时正式开始。 下文包含:2024国赛思路解析、国赛参赛时间及规则信息说明、好用的数模技巧及如何备战数学建模竞赛 C君将会第一时间发布选题建议、所有题目的思路解析、相…...
Linux中yum、vim、gcc/g++的使用
目录 一、Linux 软件包管理器 yum 什么是软件包 关于 rzsz 查看软件包★ 如何安装软件★ 如何卸载软件★ Linux 开发工具 二、Linux编译器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操作总结 如果在vim界面不小心按了Ctrl …...
基于模糊神经网络的金融序列预测算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于模糊神经网络的金融序列预测算法matlab仿真,根据序列的MAD,RSI,KD等指标实现序列的预测和最终收益分析。 2.测试软件版本以及运行结果展示 MATLAB2022A版本…...
STM32 HAL库常用功能封装
关中断 /*** brief 关闭所有中断(但是不包括fault和NMI中断)* param 无* retval 无*/ void sys_intx_disable(void) {__ASM volatile("cpsid i"); }开中断 /*** brief 开启所有中断* param 无* retval 无*/ void sys_intx_enabl…...
golang zap日志库 打印日志时显示的源文件始终是同一个问题解决方法 zap.Option函数可选项 zap.AddCallerSkip(1) 使用示例
这种情况一般出现在我们对zap日志库进行二次封装的情况下, 在打印日志的时候的源文件非我们期望的文件,如下 原因分析 出现这个问题的原因是zap函数内部在调用 runtime.Caller 时的skip层级不对了,因为我们进行了二次封装,所以za…...
BL196MQTT远程IO模块助力智能楼宇自动化升级
在智能楼宇自动化领域,每一个细节的优化都能带来整体效率与舒适度的显著提升。钡铼技术的BL196MQTT远程IO模块,以其卓越的灵活性和强大的性能,正在成为这一领域中推动楼宇自动化升级的关键力量。 钡铼技术IOy系列:创新与灵活性的…...
【面试宝典】Java面向对象面试题总结(上)
一、重写和重载 在Java中,重写(Override)和重载(Overload)是面向对象编程中两个非常重要的概念,它们都与方法的定义和调用有关,但两者有着本质的区别。 1、重写(Overrideÿ…...
如何运用独特的产业运营体系打造一流的数字媒体产业园
如何运用独特的产业运营体系打造一流的数字媒体产业园 2024-08-15 17:37树莓集团 在数字经济蓬勃发展的今天,数字媒体产业作为其中的重要一环,正展现出巨大的潜力和活力。而如何运用独特的产业运营体系,打造一流的数字媒体产业园࿰…...
UG/NX二次开发必备:C#和C++项目DLL自动签名与拷贝全攻略(附避坑指南)
UG/NX二次开发实战:C#与C项目DLL签名与部署全流程解析 在工业设计软件领域,Siemens NX(原Unigraphics)的二次开发能力一直是工程师扩展功能、提升效率的重要途径。而DLL文件的数字签名环节,则是确保开发成果能在正版NX…...
RimWorld开局定制利器:EdB Prepare Carefully深度应用指南
RimWorld开局定制利器:EdB Prepare Carefully深度应用指南 【免费下载链接】EdBPrepareCarefully EdB Prepare Carefully, a RimWorld mod 项目地址: https://gitcode.com/gh_mirrors/ed/EdBPrepareCarefully 在RimWorld的殖民挑战中,开局配置往往…...
【问题处理】如何解决PSQLException中2-byte值超出范围导致的整数溢出错误
1. 什么是PSQLException中的2-byte值溢出错误 最近在调试一个Java应用时,遇到了一个让人头疼的错误:Tried to send an out-of-range integer as a 2-byte value: 110629。这个错误看起来有点晦涩,但其实理解起来并不复杂。简单来说࿰…...
美胸-年美-造相Z-Turbo真实案例:快速生成24套手游服装方案
美胸-年美-造相Z-Turbo真实案例:快速生成24套手游服装方案 1. 项目背景与挑战 在手游《幻境物语》的角色设计阶段,美术团队面临一个紧迫需求:为游戏中的"花语使者"职业设计24套不同风格的服装方案。传统手工绘制方案需要至少3周时…...
毫米波雷达测速的“火眼金睛”:从汽车ACC到手势识别,Doppler FFT如何分辨不同速度的目标?
毫米波雷达测速的“火眼金睛”:从汽车ACC到手势识别,Doppler FFT如何分辨不同速度的目标? 在自动驾驶汽车的前方,一辆卡车突然减速,而右侧车道有摩托车正在加速超车——毫米波雷达如何在这复杂的场景中,准确…...
基于springboot运动服装销售系统设计与开发(源码+精品论文+答辩PPT等资料)
博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...
Elasticsearch踩坑记录:scaled_float字段查询结果和你想的不一样?
Elasticsearch中的scaled_float:为什么你的查询结果总是不准确? 刚接触Elasticsearch的开发者经常会遇到一个令人困惑的现象:明明存储的是精确的浮点数,查询时却返回了意料之外的结果。这背后往往与scaled_float字段类型的特殊处理…...
解锁新可能:ArkData 在智能穿戴设备中的应用
解锁新可能:ArkData 在智能穿戴设备中的应用随着人们对健康生活的重视,智能穿戴设备愈发普及。这些设备能够实时收集心率、步数、睡眠等健康数据,为人们的健康管理提供重要参考。在这一背景下,如何高效管理和利用这些健康数据成为…...
springboot框架-美妆化妆品商城进货系统
目录系统架构设计技术选型与依赖数据库设计核心功能实现库存预警机制前端交互建议测试与部署扩展性考虑项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用SpringBoot MyBatis-Plus MySQL构建后端,…...
C++/Qt 使用 Tushare 获取股票信息
探索数据之源:使用tushare为Qt/C学习项目获取股票数据在进行金融量化分析或学习金融市场行为时,获取高质量、结构化的股票数据是至关重要的第一步。作为一个计划将Qt/C用于金融数据可视化或策略模拟的学习者,我近期深入体验了使用Python库tus…...
