AWS Cognito自定义属性的致命陷阱

本文揭示了AWS Cognito用户池自定义属性的一个重大设计缺陷:一旦添加便无法修改或删除。文章详细探讨了其带来的问题,例如有限的配额、无法回滚的基础设施代码以及灾难性的用户迁移影响,并提供了更优的存储解决方案。

又一个AWS的“火枪”:Cognito自定义属性

你可以在用户池中为用户定义额外的属性。也许你想存储一些标准属性未涵盖的信息,比如社交资料或首选货币。

但这里有一个陷阱:

在你将其添加到用户池后,就无法删除或更改它。

因为这个原因,我不得不删除所有用户并重新创建用户池(幸运的是,那是一个个人开发环境)。

为什么这是个大事?

  1. 你可以添加的自定义属性数量上限是50个。这是一个有限的资源。
  2. 你用代码来部署基础设施?现在你无法回滚了。
  3. 或者你使用“点击操作”(ClickOps)?点击时请格外小心,因为这是一条单行道。

更糟糕的是,实际上几乎不可能替换一个用户池。你无法访问用户的密码和MFA密钥(这是件好事),这意味着如果你迁移用户,他们的一切都会被重置。包括他们的sub(主体ID),这可能会影响你的数据库。

我会非常远离使用自定义属性。

更好的解决方案是什么?

你可能已经有了一些带有数据库的后端:使用它来存储用户的任何额外信息

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计