API Gateway自定义Python授权器(Payload2.0)格式错误排查
解决API Gateway自定义Python授权器(Payload 2.0)响应格式错误问题
核心问题
你忽略了Payload 2.0简单响应模式的顶层结构要求——API Gateway期望的响应是一个包含response字段的JSON对象,而非直接返回isAuthorized字段。
正确的两种写法
写法1:返回序列化后的JSON字符串
必须把isAuthorized嵌套在response对象中再序列化:
import json def lambda_handler(event, context): auth_response = { "response": { "isAuthorized": True } } return json.dumps(auth_response)
写法2:直接返回Python字典(Lambda自动序列化)
同样要遵循顶层response的结构要求:
def lambda_handler(event, context): return { "response": { "isAuthorized": True } }
之前写法失败的原因
- 第一种写法:直接序列化
{isAuthorized:True},缺少API Gateway要求的顶层response字段,导致服务端无法识别授权结果 - 第二种写法:直接返回
{"isAuthorized": True},不符合Payload 2.0的结构规范,被判定为格式错误
额外注意事项
- 确保Lambda运行时(如Python 3.x)配置正常,避免序列化时出现编码或格式异常
- 后续若需添加自定义上下文信息(如
context字段),也要嵌套在response对象内
内容的提问来源于stack exchange,提问作者SerialEnabler
相关产品推荐
相关产品推荐

