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

Context オブジェクト (C#)

メソッドに ILambdaContext パラメータを追加することにより、Lambda 関数がどのように AWS Lambda ランタイムとやり取りするか、役に立つ情報を取得できます。その代わりに、AWS Lambda は関数に関連付けられた CloudWatch ログストリームや、関数を呼び出したクライアントの ID などの実行時の詳細を提供します。これには、コンテキストオブジェクトによって提供されるプロパティを介してアクセスできます。

これを行うには、次の署名でメソッドを作成します。

Copy
public void Handler(string Input, ILambdaContext context)

context オブジェクトのプロパティは次のとおりです。

  • MemoryLimitInMB: Lambda 関数に対して設定したメモリ制限 (MB 単位)。

  • FunctionName: 実行中の Lambda 関数の名前。

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

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

  • AwsRequestId: リクエストに関連付けられた AWS リクエスト ID。これは、この Lambda 関数を呼び出したクライアントに返された ID です。AWS サポートで、フォローアップの問い合わせにリクエスト ID を使用できます。AWS Lambda が関数を再試行する場合 (たとえば、Amazon Kinesis レコードを処理する Lambda 関数が例外をスローする状況)、リクエスト ID は同じままです。

  • LogStreamName: CloudWatch は特定の Lambda 関数の実行のストリーム名を記録します。提供された IAM ユーザーに CloudWatch アクションのアクセス権限がない場合、null になることがあります。

  • LogGroupName: 呼び出される Lambda 関数と関連付けられた CloudWatch ロググループ名。提供された IAM ユーザーに CloudWatch アクションのアクセス権限がない場合、null になることがあります。

  • ClientContext: AWS Mobile SDK を通じて呼び出されたクライアントアプリケーションとデバイスに関する情報。null とすることができます。クライアントコンテキストでは、クライアント ID、アプリケーションのタイトル、バージョン名、バージョンコード、アプリケーションのパッケージ名などのクライアント情報が提供されます。

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

  • RemainingTime: 関数が終了するまでの残りの実行時間。Lambda 関数を作成するときに、最大の時間制限を設定します。この時間制限に達すると、AWS Lambda は関数の実行を終了します。関数の残り実行時間に関する情報を使用して、タイムアウトに近づいたときの関数の動作を指定できます。これは、TimeSpan フィールドです。

  • Logger: ILambdaContext オブジェクトに関連付けられた Lambda ロガーを返します。詳細については、「ログ記録 (C#)」を参照してください。

以下の C# コードスニペットは、入力パラメータの値を表示し、それからコンテキスト情報の一部を表示するシンプルなハンドラー関数を示しています。

Copy
public async Task Handler(ILambdaContext context) { Console.Writeline("Function name: " + context.FunctionName); Console.Writeline("RemainingTime: " + context.RemainingTime); await Task.Delay(TimeSpan.FromSeconds(0.42)); Console.Writeline("RemainingTime after sleep: " + context.RemainingTime); }