Skip to main content

function_handler

Function function_handler 

Source
pub(crate) async fn function_handler(
    event: LambdaEvent<Request>,
) -> Result<Response, Error>
Expand description

メインのLambda関数ハンドラー

API Gatewayからの受信HTTPリクエストを処理し、JWTで認証してから HTTPメソッドに基づいて適切なハンドラーにルーティングします。

§処理フロー

  1. リクエストコンテキストからJWTクレームを抽出する
  2. email クレームと sub クレームの存在・妥当性を検証する
  3. DSQL_ENDPOINT / DSQL_REGION 環境変数からデータベース接続を確立する
  4. HTTPメソッドに応じて handle_get_inquiries または handle_post_inquiry にディスパッチする
  5. 処理完了後、データベース接続を閉じる
  6. ハンドラーでエラーが発生した場合は HTTP 500 を返す

§Arguments

  • event - API Gatewayリクエストを含むLambdaイベント。 Request 構造体にデシリアライズされ、リクエストコンテキスト(JWTクレームを含む)と オプションのリクエストボディを持ちます。

§Returns

  • Ok(Response) - API Gatewayに返すHTTPレスポンス。 正常時はハンドラーが返すレスポンスをそのまま返します。 内部エラー時は HTTP 500 レスポンスを返します。
  • Err(Error) - Lambda ランタイムレベルの致命的なエラー(通常は発生しない)

§エラーレスポンス

ステータスコードエラー発生条件
401UnauthorizedJWTクレームに email または sub が存在しない、もしくは sub がUUID形式でない
405Method Not AllowedGET/POST以外のHTTPメソッドが使用された
500INTERNAL_SERVER_ERRORデータベース接続エラー、クエリエラーなどの内部エラー

§Authentication

すべてのリクエストには、Amazon CognitoからのJWT IDトークンが必要です。 トークンにはユーザーを識別するために使用されるemailクレームとsubクレームが含まれている必要があります。 sub クレームはCognito ユーザーの一意識別子(UUID v4形式)です。