AWS Lambda ランタイムインターフェイス
AWS Lambda では、カスタムランタイムの HTTP API を使用して、Lambda の呼び出しイベントを受け取り、レスポンスデータを Lambda の実行環境に送り返します。
ランタイム API バージョン 2018-06-01 の OpenAPI 仕様は、runtime-api.zip から入手できます。
ランタイムは、AWS_LAMBDA_RUNTIME_API
環境変数からエンドポイントを取得し、API バージョンを追加後、以下のリソースパスを使用して、API と通信します。
例 リクエスト
curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"
次の呼び出し
パス – /runtime/invocation/next
メソッド – GET
呼び出しイベントを取得します。レスポンス本文には、呼び出しのペイロードが含まれます。これは、関数トリガーのイベントデータを含む JSON ドキュメントです。レスポンスヘッダーには、呼び出しに関する追加データが含まれます。
レスポンスヘッダー
-
Lambda-Runtime-Aws-Request-Id
– リクエスト ID。関数の呼び出しをトリガーしたリクエストを識別します。たとえば、
8476a536-e9f4-11e8-9739-2dfe598c3fcd
と指定します。 -
Lambda-Runtime-Deadline-Ms
– 関数がタイムアウトした日付 (Unix 時間のミリ秒)。たとえば、
1542409706888
と指定します。 -
Lambda-Runtime-Invoked-Function-Arn
– 呼び出しで指定されている Lambda 関数、バージョン、またはエイリアスの ARN。たとえば、
arn:aws:lambda:us-east-2:123456789012:function:custom-runtime
と指定します。 -
Lambda-Runtime-Trace-Id
– AWS X-Ray トレースヘッダー。たとえば、
Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1
と指定します。 -
Lambda-Runtime-Client-Context
– AWS Mobile SDK の呼び出しにおいて、クライアントアプリケーションおよびデバイスに関するデータ。 -
Lambda-Runtime-Cognito-Identity
– AWS Mobile SDK からの呼び出しの場合は、Amazon Cognito ID プロバイダーに関するデータ。
リクエスト ID は、Lambda 内の呼び出しを追跡します。レスポンス送信時に呼び出しを指定する場合に使用します。
トレースヘッダーには、トレース ID、親 ID、サンプリングデシジョンが含まれます。リクエストがサンプリングされている場合、リクエストが Lambda、またはアップストリームサービスによってサンプリングされた場合。ランタイムは、_X_AMZN_TRACE_ID
をヘッダーの値に設定します。X-Ray SDK はこの値を読み込んで ID を取得し、リクエストを追跡するかどうかを判断します。
呼び出しレスポンス
パス – /runtime/invocation/
AwsRequestId
/response
メソッド – POST
呼び出しのレスポンスを Lambda に送信します。関数ハンドラを呼び出すと、ランタイムは、関数のレスポンスを呼び出しのレスポンスパスに投稿します。同期呼び出しの場合、Lambda はそのレスポンスをクライアントに送り返します。
例 成功リクエスト
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"
呼び出しエラー
パス – /runtime/invocation/
AwsRequestId
/error
メソッド – POST
関数からエラーが返ると、ランタイムはエラーを JSON ドキュメント形式に変換し、それを呼び出しエラーパスに投稿します。
例 リクエストボディ
{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException" }
例 エラーリクエスト
REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR"
初期化エラー
パス – /runtime/init/error
メソッド – POST
初期化中にエラーが発生すると、ランタイムは、エラーメッセージを初期化エラーパスに投稿します。
例 初期化エラーリクエスト
ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR"