首页 > 解决方案 > AWS API Gateway Websockets——connectionID 在哪里?

问题描述

我正在 $connect 路由上设置一个带有自定义授权方的 AWS API Gateway Websockets,如下所述:

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-route-keys-connect-disconnect.html

我的问题是——我如何获得connectionID,即我以后可以用来广播到那个连接的客户端的标识符?

标签: amazon-web-serviceswebsocketaws-api-gatewayapi-gateway

解决方案


要向集成请求添加内容,您需要使用请求模板。

  1. 为您的路由关闭 HTTP 代理集成。(否则您不能修改请求。)
  2. 保存您的更改。(在您这样做之前,“请求模板”部分不会出现。)
  3. 设置您的模板选择表达式。这用于从传入的请求对象中查找值。(如果您想匹配所有传入的请求,请输入\$default。注意斜杠。完整文档在这里。)
  4. 设置您的模板键。这与模板选择表达式选择的值进行比较。如果匹配,则使用模板。(如果要匹配所有传入请求,请输入$default。注意没有斜杠。)
  5. 单击您的模板键以打开模板编辑器。您可以在此处输入模板,该模板将作为请求正文发送到您的集成端点。例如,如果您想将连接 ID 和传入查询参数转发到集成端点,您可以使用以下内容:
{
    "myConnectionIdProperty": "$context.connectionId",
    "myQueryParams": $input.params()
}

您可以在此处找到模板表达式中可用变量的文档。

(请注意,虽然它是$request模板选择表达式中的有效变量,但它不是模板本身中的有效变量。在$input此处使用。)


推荐阅读