Lambda 函數狀態 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Lambda 函數狀態

Lambda 會在所有函數的函數組態中包含狀態欄位,以指出函數何時可以叫用。State 提供函數目前狀態的相關資訊,包括是否可以成功叫用函數。函數狀態不會變更函數叫用的行為或函數執行程式碼的方式。函數狀態包括:

  • Pending – Lambda 建立函數之後,會將狀態設定為待定中。處於待定狀態時,Lambda 會嘗試建立或設定函數的資源,例如 VPC 或 EFS 資源。Lambda 不會叫用待定狀態期間的函數。在函數上操作的任何叫用或其他 API 操作都會失敗。

  • Active – Lambda 完成資源組態和佈建之後,您的函數會轉換為啟用中狀態。只有啟用中的函數才能成功叫用。

  • Failed – 表示資源配置或佈建發生錯誤。

  • Inactive – 當函數空閒足夠長的時間,以至於 Lambda 回收為其配置的外部資源時,該函數將變為非啟用狀態。當您嘗試叫用非啟用中的函數,叫用會失敗而 Lambda 會將函數設定為待定狀態,直到重新建立函數資源為止。如果 Lambda 無法重新建立資源,則函數會返回非作用中狀態。如果您的函數處於非活動狀態,請參閱函數StatusCodeStatusCodeReason屬性以進一步解決疑難排解。您可能需要解決任何錯誤,並重新部署您的函數以將其恢復到活動狀態。

如果您是使用 SDK 型自動化工作流程或是直接呼叫 Lambda 的服務 API,請務必在調用之前檢查函數的狀態,以驗證其是否處於作用中狀態。您可以使用 Lambda API 動作來執行此操作 GetFunction,或使用適用於 Java 2.0 的AWS SDK 來設定服務員。

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", ... }

FunctionConfigurationLastUpdateStatusReasonLastUpdateStatusReasonCode 兩個其他屬性,以協助進行更新方面的故障診斷。

當非同步更新正在進行時,下列作業會失敗: