Lambda 函数状态 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lambda 函数状态

Lambda 在所有函数的函数配置中包含一个状态字段,以指示您的函数何时可以调用。State 提供了有关函数当前状态的信息,包括您是否可以成功调用该函数。函数状态不会改变函数调用的行为或函数运行代码的方式。函数状态包括:

  • Pending – Lambda 创建函数后,它将状态设置为待处理。处于待处理状态时,Lambda 会尝试为函数创建或配置资源,例如 VPC 或 EFS 资源。Lambda 在待处理状态期间不调用函数。在函数上运行的任何调用或其他 API 操作都将失败。

  • Active – Lambda 完成资源配置和预置后,函数将转换为激活状态。函数只能在激活时成功调用。

  • Failed – 表示资源配置或预置遇到错误。

  • Inactive – 当函数空闲时间足够长,以便 Lambda 回收为其配置的外部资源时,函数变为非激活状态。当您尝试调用非激活函数时,调用会失败,Lambda 将函数设置为待处理状态,直到重新创建函数资源。如果 Lambda 无法重新创建资源,则函数将返回到非激活状态。如果您的函数停留在非活动状态,则请参阅函数的 StatusCodeStatusCodeReason 属性以进行进一步的故障排除。您可能需要解决错误并重新部署函数以将其恢复到活动状态。

如果您使用基于 SDK 的自动化工作流程或直接调用 Lambda 的服务 API,请确保在调用之前检查函数的状态以验证函数是否处于活动状态。您可以使用 Lambda API 操作 GetFunction 来执行此任务,或者使用 Amazon SDK for Java 2.0 来配置 Waiter。

aws lambda get-function --function-name my-function --query 'Configuration.[State, LastUpdateStatus]'

您应看到以下输出:

[ "Active", "Successful" ]

在函数创建处于挂起状态时,以下操作会失败:

更新时的函数状态

Lambda 为使用 LastUpdateStatus 属性进行更新的函数提供其他上下文,这些函数可能为以下其他状态:

  • InProgress – 正在对现有函数进行更新。在进行函数更新时,调用将转到函数以前的代码和配置。

  • Successful – 更新已完成。Lambda 完成更新后,该设置将保留,直到进一步更新为止。

  • Failed – 函数更新失败。Lambda 中止更新,并且函数以前的代码和配置保持可用。

以下是正在进行更新的函数上的 get-function-configuration 的结果。

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs20.x", "VpcConfig": { "SubnetIds": [ "subnet-071f712345678e7c8", "subnet-07fd123456788a036", "subnet-0804f77612345cacf" ], "SecurityGroupIds": [ "sg-085912345678492fb" ], "VpcId": "vpc-08e1234569e011e83" }, "State": "Active", "LastUpdateStatus": "InProgress", ... }

FunctionConfiguration 还有两个其他属性,LastUpdateStatusReasonLastUpdateStatusReasonCode,以帮助您解决与更新相关的问题。

正在进行异步更新时,以下操作会失败: