使用无服务器的自定义api网关websocket端点

使用无服务器的自定义api网关websocket端点,websocket,aws-api-gateway,serverless-framework,Websocket,Aws Api Gateway,Serverless Framework,我试图通过serverless定制api网关websocket端点,因为我需要为部署在websocket之前的cloudfront初始化它。 初始化代码如下所示: ApiGatewayWebsocketApi: Type: AWS::ApiGatewayV2::Api Properties: Name: ${self:provider.stage}-${self:provider.variant}-WebsocketApi Protoco

我试图通过serverless定制api网关websocket端点,因为我需要为部署在websocket之前的cloudfront初始化它。 初始化代码如下所示:

ApiGatewayWebsocketApi: 
      Type: AWS::ApiGatewayV2::Api
      Properties:
        Name: ${self:provider.stage}-${self:provider.variant}-WebsocketApi
        ProtocolType: WEBSOCKET
        RouteSelectionExpression: "$request.body.action"
        Description: "WebSocket API for ${self:provider.variant}"
我将其导出为输出:

ApiGatewayWebsocketApiId:
          Value: 
            Ref: ApiGatewayWebsocketApi
          Export:
            Name: ${self:custom.configFile.appCode}-${self:provider.stage}-${self:provider.variant}-ApiGatewayWebsocketApiId
然后apigatewaywebsocketapid将表示一个端点字符串,如
b6hnpuyzq6

我可以在websocket serverless.yml中获得它:

 WebSocketApiId:
    Fn::ImportValue: ${self:custom.configFile.appCode}-${self:provider.stage}-${self:provider.variant}-ApiGatewayWebsocketApiId
但问题是: 如何将其导入到我的函数(如connectionHandler),以便此websocket可以使用上面导入的端点:

  connectionHandler:
    name: ${self:provider.stage}-${self:provider.variant}-${self:custom.configFile.appCode}-ws-connection
    handler: WebsocketTestHandler
    events:
      - websocket:
          route: $connect
      - websocket:
          route: $disconnect

也许您可以尝试通过处理程序中可用的
WEB\u SOCKET\u API\u ID
环境变量传递
websocketapid
参数值,如下所示:

  connectionHandler:
    name: ${self:provider.stage}-${self:provider.variant}-${self:custom.configFile.appCode}-ws-connection
    handler: WebsocketTestHandler
    environment:
      WEB_SOCKET_API_ID:
        Ref: WebSocketApiId
    events:
      - websocket:
          route: $connect
      - websocket:
          route: $disconnect