为 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. |
请求标头(仅对于 $connect 路由才支持) |
route.request.header. |
多值请求查询字符串(仅对于 $connect 路由才支持) |
route.request.multivaluequerystring. |
多值请求标头(仅对于 $connect 路由才支持) |
route.request.multivalueheader. |
请求正文 | route.request.body. |
阶段变量 | stageVariables. |
上下文变量 | context. ,必须为受支持的上下文变量之一。 |
静态值 | 。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'