警惕AWS Cognito的又一个“陷阱”:自定义属性的不可逆之痛

本文深入探讨了AWS Cognito用户池中自定义属性的一个重大限制:一旦添加便无法修改或删除。作者以亲身经历为例,阐述了这一特性如何导致不可逆的部署问题、影响代码回滚,并最终建议将额外用户信息存储在后端数据库中。

警惕AWS Cognito的又一个“陷阱”:自定义属性的不可逆之痛

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

但这里有一个陷阱

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

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

为什么这是个大事?

  • 你最多只能添加50个自定义属性。这是一种有限资源
  • 你使用代码来部署基础设施?现在你无法回滚
  • 或者你使用点击操作?请注意你的点击位置,因为这是一条单行道

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

我会尽量远离使用自定义属性。

更好的解决方案是什么?你可能已经拥有带有某种数据库的后端:使用它来存储关于用户的任何额外信息

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