You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pre Token Generation Lambda触发器,如何设置claimsToAddOrOverride返回数组

解决InvalidLambdaResponseException并实现eaid数组转换

问题核心原因

Cognito的Pre Token Generation触发器要求严格的响应格式:必须返回包含response键的完整event对象,且自定义属性需嵌套在claimsOverrideDetails -> claimsToAddOrOverride层级下。返回格式不符合要求就会触发Unrecognizable lambda output错误。

正确实现代码

def lambda_handler(event, context):
    # 从用户属性中提取custom:eaid
    user_attrs = event['request']['userAttributes']
    eaid_raw = user_attrs.get('custom:eaid', '')
    
    # 按|拆分字符串为数组,处理空值情况
    eaid_array = eaid_raw.split('|') if eaid_raw else []
    
    # 构建Cognito要求的响应结构
    event['response'] = {
        'claimsOverrideDetails': {
            'claimsToAddOrOverride': {
                'eaid': eaid_array
            }
        }
    }
    
    # 必须返回完整的event对象
    return event

关键注意事项

  • 必须返回完整的event对象,不能只返回自定义属性部分,Cognito需要接收包含原始请求和修改后响应的完整结构。
  • 嵌套层级不能错:自定义属性必须放在claimsToAddOrOverride字典中,Python的list会自动序列化为JSON数组,满足输出要求。
  • 容错处理:当custom:eaid不存在或为空时,返回空数组避免后续逻辑报错。

常见错误排查

  • 检查旧代码是否直接返回了单独的属性字典(比如return {'eaid': eaid_array}),这会完全不符合Cognito的响应格式要求。
  • 确认是否遗漏了response或claimsOverrideDetails层级,少一层都会触发格式识别错误。

内容的提问来源于stack exchange,提问作者abbasCoder51

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:15:33