为 API Gateway 中的 WebSocket API 设置数据映射 - Amazon API Gateway

为 API Gateway 中的 WebSocket API 设置数据映射

数据映射 使您能够将数据从路由请求映射到后端集成。

注意

中不支持 WebSocket API 的数据映射AWS Management Console 必须使用 AWS CLI、AWS CloudFormation 或开发工具包配置数据映射。

将路由请求数据映射至集成请求参数

可以从任何定义的路由请求参数、请求正文、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
上下文变量 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'