AWS Amplify 是 AWS 提供的一套工具,可帮助您构建应用程序。
请允许我在这里设置场景,以便尽可能清楚地说明这一点。我有一个朋友(真实故事),他希望构建一个以体能训练为中心的应用程序。他的妻子是一名体能训练师,他们认为也许可以通过此赚钱。它还没有完全具体化,但也许该应用程序可以出售个性化训练计划的访问权限,提供定制的饮食、锻炼视频,并安排一对一的咨询。在我看来很聪明!假设他们在某种程度上证明了这个想法的可行性,那么是时候发挥他们的开发技能并开始构建了。
此类应用程序的许多需求都直接且轻松地映射到 Amplify。开发人员开始计划时可能会这样想
- 我们需要在某个地方托管它…… Amplify 提供了 静态网页托管。它功能齐全,并具有我们现在开始期望的精美 DX:我连接一个 Git 仓库,它不仅会根据提交进行到 CDN 支持的全局静态托管的部署,还会运行我的 CI/CD(例如,运行测试)并提供预览功能分支的 URL。您可以使用 AWS Amplify Console 执行所有这些操作。
- 我们需要进行用户身份验证…… 这里的重点是用户可以登录以访问他们的内容。Amplify 可以帮助实现这一点(它内置了 Amazon Cognito),这允许进行典型的注册/登录/忘记密码等操作,还可以提供您期望的所有社交登录功能。这是一个 Amplify 所做工作的示例:它有助于使用最少的代码抽象和构建底层云服务。
- 我们需要数据存储…… 理想情况下,它由 GraphQL 管理,因为我的现代前端确实受益于此(也许它是一个 React 应用程序)。Amplify 具备此功能。它内置了 AWS AppSync,这意味着您可以使用任何类型的数据存储,但可以获得更多惊人的功能,例如 GraphQL 端点、实时数据同步和离线支持。
这仅仅是基础知识。所有这些都得到了非常好的涵盖。
我们如何设置所有这些内容?这是最好的部分之一:有一个 CLI 可以帮助完成所有操作。例如,关于数据存储内容,我们如何开始使用它?在安装 CLI 并运行项目中的 amplify init
后,我们执行 amplify add api
,然后系统会引导我们完成操作。
现在对于这个体能训练应用程序,我们也需要一些静态文件存储。也许所有用户都有自定义头像,并且视频本身需要受保护的托管。好吧,我们现在在 AWS 环境中,因此 S3 存储桶非常适合。如何操作?amplify add storage
,然后系统会引导我们完成操作,当然,还有 文档。
确实令人印象深刻。我们可以使用 Amplify 构建几乎整个应用程序。
我们可能需要联系其他服务以处理付款的唯一时间。Stripe 通常是开发人员的首选,因为其出色的 DX 和强大的 API。它们专为像这样的应用程序而构建。我们将通过无服务器函数与 Stripe API 进行通信。猜猜看?我们现在在 AWS 环境中,因此我们可以访问 Lambda,这是最好的无服务器函数提供商。诀窍在于,我们可以通过 AppSync 设置 GraphQL,调用可以与任何外部 API 通信的 Lambda。幸运的是,这里有一个详细的演练,由 Ramon Postulart 提供。
因此,我认为以下内容很重要
- Amplify 是一个助手。AWS 提供了大量的云服务。Amplify 帮助您将它们绑定在一起,并开始使用您需要的重要服务。
- 静态托管是 Web 项目的基础。这是一种 Jamstack 方法。但即使这也不是必需的,例如,您可以使用这些工具 构建iOS 应用程序。
- AWS 是全球最大的云提供商,为全球许多最大的网站提供支持。您可以在此处构建个人项目,并且通常可以在 免费套餐 下进行,但您永远不必担心扩展问题。您在正确的位置进行扩展。
- 有很多内容需要探索。如果您有一天醒来并想要添加推送通知或探索机器学习之类的东西,这些功能也存在。
如果您已阅读到这里,我认为此快速高级视频将更有帮助
其他资源
- 主要资源页面
- Nadar Dabit 撰写了大量关于 Amplify 的文章
- Egghead:使用 AWS Amplify CLI 构建 AWS AppSync API
- CSS-Tricks 上的文章:使用 AWS AppSync 深入了解 GraphQL
- AWS 初创企业博客:从想法到 MVP 构建您的应用程序
- DEV:全栈无服务器 - 使用 GraphQL、CDK、AppSync 和 React 构建实时聊天应用程序
- Shawn Wang
- Dave 和我在 ShopTalk 上 最近与他进行了交谈。
- AWS Amplify Flutter 首次亮相(开发者预览版)
- 使用 AWS Amplify 进行类型安全、全栈 React 和 GraphQL
谢谢!隐私(和 GDPR 合规性)方面如何?这是许多第三方服务存在的问题,也是开发人员日益关注的问题。Amplify 是否使这些问题清晰易懂?
不错的帖子。
是否有人知道是否可以从脚本启动 Amplify 堆栈?我想为每个新客户提供一个包含 API 的后端。换句话说,是否有办法绕过使用 CLI?
我是大约两年前最早使用 Amplify 的用户之一。我用它构建了我的大部分 Web 应用程序(个人资料中的链接),包括:使用 Cognito 进行身份验证,使用 Lambda 进行函数(包括 Lambda 层),使用 S3 进行存储,使用 Amplify 控制台进行 CI/部署,以及使用 CloudFront 进行 API。
优点
– 访问 AWS 的强大功能和深度,但学习曲线更平缓
– 以非常简洁的方式管理开发/登台/生产环境,并像 Git 一样合并更改
– 不断推出大量新功能
– 易用性和强大的功能的完美结合
但是,即使拥有所有这些很棒的功能,我仍然不推荐它。我被“具有 Firebase 简单性的 AWS”的承诺所吸引,但我的体验与之相去甚远。
Amplify 根本不适合生产环境。新版本经常会破坏某些东西,而且不是那种“哦,它只是有点粗糙”的方式。
举个例子,我添加了 Google 登录,以便用户可以更轻松地创建帐户。这需要更新我的 Cognito 用户池,我在登台环境中执行了此操作。这样做后,我意识到它已删除了每个用户帐户,因为我进行了“深度更改”(缺乏更好的术语),这具有重置池的副作用。
它之所以这样表现,是因为 CLI 有错误,无法正确处理“更新”,因此它以某种方式弄乱了 CloudFront 文件,导致我在推送它们时重置了池。
如果我在登台环境中没有发现这一点,我就会将其推送到生产环境(请注意,Amplify CLI 没有发出任何警告),并删除了 2000 名用户的帐户。
类似地,我不得不停止使用控制台构建功能,因为它显然与 Google 身份验证不兼容。在 GitHub 论坛中,有大量的“修复”和“解决方法”,但它们通常涉及重置整个环境(包括用户、实时网站等)。
当您经营真正的企业而不是有趣的副业时,Amplify 团队回复“重置所有内容,它就会工作”并不会让人感到鼓舞。遗憾的是,在多个主要问题上都是如此,只需查看 GitHub 论坛即可了解情况。
随着时间的推移,我对 Amplify 有了一个认识:如果它开始出现问题,不要坚持尝试修复太长时间。否则,您可能会破坏一些无法通过软恢复修复的东西。
公平地说,它正在变得越来越好,我相信它总有一天会达到目标。它有很多优点。但它还不够可靠,无法用于经营业务。仅用于娱乐和副业项目。