API Gateway で WebSocket API のデータマッピングを設定する - Amazon API Gateway

API Gateway で WebSocket API のデータマッピングを設定する

データマッピングを使用すると、ルートリクエストからバックエンド統合にデータをマッピングできます。

注記

WebSocket API のデータマッピングは、 ではサポートされていませんAWS Management Console データマッピングを設定するには、AWS CLI、AWS CloudFormation、または SDK を使用する必要があります。

ルートリクエストデータを統合リクエストパラメータにマッピングする

統合リクエストパラメータは、定義されたルートリクエストパラメータ、リクエストボディ、context または stage 変数、静的値からマッピングできます。

次の表は、統合リクエストのデータマッピング式を示しています。表で、PARAM_NAME は、特定のパラメータ型のルートリクエストパラメータの名前です。正規表現パターン '^[a-zA-Z0-9._$-]+$]' に一致する必要があります。JSONPath_EXPRESSION はリクエストボディの JSON フィールドの JSONPath 式です。

統合リクエストデータのマッピング式
マッピングされたデータソース マッピング式
リクエストクエリ文字列 ($connect ルートでのみサポート) route.request.querystring.PARAM_NAME
リクエストヘッダー ($connect ルートでのみサポート) route.request.header.PARAM_NAME
複数値のリクエストクエリ文字列 ($connect ルートでのみサポート) route.request.multivaluequerystring.PARAM_NAME
複数値のリクエストヘッダー ($connect ルートでのみサポート) route.request.multivalueheader.PARAM_NAME
リクエストボディ route.request.body.JSONPath_EXPRESSION
ステージ変数 stageVariables.VARIABLE_NAME
コンテキスト変数 サポートされるコンテキスト変数の 1 つである必要がある context.VARIABLE_NAME
静的な値 'STATIC_VALUE'STATIC_VALUE はリテラル文字列であり、単一引用符で囲む必要があります。

以下の AWS CLI の例では、データマッピングを設定しています。AWS CloudFormation テンプレートの例については、「websocket-data-mapping.yaml」を参照してください。

クライアントの connectionId を統合リクエストのヘッダーにマッピングする

以下の例のコマンドは、クライアントの connectionId をバックエンド統合へのリクエストの connectionId ヘッダーにマッピングします。

aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.connectionId'='context.connectionId'

クエリ文字列パラメータを統合リクエストのヘッダーにマッピングする

以下の例のコマンドは、authToken クエリ文字列パラメータを統合リクエストの authToken ヘッダーにマッピングします。

まず、authToken クエリ文字列パラメータをルートのリクエストパラメータに追加します。

aws apigatewayv2 update-route --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameters '{"route.request.querystring.authToken": {"Required": false}}'

次に、クエリ文字列パラメータを、バックエンド統合へのリクエストの authToken ヘッダーにマッピングします。

aws apigatewayv2 update-integration \ --integration-id abc123 \ --api-id a1b2c3d4 \ --request-parameters 'integration.request.header.authToken'='route.request.querystring.authToken'

必要に応じて、ルートのリクエストパラメータから authToken クエリ文字列パラメータを削除します。

aws apigatewayv2 delete-route-request-parameter \ --route-id 0abcdef \ --api-id a1b2c3d4 \ --request-parameter-key 'route.request.querystring.authToken'