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

如何在AWS Serverless中移除重复创建的Cognito User Pool?

解决Serverless框架下重复创建Cognito用户池的问题

1. 定位要删除的用户池

两个同名用户池可通过以下方式区分:

  • 登录AWS Cognito控制台,找到两个MyUserPool实例,查看ARN和关联触发器:自动创建的池会绑定post_sign_up Lambda触发器,而resources字段定义的池无此关联
  • 进入CloudFormation控制台,找到服务对应的栈,在资源列表中识别:自动生成的用户池命名通常带触发器标识(如PostConfirmationMyUserPoolUsersPool),自定义的为你在resources里定义的UserPool

2. 手动移除目标用户池及关联资源(无需重新部署)

步骤1:移除Lambda触发器关联

  • 打开目标用户池的触发器页面,找到绑定的post_sign_up Lambda,点击移除
  • 进入Lambda控制台的post_sign_up函数页面,在触发器标签页删除该用户池的触发配置

步骤2:删除用户池

  • 回到Cognito用户池页面,选中目标池(自动创建的那个),点击删除

    注意:若池内存在用户,需先批量删除所有用户才能执行池删除操作

步骤3:清理CloudFormation残留(可选)

如果自动创建的用户池由CloudFormation管理,手动删除后可能在栈中留下残留资源,可通过以下方式清理:

  • 使用AWS CLI命令:aws cloudformation delete-stack-resources --stack-name <你的服务栈名> --logical-resource-id <自动创建的用户池逻辑ID>
  • 或在CloudFormation控制台的栈资源列表中,选中目标资源执行删除操作

3. 修正Serverless配置避免重复创建

修改你的serverless.yml配置,取消注释existing: true选项,确保触发器关联到自定义的用户池:

functions:
  post_sign_up:
    ...
    events:
      - cognitoUserPool:
          pool: MyUserPool
          trigger: PostConfirmation
          existing: true             # 启用该选项,关联已有用户池
...
resources:
   UserPool:
      ...
      Properties:
        UserPoolName: MyUserPool

后续部署时,框架会自动将触发器绑定到你在resources中定义的用户池,不会再创建新池。

内容的提问来源于stack exchange,提问作者Александр М

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:47:55