Lambda API を使用した関数の状態のモニタリング - AWS Lambda

Lambda API を使用した関数の状態のモニタリング

関数を作成または更新すると、Lambda は、その実行を可能にするコンピューティングリソースとネットワークリソースをプロビジョニングします。ほとんどの場合、このプロセスは非常に高速であり、関数はすぐに呼び出しや変更が可能になります。

仮想プライベートクラウド (VPC) に接続するように関数を設定した場合、このプロセスにかかる時間が長くなることがあります。関数を最初に VPC に接続すると、Lambda はネットワークインターフェイスをプロビジョニングします。これには 1 分ほどかかります。関数の現在の状態を伝えるために、Lambda は、いくつかの Lambda API アクションによって返される関数の設定ドキュメントに追加のフィールドを含めます。

関数を作成すると、関数は最初は Pending 状態になります。関数が呼び出し可能になると、状態は Pending から Active に変わります。状態が Pending である間、関数に対する呼び出しやその他の API アクションによって、エラーが返されます。関数の作成と更新に関する自動化を構築する場合は、関数がアクティブになるのを待ってから、その関数に対する追加のアクションを実行します。

Lambda API を使用して、関数の状態に関する情報を取得できます。状態情報は、いくつかの API アクションによって返される FunctionConfiguration ドキュメントに含まれています。関数の状態を AWS CLI で表示するには、get-function-configuration コマンドを使用します。

aws lambda get-function-configuration --function-name my-function

次のような出力が表示されます。

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "TracingConfig": { "Mode": "Active" }, "State": "Pending", "StateReason": "The function is being created.", "StateReasonCode": "Creating", ... }

StateReasonStateReasonCode には、Active でない状態に関する追加の情報が含まれています。関数の作成が保留中の場合、以下のオペレーションは失敗します。

関数の設定を更新すると、リソースをプロビジョニングする非同期オペレーションがトリガーされます。更新の進行中に、関数を呼び出すことはできますが、関数に対する他のオペレーションは失敗します。更新の進行中に発生する呼び出しは、以前の設定に対して実行されます。関数の状態は Active ですが、その LastUpdateStatusInProgress です。

例 関数の設定 – VPC への接続

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

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

呼び出しを含む他のオペレーションは、更新の進行中でも機能します。

たとえば、関数を仮想プライベートクラウド (VPC) に接続すると、Lambda は、各サブネットに Elastic Network Interface をプロビジョニングします。このプロセスにより、関数が 1 分ほど保留状態になることがあります。Lambda は使用中でないネットワークインターフェイスを解放し、関数を Inactive 状態にします。関数が非アクティブであるときに呼び出すと、ネットワークアクセスが復元されるまでの間、関数は Pending 状態になります。復元をトリガーする呼び出しと、オペレーションが保留中である他の呼び出しは、失敗して ResourceNotReadyException エラーとなります。

関数のネットワークインターフェースを復元するときに Lambda でエラーが発生すると、関数は Inactive 状態に戻ります。次の呼び出しは、別の試行をトリガーできます。一部の設定エラーの場合、Lambda は 5 分以上待ってから、別のネットワークインターフェイスの作成を試みます。これらのエラーには次の LastUpdateStatusReasonCode 値があります。

  • InsufficientRolePermission – ロールが存在しないか、ロールのアクセス許可がありません。

  • SubnetOutOfIPAddresses – サブネット内のすべての IP アドレスが使用されています。

状態が VPC 接続でどのように機能するかの詳細については、「VPC 内のリソースにアクセスするための Lambda 関数の設定」を参照してください。