メニュー
AWS Lambda
開発者ガイド

Context オブジェクト (Python)

Lambda 関数の実行中に、AWS Lambda サービスを操作して次のような有益なランタイム情報を入手できます。

  • AWS Lambda が Lambda 関数を終了するまでの残り時間 (タイムアウトは Lambda 関数の設定プロパティの 1 つです)。

  • 実行中の Lambda 関数に関連付けられた CloudWatch ロググループとログのストリーム。

  • Lambda 関数を呼び出したクライアントに返された AWS リクエスト ID。AWS サポートで、フォローアップの問い合わせにリクエスト ID を使用できます。

  • Lambda 関数が AWS Mobile SDK を通して呼び出された場合は、Lambda 関数を呼び出すモバイルアプリケーションの詳細を知ることができます。

AWS Lambda はこの情報を、サービスが Lambda 関数ハンドラーに 2 番目のパラメータとして渡す context オブジェクトを介して提供します。詳細については、「Lambda 関数ハンドラー (Python)」を参照してください。

以下のセクションでは、context オブジェクトを使用する Lambda 関数の例を説明し、その後使用可能なすべてのメソッドおよび属性をリストします。

次の Python の例を考えます。これには、ハンドラーでもある関数が 1 つあります。ハンドラーはパラメータとして渡される context オブジェクトを通してランタイム情報を受け取ります。

Copy
from __future__ import print_function import time def get_my_log_stream(event, context):     print("Log stream name:", context.log_stream_name)    print("Log group name:", context.log_group_name)    print("Request ID:",context.aws_request_id)    print("Mem. limits(MB):", context.memory_limit_in_mb) # Code will execute quickly, so we add a 1 second intentional delay so you can see that in time remaining value. time.sleep(1)    print("Time remaining (MS):", context.get_remaining_time_in_millis())

この例では、ハンドラーコードは単純にランタイム情報の一部を印刷します。各印刷ステートメントは CloudWatch にログエントリを作成します。Lambda コンソールを使用して関数を呼び出す場合は、コンソールがログを表示します。from __future__ ステートメントを使用すると、Python 2 または 3 と互換性のあるコードを作成できます。

AWS Lambda コンソールでこのコードをテストするには

  1. コンソールで、hello-world 設計図を使用して Lambda 関数を作成します。[runtime] で、[Python 2.7] を選択します。[Handler] で、lambda_function.lambda_handlerlambda_function.get_my_log_stream に置き換えます。これを行う手順については、 ステップ 2.1: Hello World Lambda 関数を作成する

  2. 関数をテストし、コードを更新してより詳細な context 情報を入手できます。

以下のセクションでは、Lambda 関数のランタイム情報の取得に使用できる context オブジェクトのメソッドと属性をリストします。

Context オブジェクトのメソッド (Python)

context オブジェクトは次のメソッドを提供します。

get_remaining_time_in_millis()

AWS Lambda が関数を終了するまでの残りの実行時間をミリ秒で返します。

Context オブジェクトの属性 (Python)

context オブジェクトは次の属性を提供します。

function_name

実行中の Lambda 関数の名前。

function_version

実行中の Lambda 関数のバージョン。エイリアスを使用して関数を呼び出した場合、function_version はエイリアスが指すバージョンになります。

invoked_function_arn

この関数の呼び出しに使用された ARN。関数 ARN またはエイリアス ARN を指定できます。非修飾 ARN は $LATEST バージョンを実行し、エイリアスはそれが指定する関数のバージョンを実行します。

memory_limit_in_mb

Lambda 関数に対して設定したメモリ制限 (MB 単位)。Lambda 関数の作成時にメモリ制限を設定します。後で変更できます。

aws_request_id

リクエストに関連付けられた AWS リクエスト ID。invoke メソッドを呼び出したクライアントに返される ID です。

注記

AWS Lambda が呼び出しを再試行する場合 (たとえば、Amazon Kinesis レコードを処理する Lambda 関数が例外をスローする状況)、リクエスト ID は同じままです。

log_group_name

Lambda 関数によって記述されたログがある CloudWatch ロググループの名前です。

log_stream_name

Lambda 関数によって記述されたログがある CloudWatch ログストリームの名前です。ログストリームは、Lambda 関数の呼び出しごとに変わる場合と、そうでない場合があります。

Lambda 関数がログストリームを作成できない場合、この値は Null になります。これは、Lambda 関数に必要なアクセス権限を付与する実行ロールに、CloudWatch Logs アクションのアクセス権限が含まれていない場合に発生することがあります。

identity

AWS Mobile SDK を通じて呼び出されたときの、Amazon Cognito 認証プロバイダーに関する情報。null とすることができます。

  • identity.cognito_identity_id

  • identity.cognito_identity_pool_id

client_context

AWS Mobile SDK を通じて呼び出されたクライアントアプリケーションとデバイスに関する情報。null とすることができます。

  • client_context.client.installation_id

  • client_context.client.app_title

  • client_context.client.app_version_name

  • client_context.client.app_version_code

  • client_context.client.app_package_name

  • client_context.custom

    モバイルクライアントアプリケーションによって設定されたカスタム値の dict です。

  • client_context.env

    AWS Mobile SDK によって提供される環境情報の dict です。