当前位置: 首页 > 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…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...