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存储桶的图像文件自动创建缩略图,大致流程是这样的:
- 当有新的图像文件存储到S3存储桶中后,S3将触发我们配置的一个Lambda函数;
- 这个Lambda函数的功能为创建缩略图,且将缩略图比如存放在另外指定的S3存储桶中供使用;
- 以及将一些图像的元数据如:图像名称、大小、创建日期等推送到DynamoDB中存储。
使用Lambda结合CloudWatch Events 执行Cron job
另一个非常常见的案例是使用Lambda 结合 CloudWatch Events 执行Cron job。
我们在日常工作中经常会有一些定期要执行的任务,在以往一般都是通过在EC2上使用CRON来定期调用、执行相应的任务。
这样的话就需要启动EC2实例,尽管可能这台EC2大部分时间不工作,我们还是需要为其付费,而且还要负责维护这台EC2实例。那现在可以:
- 通过定义CloudWatch Events
- 然后我们可以定义一个时间间隔,比如每个小时去触发我们配置的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函数建立连接时,将会创建相应的基于资源的策略,这块要注意下,考试中可能会有相应的考点。
因此,使用基于资源的策略可以做两件事:
- 第一,可以允许其他的AWS账户调用或者管理Lambda函数。如果您需要跨账户调用Lambda函数,就需要使用基于资源的策略,以允许其他账户调用;
- 第二,允许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 源码解析 论文地址:http://arxiv.org/abs/2112.01527 项目地址:https://bowenc0221.github.io/mask2former Mask2Former的整体架构由三个组件组成: 主干特征提取器ÿ…...

【量化课程】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 前言 本篇着重阐述后端怎么实现,前端实现的部分只会粗略阐述。该实现方案是经过生产环境考验的,不是那些拿来练手的小demo。本文阐述的方案可以借鉴用来做毕设或者加到自己玩的项目中去。再次声明,…...

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

从零开始学习Linux运维,成为IT领域翘楚(七)
文章目录 🔥Linux下常用软件安装_JDK和Tomcat安装🔥Linux下常用软件安装_MySQL安装🔥Linux下常用软件安装_MySQL卸载 🔥Linux下常用软件安装_JDK和Tomcat安装 Jdk 安装 解压jdk安装包 tar -zxvf jdk-8u201-linux-x64.tar.gz -C/…...
优漫动游设计APP的UI界面需要注意哪些问题?
一、加载 加载时间的长短,很大程度的决定了用户体验是否有所提升,虽然理想中的页面加载出来应该一秒就够了,但是设计师不要忽略网络问题!如果网速不够的话,页面加载三五秒都算是快的了,所以在用户等待的过程中&a…...
面试 004
什么是 Java 内存结构 Java 内存结构就是 JVM 的运行书数据区的内存结构: 里面有堆、虚拟机栈、本地方法栈、程序计数器; 虚拟机栈:里面的数据结构是栈帧,存放了方法名,局部变量等信息 方法区在 1.8 的时候…...
CCF-202206-2-寻宝!大冒险!
目录 题目背景 问题描述 一、思路: 二、实现方法(C) 2.1、方法一(int储存) 思路: C实现如下: 2.2、方法二(结构体储存) 思路: 注意:边界…...

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

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

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

第十九章 Unity 其他 API
本节介绍一些其他经常使用的Unity类。首先,我们回顾一下Vector3向量类,它既可以表示方向,也可以表示大小。它在游戏中可以用来表示角色的位置,物体的移动/旋转,设置两个游戏对象之间的距离。在我们之前的课程中&#x…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...

认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
AWS vs 阿里云:功能、服务与性能对比指南
在云计算领域,Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商,各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5],我将从功能、服务和性能三个方面进行结构化对比分析&#…...

多模态学习路线(2)——DL基础系列
目录 前言 一、归一化 1. Layer Normalization (LN) 2. Batch Normalization (BN) 3. Instance Normalization (IN) 4. Group Normalization (GN) 5. Root Mean Square Normalization(RMSNorm) 二、激活函数 1. Sigmoid激活函数(二分类&…...