开始使用 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树莓集团 在数字经济蓬勃发展的今天,数字媒体产业作为其中的重要一环,正展现出巨大的潜力和活力。而如何运用独特的产业运营体系,打造一流的数字媒体产业园࿰…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...

Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...