Lambda 函数状态
Lambda 在所有函数的函数配置中包含一个状态字段,以指示您的函数何时可以调用。State
提供了有关函数当前状态的信息,包括您是否可以成功调用该函数。函数状态不会改变函数调用的行为或函数运行代码的方式。函数状态包括:
-
Pending
– Lambda 创建函数后,它将状态设置为待处理。处于待处理状态时,Lambda 会尝试为函数创建或配置资源,例如 VPC 或 EFS 资源。Lambda 在待处理状态期间不调用函数。在函数上运行的任何调用或其他 API 操作都将失败。 -
Active
– Lambda 完成资源配置和预置后,函数将转换为激活状态。函数只能在激活时成功调用。 -
Failed
– 表示资源配置或预置遇到错误。 -
Inactive
– 当函数空闲时间足够长,以便 Lambda 回收为其配置的外部资源时,函数变为非激活状态。当您尝试调用非激活函数时,调用会失败,Lambda 将函数设置为待处理状态,直到重新创建函数资源。如果 Lambda 无法重新创建资源,则函数将返回到非激活状态。如果您的函数停留在非活动状态,则请参阅函数的StatusCode
和StatusCodeReason
属性以进行进一步的故障排除。您可能需要解决错误并重新部署函数以将其恢复到活动状态。
如果您使用基于 SDK 的自动化工作流程或直接调用 Lambda 的服务 API,请确保在调用之前检查函数的状态以验证函数是否处于活动状态。您可以使用 Lambda API 操作 GetFunction 来执行此任务,或者使用 AWS SDK for Java 2.0
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": "nodejs22.x", "VpcConfig": { "SubnetIds": [ "subnet-071f712345678e7c8", "subnet-07fd123456788a036", "subnet-0804f77612345cacf" ], "SecurityGroupIds": [ "sg-085912345678492fb" ], "VpcId": "vpc-08e1234569e011e83" },
"State": "Active", "LastUpdateStatus": "InProgress"
, ... }
FunctionConfiguration 还有两个其他属性,LastUpdateStatusReason
和 LastUpdateStatusReasonCode
,以帮助您解决与更新相关的问题。
正在进行异步更新时,以下操作会失败: