API Gateway での WebSocket API のデータ変換
API Gateway では、API のメソッドリクエストは、バックエンドで必要となる、該当する統合リクエストペイロードとは異なる形式のペイロードを受け取ることができます。同様に、バックエンドは、フロントエンドで予期されるメソッドレスポンスペイロードとは異なる統合レスポンスペイロードを返す場合があります。
API Gateway では、マッピングテンプレートを使用して、ペイロードをメソッドリクエストから該当する統合リクエストにマッピングしたり、統合レスポンスから該当するメソッドレスポンスにマッピングしたりできます。テンプレート選択式を指定して、必要なデータ変換の実行に使用するテンプレートを決定します。
データマッピングを使用して、ルートリクエストからバックエンド統合にデータをマッピングできます。詳細については、「API Gateway で WebSocket API のデータマッピングを設定する」を参照してください。
テンプレートとモデルのマッピング
マッピングテンプレートは、Velocity Template Language (VTL)
ペイロードでは、JSON スキーマのドラフト 4
テンプレート選択式
マッピングテンプレートを使用してペイロードを変換するには、統合リクエストまたは統合レスポンスで WebSocket API テンプレート選択式を指定します。この式の評価により、(入力テンプレートを介して) リクエストボディを統合リクエストボディに変換するか、(出力テンプレートを介して) 統合レスポンスボディをルートレスポンスボディに変換するために使用される入力または出力テンプレート (存在する場合) が決定されます。
Integration.TemplateSelectionExpression
は、${request.body.jsonPath}
および静的な値をサポートします。
IntegrationResponse.TemplateSelectionExpression
は、${request.body.jsonPath}
、${integration.response.statuscode}
、${integration.response.header.headerName}
、${integration.response.multivalueheader.headerName}
および静的な値をサポートします。
統合レスポンスの選択式
WebSocket API に対して統合レスポンスを設定するときは、オプションで統合レスポンスの選択式を指定できます。この式により、統合が返されるときに選択する
が決定されます。現在、この式の値は以下に定義するように、API Gateway によって制限されています。この式は非プロキシ統合に対してのみ適用されることに注意してください。プロキシ統合は、モデル化または変更なしに、単純にレスポンスペイロードを呼び出し元に渡すだけです。IntegrationResponse
上記に示した他の選択式とは異なり、この式はパターンマッチング形式を現在サポートしています。式はスラッシュで囲む必要があります。
現在、値は
に応じて固定されています。integrationType
-
Lambda ベースの統合の場合は、
$integration.response.body.errorMessage
です。 -
HTTP
およびMOCK
統合の場合、その値は$integration.response.statuscode
です。 -
HTTP_PROXY
とAWS_PROXY
の場合、式は利用されません。これは、呼び出し元へのペイロードのパススルーをリクエストしているためです。