Python搭建WebSocket API时Lambda出现connectionid键错误如何解决?
解决WebSocket连接Lambda的KeyError: 'connectionid'问题
问题根源
报错的核心原因是AWS API Gateway传递给Lambda的WebSocket事件中,连接ID的键名是驼峰式的connectionId,而你代码里用了全小写的connectionid,导致找不到对应键值抛出KeyError。
修改后的代码
把代码中获取连接ID的部分改为驼峰式的键名,同时修正返回格式(API Gateway要求返回包含statusCode的响应,否则可能触发额外异常):
import json import boto3 import os dynamodb = boto3.client('dynamodb') def lambda_handler(event, context): # 修正键名为AWS标准的驼峰格式connectionId connection_id = event['requestContext']['connectionId'] dynamodb.put_item( TableName=os.environ['WEBSOCKET_TABLE'], Item={'connectionid': {'S': connection_id}} ) # 返回符合API Gateway要求的响应 return {'statusCode': 200}
额外检查项
- 确认DynamoDB表的主键字段名与代码中
Item里的connectionid一致,如果表字段是驼峰式connectionId,也要同步修改Item中的键名 - 验证Lambda执行角色是否拥有DynamoDB的
PutItem权限 - 检查API Gateway的WebSocket路由是否正确关联到该Lambda函数
内容的提问来源于stack exchange,提问作者Blair Asbury
相关产品推荐
相关产品推荐

