返回

文章详情

我为一个初创企业使用了 AWS Cognito。我不会再这样做了

Hacker News2026年8月28日 13:21

当我在为我们的初创企业设置身份验证的第三天时,我意识到出了一些问题。这不是“我漏掉了一个分号”那种问题。更像是“我遵循了文档中的每一步,但密码重置流程仍然重定向到错误的位置”的问题。我在十二个标签页中打开了文档。我复制粘贴了代码示例。我甚至观看了一个听起来像是经历过这种噩梦的人制作的教程。事情是这样的。我之前实施过身份验证。我曾与 Auth0 揉斗过,驯服过 Firebase Auth,甚至做过一个我并不自豪但确实有效的自定义 JWT 系统。所以当我们的初创企业需要身份验证,而团队倾向于选择 Cognito,因为“它已经在 AWS 生态系统中,前 50,000 个月活跃用户是免费的”时,我想,这有多糟糕呢?我后悔了一切。文档是为五个不同的人同时编写的阅读 Cognito 文档的感觉就像是有人把三本不同的手册放在一起,扔进搅拌机,然后再撒上一些过时的 Stack Overflow 答案作为调味品。AWS 正试图同时服务过多的受众。你有想要理解底层身份协议的企业架构师。你有只想要登录表单的前端开发者。你有需要本地 SDK 的移动开发者。文档试图做到人人有用,这意味着最终只是对任何人都没有帮助。我搜索“Cognito 自定义属性验证”,却落到了一个开始有一段关于目录架构的页面,假设我已经阅读了其他我不知道存在的四个页面。没有明确的线性路径。只有超链接和祈祷。而代码示例,哦,代码示例。它们一半是旧版 JavaScript SDK 的。一些引用了 Amplify v1 API。另一些使用了原始 AWS SDK。文档并不总是清楚地告诉你他们谈论的是哪个版本,所以你只能在导入语句中扮演侦探。放大器 v6 出卖我的那一天 说到版本。让我告诉你 JavaScript 库的情况,因为这个确实让我感到意外。当我们开始构建时,Amplify 是版本 5。我写了我们的身份验证流程,测试它,提交了它,然后转向了其他功能。几周后,我回来修复一个错误,注意到一些控制台中的弃用警告。没问题,我想。我会只需更新到最新版本。朋友们。Amplify v6 不仅仅更改了一些方法签名。它从根本上重新架构了你与 Cognito 的交互方式。我构建了整个 UI 流程的函数消失了。被替换了。消失了。迁移指南实际上是存在的,但它更像是一张宝藏地图,遗漏了一半的地标。我重写了代码。不是重构。重写。原本在生产环境中运行良好的身份验证逻辑不得不被重建,因为库维护者决定旧的 API 不再是被认可的路径。那不是升级。这是一种劫持情况。 本地开发是一种特殊的痛苦 这是关于 Cognito 的一个有趣事实:它是基于云的。我知道,令人震惊。但实际上,这意味着你不能仅仅启动一个本地实例来离线测试你的身份验证流程。你总是要访问实际的 AWS 端点。现在,有像 serverless-offline 插件和本地 Cognito 模拟器这样的工具试图弥补这一差距。但它们是社区项目,维护和保真度各不相同。AWS 的官方说法基本上是“在云中测试”,这是很好的建议,除非你在飞机上,或你的互联网不稳定,或者你只是想要快速迭代周期,而不必等待网络往返。我花了一个令人尴尬的时间设置一个与真实情况不太匹配的本地模拟,这意味着错误会在本地潜入并出现在预发布环境中。 本地开发的整个意义在于及早捕捉问题,而 Cognito 则积极反对这一点。 你想要自定义?我能做的只是一个 logo 这一点让我感到刺痛。Cognito 提供的托管 UI 是功能性的。它在那里。它大多数情况下工作正常。但如果你希望它看起来像你的品牌而不是像一个穿着服装的 AWS 服务,你会有一个糟糕的体验。你可以更改 logo。你可以通过控制台微调一些 CSS。但布局、结构和整体感觉呢?那是 AWS 的家,而你只是在租一个房间。如果你需要任何超出基本自定义的东西,社区的建议通常是“使用 SDK 构建你自己的 UI。”好吧,我明白。但在那种情况下,托管 UI 到底为我节省了什么?打破我精神的仅电子邮件配置 让我告诉你我几乎想把我的笔记本电脑扔出窗外的那一刻。我们的应用只需要电子邮件身份验证。没有用户名。用户使用电子邮件注册,验证它,设置一个密码,然后完成。简单的概念,对吧?所以我进入了 Cognito 用户池设置,将其配置为使用电子邮件地址作为登录标识符。

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡