

# Lambda コンテキストオブジェクトを使用して Rust 関数の情報を取得する
<a name="rust-context"></a>

Lambda で関数が実行されると、[ハンドラー](rust-handler.md)が受け取る LambdaEvent にコンテキストオブジェクトを追加します。このオブジェクトは、呼び出し、関数、および実行関数に関する情報を含むプロパティです。

**context プロパティ**
+  `request_id`: Lambda サービスによって生成された AWS リクエスト ID。
+  `deadline`: 現在の呼び出しの実行期限 (ミリ秒単位)。
+  `invoked_function_arn`: Lambda 関数の Amazon リソースネーム (ARN) が呼び出されます。
+  `xray_trace_id`: 現在の呼び出しの AWS X-Ray トレース ID。
+  `client_content`:AWS モバイル SDK によって送信されたクライアントコンテキストオブジェクト。AWS モバイル SDK を使用して関数を呼び出さない限り、このフィールドは空です。
+  `identity`: 関数を呼び出した Amazon Cognito ID。Lambda API への呼び出しリクエストが Amazon Cognito ID プールによって発行された AWS 認証情報を使用して行われた場合を除き、このフィールドは空です。
+  `env_config`: ローカル環境変数からの Lambda 関数の構成。このプロパティには、関数名、メモリ割り当て、バージョン、ログストリームなどの情報が含まれます。

## context の呼び出し情報へのアクセス
<a name="rust-context-invoke"></a>

Lambda 関数は、環境と呼び出しリクエストに関するメタデータにアクセスできます。関数ハンドラが受け取る `LambaEvent` オブジェクトには、`context` メタデータが含まれます。

```
use lambda_runtime::{service_fn, LambdaEvent, Error};
use serde_json::{json, Value};

async fn handler(event: LambdaEvent<Value>) -> Result<Value, Error> {
    let invoked_function_arn = event.context.invoked_function_arn;
    Ok(json!({ "message": format!("Hello, this is function {invoked_function_arn}!") }))
}

#[tokio::main]
async fn main() -> Result<(), Error> {
    lambda_runtime::run(service_fn(handler)).await
}
```