Amazon web services API网关WebSocket:同一Lambda函数中的不同处理程序

Amazon web services API网关WebSocket:同一Lambda函数中的不同处理程序,amazon-web-services,websocket,aws-lambda,aws-api-gateway,Amazon Web Services,Websocket,Aws Lambda,Aws Api Gateway,我试图创建一个使用API网关WebSocket连接到AWS Lambda函数的基本示例 我遵循link的例子 目标是使一个Lambda csproj具有多个入口点(函数),与上面示例中指定的相同 API网关: 我有四条路由,它们都连接到同一个lambda函数:cgavan-websocket-2: $connect $disconnect echo $default Lambda函数: 我有一个lambda项目,有四种不同的功能: Connect.FunctionHandler(APIGa

我试图创建一个使用API网关WebSocket连接到AWS Lambda函数的基本示例

我遵循link的例子

目标是使一个Lambda csproj具有多个入口点(函数),与上面示例中指定的相同

API网关:

我有四条路由,它们都连接到同一个lambda函数:
cgavan-websocket-2

  • $connect
  • $disconnect
  • echo
  • $default
Lambda函数:

我有一个lambda项目,有四种不同的功能:

  • Connect.FunctionHandler(APIGatewayProxyRequest请求,ILambdaContext上下文)

  • Disconnect.FunctionHandler(APIGatewayProxyRequest请求,ILambdaContext上下文)

  • Echo.FunctionHandler(APIGatewayProxyRequest请求,ILambdaContext上下文)

  • Default.FunctionHandler(APIGatewayProxyRequest请求,ILambdaContext上下文)

问题:

如何为每个API网关路由指定从Lambda csproj调用哪个函数处理程序

现在,当我连接到API网关WebSocket(使用
WebSocket请求路由:$connect
)时,它总是调用
Default.FunctionHandler()


这是websocket api的类似实现,它在被触发时发送随机消息。这里的事件类型
消息
是根据您的需要定制的

导入时间
导入json
进口boto3
def lambda_处理程序(事件、上下文):
打印(事件)
事件类型=事件[“请求上下文”][“事件类型”]
如果事件类型==“连接”或事件类型==“断开”:
响应={'statusCode':200}
返回响应
elif事件类型==“消息”:
连接标识=事件[“请求上下文”][“连接标识”]
域名=事件[“请求上下文”][“域名”]
阶段=事件[“请求上下文”][“阶段”]
message=f'{domain\u name}:{connection\u id}'。编码('utf-8')
api_client=boto3.client('apigatewaymanagementapi',endpoint_url=f“https://{domain_name}/{stage}”)
对于范围(5)内的uu:
api_客户端。post_到_连接(数据=消息,
ConnectionId=连接(id)
时间。睡眠(5)
响应={'statusCode':200}
返回响应

您是否有四个lambda函数,或者尝试从同一个lambda实现它?@SridharRaju我尝试从同一个lambda函数实现它。然后您可以从您的函数处理路由。使用我们在具有eventType的事件中获得的信息。我已经在python中实现了相同的类型,如果您愿意,我将在下面发布。是的,请。那将非常有帮助。