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

Context オブジェクト (Node.js)

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 関数ハンドラー (Node.js)」を参照してください。

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

次の Node.js の例を考えます。ハンドラーは context パラメータを介してランタイム情報を受け取ります。

Copy
console.log('Loading function'); exports.handler = function(event, context, callback) { //console.log('Received event:', JSON.stringify(event, null, 2)); console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); console.log('remaining time =', context.getRemainingTimeInMillis()); console.log('functionName =', context.functionName); console.log('AWSrequestID =', context.awsRequestId); console.log('logGroupName =', context.logGroupName); console.log('logStreamName =', context.logStreamName); console.log('clientContext =', context.clientContext); if (typeof context.identity !== 'undefined') { console.log('Cognito identity ID =', context.identity.cognitoIdentityId); } callback(null, event.key1); // Echo back the first key value // or // callback("some error type"); };

この例では、ハンドラーコードは Lambda 関数のランタイム情報の一部を CloudWatch にログ記録します。Lambda コンソールを使用して関数を呼び出した場合は、コンソールの [Log output] セクションにログが表示されます。このコードを使用して Lambda 関数を作成し、コンソールを使用してその関数をテストできます。

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

  1. コンソールで、hello-world 設計図を使用して Lambda 関数を作成します。[runtime] で、[nodejs4.3] を選択します。これを行う手順については、「ステップ 2.1: Hello World Lambda 関数を作成する」を参照してください。

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

Context オブジェクトメソッド (Node.js)

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

context.getRemainingTimeInMillis()

現在実行中の Lambda 関数の残りの概算実行時間 (タイムアウトが発生するまで) を返します。タイムアウトは Lambda 関数の設定の 1 つです。タイムアウトに達すると、AWS Lambda は Lambda 関数を終了します。

このメソッドを使用して、関数の実行中に残りの時間を確認し、実行時間内に適切な修正措置を取ることができます。

一般的な構文:

Copy
context.getRemainingTimeInMillis();

Context オブジェクトのプロパティ (Node.js)

context オブジェクトは、更新が可能な次のプロパティを提供します。

callbackWaitsForEmptyEventLoop

デフォルト値は True です。このプロパティはコールバックメソッドのデフォルト動作を変更する場合にのみ使用できます。デフォルトでは、コールバックは Node.js ランタイムのイベントループが空になるまで待機してから処理を停止し、呼び出し元に結果を返します。このプロパティを false に設定して、イベントループにイベントがある場合でも、callback が呼び出されたすぐ後に処理を停止するように AWS Lambda にリクエストできます。AWS Lambda は、Node.js イベントループ内の処理、任意の状態のデータおよびイベントを停止します (イベントループに残っているイベントは、Lambda 関数が次に呼び出され、AWS Lambda が停止された処理を使用することを選択したときに処理されます)。コールバックの詳細については、「コールバックパラメーターを使用する」を参照してください。

また、context オブジェクトはランタイム情報を取得するために使用できる次のプロパティを提供します。

functionName

実行中の Lambda 関数の名前。

functionVersion

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

invokedFunctionArn

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

memoryLimitInMB

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

awsRequestId

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

注記

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

logGroupName

Lambda 関数によって書き込まれたログがある CloudWatch ロググループの名前。

logStreamName

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

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

identity

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

  • identity.cognitoIdentityId

  • identity.cognitoIdentityPoolId

特定のモバイルプラットフォーム向けの正確な値については、AWS Mobile SDK for iOS Developer GuideIdentity Context、およびAWS Mobile SDK for Android Developer GuideのIdentity Contextを参照してください。

clientContext

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

  • clientContext.client.installation_id

  • clientContext.client.app_title

  • clientContext.client.app_version_name

  • clientContext.client.app_version_code

  • clientContext.client.app_package_name

  • clientContext.Custom

    モバイルクライアントアプリケーションで設定されたカスタム値。

  • clientContext.env.platform_version

  • clientContext.env.platform

  • clientContext.env.make

  • clientContext.env.model

  • clientContext.env.locale

特定のモバイルプラットフォーム向けの正確な値については、AWS Mobile SDK for iOS Developer GuideClient Context、およびAWS Mobile SDK for Android Developer GuideClient Contextを参照してください。