使用开源库而不是 AWS Amplify SDK

Using open source libraries instead of AWS Amplify SDKs

我发现 iOS 的 Amplify SDK 很难使用,可能是因为我们似乎不适合他们的目标受众。 Amplify 为移动开发人员提供了一个 BaaS 解决方案,因此 Amplify SDK 非常适合这个用例。然而,我们的团队拥有专门的 DevOps 工程师,他们使用 Terraform 来配置 AWS 资源。虽然他们的文档指出可以将 Amplify SDK 与预先存在的资源一起使用,但我发现它充其量是笨拙的——不得不手动配置 amplifyconfiguration.json 文件和有限的文档是令人沮丧的,我已经很难让 Auth SDK 与我们的 Cognito 设置一起工作。这一点,加上供应商锁定,让我重新考虑将 Amplify SDK 集成到我们的移动客户端中的决定。

这引出了我的问题:使用开源客户端库而不是 Amplify SDK 与 AWS 资源集成是否有任何明显的缺点?考虑到我们不需要 Amplify 的 BaaS 方面,实际上只需要通过 Cognito 的 OAuth 和通过 AppSync 的 GraphQL,我们是否可以使用 AppAuth 和 Apollo 等库完全放弃 Amplify?

虽然起初并不明显,但 Amplify 有不同的组件:

  • AWS 控制台中的 Devops 工具,用于在控制台的 Amplify 部分中自动化、部署证书等
  • 有用于部署和管理应用程序以及生成 Cloudformation 模板的 CLI 工具链。
  • 最后也是最重要的是 Amplify 客户端库,它与 Cognito 配合得很好。

您可以自己简单地使用客户端库,然后调用(在 Javascript 示例中;Amplify.configure()。如果您愿意,可以单独使用它们 Cognito, (我们也这样做了,我们不使用cli部署我们的前端)。

您也不需要使用他们的 REST 客户端,但您需要捕获身份验证事件和相关令牌,并在您的请求中适当地使用它。

总而言之,听起来您不想使用整个 Amplify 平台,只是想使用它们的客户端库,您可以像使用任何其他库一样使用它们。为您的框架复制他们的 Cognito 登录示例,并手动配置 Amplify(user-pool-id、appclient、domain)而不是使用 cli 生成项目和凭据。