当前位置: 首页 > news >正文

AWS Lambda - 第一部分

在这里插入图片描述

Hello大家好,我们今天开始讨论AWS Lambda的内容。

SAP认证考试会涉及到很多Lambda的内容,想要通过认证考试虽然不一定非要精通开发,但需要知道Lambda的一些功能和特性、适用场景以及Lambda是如何工作的。

我们开始吧!

Lambda与其他服务一起使用

在这里插入图片描述

Lambda 可以与多个AWS服务进行集成,从而调用函数,执行一些自动化任务。比如:API网关、Kinesis、DynamoDB、S3、IOT、CloudWatch Events、CloudWatch Logs、SNS、Cognito、SQS等等,这些服务都和Lambda进行了集成,可以与其一起工作。

您可以配置触发器来调用函数,以响应如:资源生命周期事件、响应传入的 HTTP 请求、使用队列中的事件或按计划运行等。

Lambda通过与多个AWS服务的集成,可以胜任很多场景的自动化的工作。

使用Lambda结合S3自动创建缩略图

在这里插入图片描述

接下来我们就看两个比较常见的Lambda的使用案例,他们也经常出现在考试的题目中。

第一个案例是为每个上传到S3存储桶的图像文件自动创建缩略图,大致流程是这样的:

  1. 当有新的图像文件存储到S3存储桶中后,S3将触发我们配置的一个Lambda函数;
  2. 这个Lambda函数的功能为创建缩略图,且将缩略图比如存放在另外指定的S3存储桶中供使用;
  3. 以及将一些图像的元数据如:图像名称、大小、创建日期等推送到DynamoDB中存储。

使用Lambda结合CloudWatch Events 执行Cron job

在这里插入图片描述

另一个非常常见的案例是使用Lambda 结合 CloudWatch Events 执行Cron job。

我们在日常工作中经常会有一些定期要执行的任务,在以往一般都是通过在EC2上使用CRON来定期调用、执行相应的任务。

这样的话就需要启动EC2实例,尽管可能这台EC2大部分时间不工作,我们还是需要为其付费,而且还要负责维护这台EC2实例。那现在可以:

  1. 通过定义CloudWatch Events
  2. 然后我们可以定义一个时间间隔,比如每个小时去触发我们配置的Lambda函数,执行一个最长可为15分钟的任务。

这是通过无服务器架构执行Cron任务的最佳实践,CloudWatch Events和Lambda都是无服务器的,不需要我们管理任何基础设施以及为基础设施付费。

Lambda支持的运行环境

在这里插入图片描述

我们继续,Lambda支持的运行环境。

Lambda运行环境支持多种语言,如:Node.js 、Python、Ruby 、Java、Go以及.NET等。

您也可以通过自定义运行环境来使用其他的编程语言,通过这种方式Lambda几乎支持任何语言。

如果在考试题目中出现Docker相关的场景,那么在大多数情况下Lambda都不是一个很好的选择。

如果出现Docker的场景,一般AWS想让您考虑使用ECS、Fargate,或者和Docker配合很好的批处理Batch,而不是Lambda。

虽然有的时候可以通过自定义运行环境来使用Lambda 执行Docker同样的工作,但是一般不推荐这么做。所以,如果看到Docker,优先考虑ECS、Fargate或者Batch,而不是Lambda。

Lambda的使用限制

在这里插入图片描述

接下来我们讨论Lambda的使用限制。其中有一些是需要我们记住的,这样才能够判断在一些场景中是否适合使用Lambda。

  • 首先是内存,也就是提供给您的Lambda函数的内存,是在128MB到3GB之间,最高为3个G,所以如果您运行的函数如果需要超过3GB的内存,那么就无法使用Lambda。在2020年12月1日左右,AWS对外公布Lambda已经最高支持10G的内存了,比之前提高了3倍以上。
  • 然后CPU,Lambda是与配置的内存成正比的方式线性分配CPU处理能力的。也就是说,您无法手动指定需要多少CPU计算能力。您指定的内存越大,那么获得的CPU计算能力越高。在内存为1792 MB 时,函数拥有相当于一个完整 vCPU的处理能力。不过也要注意您的代码是支持多线程的,否则即使分配了多vCPU也无法充分利用。
  • 然后,函数的超时时间为15分钟,您的函数运行不能超过15分钟。所以如果在考试中有题目要运行任务超过15分钟的场景,那么Lambda就不是一个很好的选择。
  • Lambda函数的/tmp目录,用来下载和存储临时文件的目录,最大支持512MB存储空间。所以如果您从S3拉取比如2G的文件然后使用函数来处理的话,是做不到的,因为您的函数的最大存储空间为512MB。
  • 部署程序包大小包括层最大支持250MB,您上传到AWS的程序包是不能超过250M的。所以,要注意的一点是,您需要结合/tmp来确定有多少空间来运行您的Lambda函数。
  • 最后,默认情况下,最大的并发的数量是1000。也就是最高可以同时运行1000个函数实例。注意这是一个软限制,可以请求在提高限制。

Lambda的延迟因素

在这里插入图片描述

好的,接下来我们来讨论Lambda的延迟因素。

我们前面介绍了为Lambda分配内存,从而获得更高的CPU计算能力。其实要优化Lambda的性能,提高执行的效率,除了这些还需要了解并发限制、冷启动因素以及做好Lambda的相关监控,下面我们就分别来讨论:

首先是Lambda函数运行的并发限制,因为资源从来都不是无限的,对吧。

我们上一张PPT讨论过,在默认情况下,最大的并发的数量是1000,是软限制,可以提交申请增加。所以在使用Lambda时,先要评估默认的并发数是不是满足需要,如果不满足提前提交申请增加并发。

只增加并发数量,并不是就意味着这样就OK了,这只代表马路宽了一些,可以同时经过的车多了,但还有一个非常容易忽视的因素—冷启动时间。

什么是冷启动时间呢?我们看一下这个图,当我们在第一次调用Lambda函数时,它要从S3下载代码,下载所有依赖项,创建一个容器并在执行代码之前初始化运行环境,这整个持续时间(除了代码执行)就是冷启动时间。

如果在函数执行过程中,有新的请求调用函数,也就是出现了函数并发调用,那么会在分配一个新的实例处理该事件,新的实例在执行我们的函数代码前,同样需要下载代码,下载所有依赖项,创建一个容器,初始化运行环境等等,这样势必会增加Lambda函数的响应延迟。

在re:invent 2019,AWS推出了一个“预配置并发”这个功能,可以配置预热Lambda执行环境。这样的话,在调用函数时可以使用环境来立即执行代码,而无需花费时间进行冷启动。

最后,要优化Lambda函数的延迟,还要做好相应的监控。 知道哪里的问题才能想办法优化。 CloudWatch仅显示Lambda函数的一些指标,如果我们的使用场景是Lambda结合多个AWS服务,且需要知道下游AWS服务(例如DynamoDB,S3)对于每个lambda调用的情况的话,就可以使用X-Ray。X-Ray可以通过可视化的方式,跟踪和调试lambda函数和其他AWS服务之间的问题。

Lambda安全相关

在这里插入图片描述

接下来我们讨论Lambda安全相关。

首先,和其他服务一样,可以使用IAM来管理对 Lambda API 和资源(如函数和层)的访问。

然后,Lambda 函数也具有一个策略,称为执行角色,这个执行角色的配置在很多AWS服务中也都存在,是用来向函数授予访问 AWS 服务和资源的权限,是函数被调用时代入的角色。比如您的Lambda函数需要写入DynamoDB,就需要给函数分配执行角色并提供相应的写入权限。

除此之外,Lambda还有一个叫作基于资源的策略,和S3的存储桶策略有点类似,使用JSON格式定义策略。

我们来看一个策略:

这个策略的大致内容是,允许这个账户下的S3的一个存储桶调用名为 my-function 的函数。 也就是通过Lambda的基于资源的策略,允许AWS服务调用Lambda函数。

另外要注意下,当您将这个S3或者其他AWS服务与Lambda函数建立连接时,将会创建相应的基于资源的策略,这块要注意下,考试中可能会有相应的考点。

因此,使用基于资源的策略可以做两件事:

  1. 第一,可以允许其他的AWS账户调用或者管理Lambda函数。如果您需要跨账户调用Lambda函数,就需要使用基于资源的策略,以允许其他账户调用;
  2. 第二,允许AWS服务调用或管理您的Lambda函数,比如上面的这个S3存储桶的例子。

好,以上是Lambda权限策略部分。

以上就是我们今天课时的内容,我们讨论了AWS Lambda - 第一部分的内容,希望能够给大家带来帮助。

相关文章:

AWS Lambda - 第一部分

Hello大家好,我们今天开始讨论AWS Lambda的内容。 SAP认证考试会涉及到很多Lambda的内容,想要通过认证考试虽然不一定非要精通开发,但需要知道Lambda的一些功能和特性、适用场景以及Lambda是如何工作的。 我们开始吧! Lambda与…...

Java 基础进阶篇(七)—— 面向对象三大特征之三:多态

文章目录 一、多态的概述二、多态中成员访问特点 ★三、多态的优势与劣势四、多态下的类型转换4.2 自动类型转换(从子到父)4.2 强制类型转换(从父到子)4.3 instanceof 关键字 一、多态的概述 多态:是指执行同一个行为…...

day9 实现UDP通信

目录 socket函数拓展 UDP通信实现过程 代码实现 socket函数拓展 send与recv函数: /*用于发送数据*/ ssize_t send(int sockfd, const void *buf, size_t len,int flags);/*用于接收数据*/ ssize_t recv(int sockfd, void *buf, size_t len,int flags);/*前三个…...

自然语言处理(NLP)在放射学报告评价中的应用:应用和技术进展

自然语言处理(NLP)在放射学报告评价中的应用:应用和技术进展 写在最前面摘要引言先进的技术BERT算法优点 Applications in Radiology 放射学应用Quality 质量将关键发现通知转诊临床医生放射科关键绩效指标和评估 个别放射科医生的表现同行学…...

日常开发为什么需要做Code Review

日常开发为什么需要做Code Review 一、背景 最近在开始一个新的项目,在查看项目中代码及具体细节时,发现这个项目真实一堆乱麻,没有规律可循,可总结下这个项目的缺陷 没有规律可循,没有结构性设计不做公共封装&#…...

OSPF的优化

O_ASE --- 标志域外路由信息 --- 因为域外的路由信息不可控性较强,所以,信任程度较低,我们将其优先级设置为150。 LSA --- 链路状态通告 --- OSPF协议在不同网络环境下产生的用于携带和传递不同的信息。 LSDB --- 链路状态数据库 SPF --- 最短…...

C++项目中打破循环依赖的锁链:实用方法大全

C项目中打破循环依赖的锁链 一、简介(Introduction)1.1 循环依赖的定义(Definition of Circular Dependencies)1.2 循环依赖带来的问题(Problems Caused by Circular Dependencies)1.3 解决循环依赖的重要性…...

IDEA连接HBase

新建maven工程 打开pom.xml添加hbase需要的依赖 <dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.3.5</version> </dependency><dependency><groupId>org.apa…...

Mask2Former来了!用于通用图像分割的 Masked-attention Mask Transformer

原理https://blog.csdn.net/bikahuli/article/details/121991697 源码解析 论文地址&#xff1a;http://arxiv.org/abs/2112.01527 项目地址&#xff1a;https://bowenc0221.github.io/mask2former Mask2Former的整体架构由三个组件组成&#xff1a; 主干特征提取器&#xff…...

【量化课程】01_投资与量化投资

文章目录 1.1 什么是投资1.1.1 经济意义上的投资1.1.2 投资的分类1.1.3 金融投资1.1.4 个人投资者投资品种1.1.5 投资VS投机 1.2 股票投资的基本流程1.3 常见的股票投资分析流派1.3.1 投资者分析流派 1.4 什么是量化投资1.4.1 量化投资基本概念1.4.2 量化投资的优势1.4.3 量化投…...

SpringBoot实现导出Excel功能

1 问题背景 需求要做一个导出excel的功能 2 前言 本篇着重阐述后端怎么实现&#xff0c;前端实现的部分只会粗略阐述。该实现方案是经过生产环境考验的&#xff0c;不是那些拿来练手的小demo。本文阐述的方案可以借鉴用来做毕设或者加到自己玩的项目中去。再次声明&#xff0c;…...

NSSCTF之Misc篇刷题记录⑧

NSSCTF之Misc篇刷题记录 [MMACTF 2015]welcome[广东强网杯 2021 团队组]欢迎参加强网杯[虎符CTF 2022]Plain Text[SWPUCTF 2021 新生赛]原来你也玩原神[SWPUCTF 2021 新生赛]我flag呢&#xff1f;[鹤城杯 2021]New MISC NSSCTF平台&#xff1a;https://www.nssctf.cn/ PS&…...

从零开始学习Linux运维,成为IT领域翘楚(七)

文章目录 &#x1f525;Linux下常用软件安装_JDK和Tomcat安装&#x1f525;Linux下常用软件安装_MySQL安装&#x1f525;Linux下常用软件安装_MySQL卸载 &#x1f525;Linux下常用软件安装_JDK和Tomcat安装 Jdk 安装 解压jdk安装包 tar -zxvf jdk-8u201-linux-x64.tar.gz -C/…...

优漫动游设计APP的UI界面需要注意哪些问题?

一、加载   加载时间的长短&#xff0c;很大程度的决定了用户体验是否有所提升&#xff0c;虽然理想中的页面加载出来应该一秒就够了&#xff0c;但是设计师不要忽略网络问题!如果网速不够的话&#xff0c;页面加载三五秒都算是快的了&#xff0c;所以在用户等待的过程中&a…...

面试 004

什么是 Java 内存结构 Java 内存结构就是 JVM 的运行书数据区的内存结构&#xff1a; 里面有堆、虚拟机栈、本地方法栈、程序计数器&#xff1b; 虚拟机栈&#xff1a;里面的数据结构是栈帧&#xff0c;存放了方法名&#xff0c;局部变量等信息 方法区在 1.8 的时候&#xf…...

CCF-202206-2-寻宝!大冒险!

目录 题目背景 问题描述 一、思路&#xff1a; 二、实现方法&#xff08;C&#xff09; 2.1、方法一&#xff08;int储存&#xff09; 思路&#xff1a; C实现如下&#xff1a; 2.2、方法二&#xff08;结构体储存&#xff09; 思路&#xff1a; 注意&#xff1a;边界…...

二叉搜索树中的众数

1题目 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定 BST 满足如下定义&…...

认识JSP

什么是JSP? JSP&#xff08;Java Server Pages&#xff09;是一种类似于HTML的标记语言&#xff0c;用于创建动态Web页面。与HTML不同的是&#xff0c;JSP页面中可以嵌入Java代码&#xff0c;由Web服务器在动态页面中生成HTML代码&#xff0c;从而实现Web应用程序的前端交互效…...

MySQL数据管理

一、MySQL数据库管理 1、库和表 行&#xff08;记录&#xff09;&#xff1a;用来描述一个对象的信息 列&#xff08;字段&#xff09;&#xff1a;用来描述对象的一个属性 2、常用的数据类型 int &#xff1a;整型 float &#xff1a;单精度浮点 4字节32位 double &…...

第十九章 Unity 其他 API

本节介绍一些其他经常使用的Unity类。首先&#xff0c;我们回顾一下Vector3向量类&#xff0c;它既可以表示方向&#xff0c;也可以表示大小。它在游戏中可以用来表示角色的位置&#xff0c;物体的移动/旋转&#xff0c;设置两个游戏对象之间的距离。在我们之前的课程中&#x…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...