如何在Lambda函数事件字典中精确匹配指定字符串键?
解决Lambda事件体键检查误匹配问题
问题原因
你的代码中'test-report' in event['body']的判断逻辑有误:如果event['body']是API Gateway触发Lambda时默认的JSON格式字符串,in操作会检查字符串中是否包含子串,自然会匹配到original-policy值里的test-reports,而非仅检查字典的第一层键。
解决方案
先将JSON格式的body字符串解析为Python字典,再直接检查键是否存在:
import json def lambda_handler(event, context): # 先尝试解析body为字典 try: body_dict = json.loads(event['body']) except json.JSONDecodeError: # 解析失败时直接返回或跳过后续操作 return { 'statusCode': 400, 'body': json.dumps('Invalid request body') } # 仅检查字典第一层键是否存在 if 'test-report' in body_dict: try: # 执行你的业务逻辑 pass except Exception as e: # 异常处理逻辑 print(f"Error occurred: {e}") return { 'statusCode': 200, 'body': json.dumps('Process completed') }
关键说明
- 字典的
in操作默认会仅检查键是否存在,不会匹配值中的内容,这正是你需要的逻辑。 - 必须先处理JSON解析的异常,避免因非法格式的body导致函数报错。
内容的提问来源于stack exchange,提问作者hlesnt395
相关产品推荐
相关产品推荐

