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

如何通过SAM配置Cognito Pre Token Generation Lambda触发器

如何通过AWS SAM配置Cognito Pre Token Generation Lambda触发器

Cognito Pre Token Generation触发器支持在身份令牌生成前自定义令牌内容,目前已经可以通过SAM完成配置,不需要等待路线图中的待开发功能,具体配置方法如下:

方案1:使用SAM原生Cognito事件源映射(推荐)

当前版本SAM已经原生支持Cognito用户池触发器的事件配置,你模板中Events段的???位置可以直接替换为以下配置:

Events:
  PreTokenGenTrigger:
    Type: Cognito
    Properties:
      UserPool: !Ref 你模板中定义的Cognito用户池资源逻辑ID
      Trigger: PreTokenGeneration

该配置方式会自动完成两项配置:

  • 建立Lambda和Cognito用户池的触发器关联
  • 自动给Lambda添加资源策略,允许Cognito服务调用该函数,不需要手动配置权限

方案2:旧版本SAM兼容配置

如果你使用的SAM CLI版本较旧,不支持上述原生Cognito事件类型,可以不在Lambda的Events块做配置,直接在Cognito用户池资源上关联触发器:

  1. 首先在Cognito用户池资源的配置中指定PreTokenGeneration对应的Lambda:
AuthUserPool:
  Type: AWS::Cognito::UserPool
  Properties:
    # 其余用户池常规配置(密码策略、属性配置等)保持不变
    LambdaConfig:
      PreTokenGeneration: !GetAtt ApiJWTAddCustomClaimFunction.Arn
  1. 补充Lambda调用权限资源,否则Cognito将没有权限触发该函数:
LambdaInvokePermissionForCognito:
  Type: AWS::Lambda::Permission
  Properties:
    Action: lambda:InvokeFunction
    FunctionName: !Ref ApiJWTAddCustomClaimFunction
    Principal: cognito-idp.amazonaws.com
    SourceArn: !GetAtt AuthUserPool.Arn

配置注意事项

  • 你当前模板中给函数配置的cognito-idp:*全权限范围过大,生产环境建议根据实际业务需求收缩到最小权限集,降低安全风险
  • 模板修改完成后可以先执行sam validate做语法校验,确认无问题后再执行部署
  • 部署完成后可以在Cognito控制台的用户池「触发器」页面,确认Pre Token Generation触发器已经正确关联到目标Lambda函数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:22:48