WebSocket 選択式
API Gateway はリクエストとレスポンスのコンテキストを評価し、キーを生成する方法として、選択式を使用します。次に、このキーを使用して、通常は API デベロッパーから提供される使用可能な値のセットから選択できます。サポートされている正確な変数のセットは、式によって異なります。各式については、以下で詳しく説明します。
すべての式では、言語は一連のルールに従います。
-
変数には
"$"
が前に付けられます。 -
中かっこを使用して、変数の境界を明示的に定義できます (例:
"${request.body.version}-beta"
)。 -
複数の変数がサポートされていますが、評価は 1 回しか発生しません (繰り返しの評価は行われません)。
-
ドル記号 (
$
) を使って"\"
をエスケープすることができます。これは、予約された$default
キー (例:"\$default"
) にマッピングされる式を定義するときに最も便利です。 -
場合によっては、パターン形式が必要です。この場合、式は
"/"
のようにスラッシュ ("/2\d\d/"
) で囲み、2
のステータスコードに合わせる必要があります。XX
ルートレスポンス選択式
ルートレスポンスは、バックエンドからクライアントにレスポンスをモデル化するために使用されます。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 のキー |
オプション。 非プロキシ統合に対して指定されている場合、モデル検証が発生します。
|
同じルート内で動的にリクエスト検証を実行します。 |
Integration.TemplateSelectionExpression |
Integration.RequestTemplates のキー |
オプション。 受信ペイロードを操作するための非プロキシ統合に提供できます。
|
リクエストの動的プロパティに基づいて、呼び出し元のリクエストを操作します。 |
Integration.IntegrationResponseSelectionExpression |
IntegrationResponse.IntegrationResponseKey |
オプション。非プロキシ統合に提供される場合があります。 エラーメッセージのパターン一致 (Lambda から) またはステータスコード (HTTP 統合から) として動作します。
|
バックエンドからのレスポンスを操作します。 バックエンドの動的なレスポンスに基づいて発生するアクションを選択します (特定のエラーを明確に処理)。 |
IntegrationResponse.TemplateSelectionExpression |
IntegrationResponse.ResponseTemplates のキー |
オプション。非プロキシ統合に提供される場合があります。 $default はサポートされています。 |
場合によっては、レスポンスの動的プロパティは、同じルートおよび関連する統合内で別の変換を指示します。
|
Route.RouteResponseSelectionExpression |
RouteResponse.RouteResponseKey |
WebSocket ルートの双方向通信を開始するために提供する必要があります。 現在、この値は |
|
RouteResponse.ModelSelectionExpression |
RouteResponse.RequestModels のキー |
現在サポートされていません。 |