AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Lambda 函数

在您打包自定义代码(包括任何依赖项)并将其上传到 AWS Lambda 中之后,您就创建了 Lambda 函数

如果您是首次接触 AWS Lambda,可能会问:哪些类型的代码可以作为 Lambda 函数运行?AWS Lambda 如何执行我的代码?AWS Lambda 如何知道运行我的 Lambda 代码所需的内存量和 CPU 要求?以下部分概述了 Lambda 函数的工作方式。

根据您的情景,您可以构建应用程序,在其中使用 AWS Lambda 服务运行您的所有或部分应用程序代码。有关更多信息,请参阅 构建 Lambda 函数如何使用 提供了示例,说明如何为特定情景创建 Lambda 函数。

这一主题中的部分提供有关 Lambda 函数的下列介绍性信息:

计算需求 - Lambda 函数配置

Lambda 函数包含代码以及任意关联依赖项。此外,Lambda 函数还有与之关联的配置信息。最初,您在创建 Lambda 函数时指定配置信息。Lambda 为您提供 API 来更新一些配置数据。Lambda 函数配置信息包括以下关键要素:

  • 您需要的计算资源 - 您仅指定要为您的 Lambda 函数分配的内存量。AWS Lambda 分配与内存成比例的 CPU 处理能力,方式是使用与通用 Amazon EC2 实例类型(如 M3 类型)相同的比率。例如,如果为您的 Lambda 函数分配 256 MB 内存,则该函数获得的 CPU 份额将是仅分配 128 MB 内存时的两倍。

    您可以更新配置,以 64 MB 的增量请求额外的内存 (从 128MB 到 1536 MB)。有关相关限制的信息,请参阅AWS Lambda 限制

    要更改您的 Lambda 函数所需的内存量,请执行以下操作:

    1. 登录 AWS 管理控制台,然后导航到 AWS Lambda 控制台。

    2. 选择您要更改其内存大小的函数。

    3. 单击 Configuration 选项卡,然后展开 Advanced settings

    4. Memory (MB) 列表中,选择您所需的内存量。

     

    (可选)您可以使用以下 AWS CLI 命令更新您的函数的内存大小(使用有效的 64 MB 增量):

    Copy
    $ aws lambda update-function-configuration \ --function-name your function name \ --region region where your function resides \ --memory-size memory amount \ --profile adminuser

    有关设置和使用 AWS CLI 的信息,请参阅步骤 1:设置 AWS 账户和 AWS CLI

     

  • 最长执行时间(超时)- 为运行您的 Lambda 函数所用的 AWS 资源支付费用。为了防止您的 Lambda 无限期运行,您可以指定超时。在达到指定超时时间时,AWS Lambda 会终止您的 Lambda 函数。

    重要

    避免在 Lambda 函数中使用递归代码,因为如果使用递归代码,函数便会自动调用自身,直到满足某些任意条件为止。这可能会导致意想不到的函数调用量和升级成本。

     

  • IAM 角色(执行角色)- 这是 AWS Lambda 在代表您执行 Lambda 函数时代入的角色。

     

  • 处理程序名称- 处理程序是指您的代码中 AWS Lambda 开始执行的方法。AWS Lambda 将触发了调用的任意事件的信息作为参数传递到处理程序方法。

调用类型

AWS Lambda 支持同步和异步调用 Lambda 函数。只有在您调用 Lambda 函数时,您才能控制调用类型(称为按需调用)。以下示例说明了按需调用:

  • 您的自定义应用程序调用 Lambda 函数。

     

  • 您手动调用 Lambda 函数(例如,使用 AWS CLI)用于测试用途。

在这两种情况下,您使用 Invoke 操作调用 Lambda 函数,并且可以指定同步或异步调用类型。

但是,在您使用 AWS 服务作为事件源时,每个这些服务的调用类型是预定义的。对于这些事件源在调用您的 Lambda 函数时使用的调用类型,您没有任何控制方法。例如,Amazon S3 始终异步调用 Lambda 函数,Amazon Cognito 始终同步调用 Lambda 函数。对基于流的 AWS 服务(Amazon Kinesis Streams 和 Amazon DynamoDB Streams),AWS Lambda 轮询流并同步调用您的 Lambda 函数。