WebSocket 選択式 - Amazon API Gateway

WebSocket 選択式

API Gateway はリクエストとレスポンスのコンテキストを評価し、キーを生成する方法として、選択式を使用します。次に、このキーを使用して、通常は API デベロッパーから提供される使用可能な値のセットから選択できます。サポートされている正確な変数のセットは、式によって異なります。各式については、以下で詳しく説明します。

すべての式では、言語は一連のルールに従います。

  • 変数には "$" が前に付けられます。

  • 中かっこを使用して、変数の境界を明示的に定義できます (例: "${request.body.version}-beta")。

  • 複数の変数がサポートされていますが、評価は 1 回しか発生しません (繰り返しの評価は行われません)。

  • ドル記号 ($) を使って "\" をエスケープすることができます。これは、予約された $default キー (例: "\$default") にマッピングされる式を定義するときに最も便利です。

  • 場合によっては、パターン形式が必要です。この場合、式は "/" のようにスラッシュ ("/2\d\d/") で囲み、2XX のステータスコードに合わせる必要があります。

ルートレスポンス選択式

ルートレスポンスは、バックエンドからクライアントにレスポンスをモデル化するために使用されます。WebSocket API の場合、ルートレスポンスはオプションです。定義された場合、WebSocket メッセージを受信したときにレスポンスをクライアントに返す必要があることを API Gateway に指定します。

ルートレスポンス選択式の評価により、ルートレスポンスキーが生成されます。最終的に、このキーを使用して、API に関連付けられたいずれかの RouteResponses から選択されます。ただし、現在サポートされているのは $default キーのみです。

API キー選択式

この式は、クライアントが有効な API キーを提供した場合のみ、特定のリクエストを続行する必要があるとサービスが決定したときに評価されます。

現在サポートされている値は、$request.header.x-api-key および $context.authorizer.usageIdentifierKey の 2 つのみです。

API マッピング選択式

この式は、カスタムドメインを使用してリクエストが実行されたときに選択する API ステージを決定するために評価されます。

現在、サポートされている値は $request.basepath のみです。

WebSocket 選択式の概要

次の表は、WebSocket API の選択式のユースケースをまとめたものです。

選択式 評価結果のキー コメント ユースケースの例
Api.RouteSelectionExpression Route.RouteKey $default はキャッチオールルートとしてサポートされています。 クライアントリクエストのコンテキストに基づいて Route WebSocket メッセージをルーティングします。
Route.ModelSelectionExpression Route.RequestModels のキー

オプション。

非プロキシ統合に対して指定されている場合、モデル検証が発生します。

$default はキャッチオールとしてサポートされています。

同じルート内で動的にリクエスト検証を実行します。
Integration.TemplateSelectionExpression Integration.RequestTemplates のキー

オプション。

受信ペイロードを操作するための非プロキシ統合に提供できます。

${request.body.jsonPath} および静的な値がサポートされています。

$default はキャッチオールとしてサポートされています。

リクエストの動的プロパティに基づいて、呼び出し元のリクエストを操作します。
Integration.IntegrationResponseSelectionExpression IntegrationResponse.IntegrationResponseKey

オプション。非プロキシ統合に提供される場合があります。

エラーメッセージのパターン一致 (Lambda から) またはステータスコード (HTTP 統合から) として動作します。

$default は、成功したレスポンスのキャッチオールとして動作する非プロキシ統合で必要です。

バックエンドからのレスポンスを操作します。

バックエンドの動的なレスポンスに基づいて発生するアクションを選択します (特定のエラーを明確に処理)。

IntegrationResponse.TemplateSelectionExpression IntegrationResponse.ResponseTemplates のキー オプション。非プロキシ統合に提供される場合があります。

$default はサポートされています。

場合によっては、レスポンスの動的プロパティは、同じルートおよび関連する統合内で別の変換を指示します。

${request.body.jsonPath}${integration.response.statuscode}${integration.response.header.headerName}${integration.response.multivalueheader.headerName}、および静的な値がサポートされています。

$default はキャッチオールとしてサポートされています。

Route.RouteResponseSelectionExpression RouteResponse.RouteResponseKey

WebSocket ルートの双方向通信を開始するために提供する必要があります。

現在、この値は $default のみに制限されています。

RouteResponse.ModelSelectionExpression RouteResponse.RequestModels のキー 現在サポートされていません。