Lambda 関数の状態 - AWS Lambda

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": "nodejs20.x", "VpcConfig": { "SubnetIds": [ "subnet-071f712345678e7c8", "subnet-07fd123456788a036", "subnet-0804f77612345cacf" ], "SecurityGroupIds": [ "sg-085912345678492fb" ], "VpcId": "vpc-08e1234569e011e83" }, "State": "Active", "LastUpdateStatus": "InProgress", ... }

FunctionConfiguration には、更新の問題のトラブルシューティングに役立つ他の 2 つの属性 (LastUpdateStatusReasonLastUpdateStatusReasonCode) があります。

非同期更新の進行中、以下のオペレーションは失敗します。