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

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

Java并发编程实战 Day 11:并发设计模式

【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天&#xff0c;今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案&#xff0c;它们不仅提供了优雅的设计思路&#xff0c;还能显著提升系统的性能…...