本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 在所有函數的函數組態中包含狀態欄位,以指示函數何時準備好叫用。 State
提供函數目前狀態的相關資訊,包括您是否可以成功叫用函數。函數狀態不會變更函數叫用的行為或函數執行程式碼的方式。
注意
SnapStart 函數的函數狀態定義略有不同。如需詳細資訊,請參閱Lambda SnapStart 和函數狀態。
函數狀態包括:
-
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
兩個其他屬性,以協助進行更新方面的故障診斷。
當非同步更新正在進行時,下列作業會失敗: