AWS CloudFront报错:'str' object has no attribute 'values' 求排查方案
CloudFront转发到API Gateway报错
'str' object has no attribute 'values'的排查思路 1. 先验证API Gateway原生端点
- 绕开CloudFront,直接调用API Gateway的原生端点,确认是否正常响应:
- 若直接调用也报错,问题出在API Gateway侧:
- 检查映射模板:确认Velocity模板中没有将字符串变量当作字典调用
values()方法的情况。 - 检查Lambda集成:确认Lambda返回符合API Gateway要求的JSON结构(如
{"statusCode": 200, "body": "..."}),避免返回纯字符串导致解析失败。
- 检查映射模板:确认Velocity模板中没有将字符串变量当作字典调用
- 若直接调用也报错,问题出在API Gateway侧:
2. 临时开启CloudFront日志
- 开启CloudFront标准日志:在分发的「监控」-「日志」中配置S3存储桶,等待15-30分钟生成日志,查看请求头部、转发参数、状态码等细节。
- 开启实时日志流:配置CloudWatch实时日志,快速获取请求数据,重点排查请求中是否有被错误转换为字符串的对象类型参数。
3. 检查CloudFront行为的转发配置
- 查看分发行为的「缓存键和源请求设置」:
- 确认自定义源请求头部、请求体转发规则是否正常,避免将对象类型参数错误转为字符串。
- 检查关联的缓存策略/源请求策略,确认是否存在修改请求参数的配置,导致传递给API Gateway的参数格式异常。
4. 排查集成权限与源配置
- 确认API Gateway阶段是否允许CloudFront的IP范围访问,或是否有WAF规则拦截请求。
- 检查CloudFront源配置中的API Gateway域名是否正确,是否使用了对应区域的正确端点,避免因域名错误返回异常内容。
内容的提问来源于stack exchange,提问作者geepara
相关产品推荐
相关产品推荐

