AWS Lambda 入门到放弃

白宏大
2023-12-01
  1. Lambda 简介
    AWS Lambda 是一项计算服务,可使您无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行您的代码并自动缩放,从每天几个请求到每秒数千个请求。您只需按消耗的计算时间付费 – 代码未运行时不产生费用。借助 AWS Lambda,您几乎可以为任何类型的应用程序或后端服务运行代码,而且无需执行任何管理。AWS Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量预置和自动扩展、代码监控和记录。您只需要以 AWS Lambda 支持的一种语言 (目前为 Node.js、Java、C# 和 Python) 提供您的代码。
  2. 执行环境
    底层 AWS Lambda 执行环境建立在以下各项的基础之上:
  3. 公用 Amazon Linux AMI 版本(AMI 名称:amzn-ami-hvm-2016.03.3.x86_64-gp2):有关使用 AMI 的信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon 系统映像 (AMI)。
  4. Linux 内核版本 - 4.4.35-33.55.amzn1.x86_64
  5. Lambda环境变量
  6. 应在何时使用 AWS Lambda?
    AWS Lambda 是很多应用程序场景的理想计算平台,只要您可以用 AWS Lambda 支持的语言 (即,Node.js、Java、C# 和 Python) 编写应用程序代码,并在 AWS Lambda 标准运行时环境和 Lambda 提供的资源中运行。
    在使用 AWS Lambda 时,您只需负责自己的代码。AWS Lambda 管理提供内存、CPU、网络和其他资源均衡的计算机群。这是以灵活性为代价的,这意味着您不能登录计算实例,或自定义操作系统或语言运行时。通过这些约束,AWS Lambda 可以代表您执行操作和管理活动,包括预置容量、监控机群运行状况、应用安全补丁、部署您的代码以及监控和记录您的 Lambda 函数日志。
    如果您需要管理自己的计算资源,Amazon Web Services 还提供了其他计算服务以满足您的需求。
    Amazon Elastic Compute Cloud (Amazon EC2) 服务提供灵活性和各种 EC2 实例类型供您选择。它允许您选择自定义操作系统、网络和安全性设置以及整个软件堆栈,但您负责预置容量、监控机群运行状况和性能以及使用可用区来实现容错。
    Elastic Beanstalk 提供易用的服务,您可将应用程序部署和扩展到 Amazon EC2 上,在其中您保留对底层 EC2 实例的所有权和完整控制权。
    AWS Lambda 限制列表
    无论内存分配如何,所有 Lambda 函数都会被分配定量的特定资源,而且,每个函数和每个账户都会被分配定量的代码存储。

下表列出了针对 Lambda 函数每个调用的运行时资源限制。

AWS Lambda 资源限制

资源默认限制
临时磁盘容量(“/tmp”空间)512MB
文件描述符数1024
过程和线程数(合并总数量1024
每个请求的最大执行时长300 秒
Invoke 请求正文有效负载大小 (RequestResponse)6MB
Invoke 请求正文有效负载大小 (Event)128 K
Invoke 响应正文有效负载大小 (RequestResponse)6MB

每个区域的 AWS Lambda 账户限

资源默认限制
并发执行数(请参阅Lambda 函数并行执行)100

AWS Lambda:工作原理
AWS Lambda 代表您执行您的 Lambda 函数时,它负责预配置和管理运行 Lambda 函数所需的资源。在您创建 Lambda 函数时,您指定配置信息,例如您希望允许 Lambda 函数使用的内存量和最长执行时间。调用 Lambda 函数时,AWS Lambda 根据您提供的配置设置启动容器(即,执行环境)
注意
这一部分的内容仅用于信息目的。AWS Lambda 管理容器创建和删除操作,没有供您管理容器的 AWS Lambda API。
设置容器需要一些时间并进行必需的引导,这会在每次调用 Lambda 函数时增加一些延迟。通常,在首次调用 Lambda 函数或者在更新该函数后会看到此延迟,因为 AWS Lambda 尝试重用容器进行 Lambda 函数的后续调用。
在执行 Lambda 函数之后,AWS Lambda 会保持容器一段时间,预期用于另一次 Lambda 函数调用。其效果是,服务在 Lambda 函数完成后冻结容器,如果再次调用 Lambda 函数时 AWS Lambda 选择重用容器,则解冻容器供重用。此容器重用方法的意义在于:
您的 Lambda 函数代码(handler 代码的外部,请参阅编程模型)中的任何声明保持已初始化的状态,再次调用函数时提供额外的优化功能。例如,如果您的 Lambda 函数建立数据库连接,而不是重新建立连接,则在后续调用中使用原始连接。您可以在代码中添加逻辑,在创建新连接之前检查是否已存在连接。
每个容器在 /tmp 目录中提供一些磁盘空间。冻结容器时,目录内容会保留,提供可用于多次调用的暂时性缓存。您可以添加额外的代码来检查缓存中是否有您存储的数据。有关磁盘空间大小,请参阅AWS Lambda 限制。
如果 AWS Lambda 选择重用容器,而您的 Lambda 函数在结束时有未完成的后台进程或者回调,则函数将继续它们。您应确保代码中的任何后台进程或回调(使用 Node.js 时)在代码退出前已完成。
注意
在您编写 Lambda 函数代码时,请勿假定 AWS Lambda 始终重用容器,因为 AWS Lambda 可能会选择不重用容器。根据版本或其他因素,AWS Lambda 可能仅仅创建新的容器而非重用现有容器。

 类似资料: