作者在初创公司使用AWS Cognito搭建认证系统时遭遇严重问题:文档混乱、密码重置流程出错,尽管有丰富认证经验仍陷入困境。他强烈建议不要重蹈覆辙,认为Cognito试图同时服务过多用户群体导致体验极差。
正文
好的,没问题。作为一名专业的中文编辑,我将对这篇文章进行中文重述,保留核心细节,并删减与主题无关的冗余内容。
核心观点:作者强烈不推荐初创公司使用 AWS Cognito 进行用户认证。
作者在为初创公司搭建认证系统时,选择了 AWS Cognito,理由是它已集成在 AWS 生态系统中,且前5万月活用户免费。然而,他很快发现这是一个巨大的错误,并列举了以下痛点:
文档混乱,难以使用:Cognito 的文档试图同时服务于企业架构师、前端开发者、移动开发者等不同角色,导致内容混杂,缺乏清晰的逻辑主线。用户常常需要像侦探一样,在过时的代码示例和不同版本的 SDK 文档中摸索。
库版本升级带来灾难性后果:从 Amplify v5 升级到 v6 时,API 发生了根本性重构,导致作者不得不重写所有认证逻辑,而非简单的重构。这被形容为“人质劫持”,而非一次正常的升级。
本地开发体验极差:Cognito 是纯云服务,无法在本地运行实例进行离线测试。社区提供的模拟器工具又不够完善,导致本地测试无法发现所有问题,bug 会直接暴露在预发布环境。
自定义能力极其有限:Cognito 提供的托管 UI 只能更换 Logo 和调整少量 CSS,无法进行深度定制。如果需要更灵活的界面,社区建议是“自己用 SDK 重写 UI”,这让托管 UI 的价值大打折扣。
配置错误无法修改,代价高昂:作者在配置用户池时,错误地将一个本应是标准属性的项设为了自定义属性。一旦创建,该属性无法更改。唯一的解决方案是删除整个用户池并重建,或编写复杂的迁移脚本,这对于有活跃用户的生产环境来说,代价极高。
作者的最终结论是:
认证系统是产品的核心,不应为了“生态集成”或“免费”而妥协。糟糕的开发体验所浪费的工程时间,足以支付多年专业认证服务的费用。他建议,如果正在评估 Cognito,务必先构建一个包含自定义属性、邮箱验证和密码重置等复杂功能的原型,亲身体验其开发流程。如果最终打开的文档标签页超过20个,就应该重新考虑这个选择。
评论
根据评论内容,总结如下:
主要观点与论据:
AWS Cognito 用户体验极差(多数评论认可)
- 文档混乱、功能缺失、迁移困难
- 关键引用:"Reading Cognito docs feels like someone took three separate manuals, threw them in a blender"(评论4);"email addresses are case sensitive... no way to migrate"(评论8)
AWS 服务存在“陷阱”性质(部分评论认可)
- 部分服务(如Cognito、CloudFormation)旨在锁定用户,而非真正解决问题
- 关键引用:"the main point of their existence seems to be to trap you in AWS"(评论14);"That’s not an upgrade. That’s a hostage situation."(评论22)
替代方案讨论(观点分歧)
- 部分用户推荐Keycloak、Ory等开源方案
- 也有用户认为自建认证更可控
- 关键引用:"IMHO not rolling your own auth is asking for stuff like this to happen"(评论11);"I can't imagine using a 3rd-party for something like auth"(评论27)
成本与便利性的权衡(观点平衡)
- Cognito价格低廉,但开发时间成本高
- 关键引用:"can't beat the price"(评论5);"The time we lost debugging Cognito issues could have paid for several years of a paid auth provider"(评论10)
对AI生成内容的质疑(少数评论)
- 部分评论认为文章本身可能是AI生成
- 关键引用:"This reads like... 100% AI slop"(评论3);"how are these claude written blogs consistently making front page?"(评论29)
平衡性总结: - 多数评论对Cognito持负面态度,认为其文档差、功能受限、迁移困难 - 少数用户认为其价格优势可接受,但承认功能不足 - 部分评论质疑文章本身质量,但认同Cognito存在的问题 - 替代方案讨论中,开源方案(Keycloak)与自建方案各有支持者