AWS Amplify和amazon-cognito-identity-js之间的区别?

时间:2018-12-18 16:12:27

标签: javascript angular typescript amazon-web-services amazon-cognito

我正在查看有关如何将Cognito与Angular集成的演示,并amazon-cognito-identity-js用于授权服务。

似乎这是我们应该使用的,但是其他教程将AWS Amplify整体安装为一个

npm i aws-amplify

好奇有什么区别,以及一个电流是否大于另一个电流?

2 个答案:

答案 0 :(得分:4)

amazon-cognito-identity-js曾经是专门用于Cognito的独立软件包。最近,他们将所有SDK捆绑到Amplify中,以简化集成过程。

例如,在我们的iOS应用中,Cogntio SDK的许多问题已通过移至Amplify得到解决。

正如您在下面的链接中看到的那样,该程序包现在维护在Amplify伞下

https://github.com/aws-amplify/amplify-js/tree/master/packages/amazon-cognito-identity-js

它在这里曾经是独立的:

https://github.com/amazon-archives/amazon-cognito-identity-js

我建议继续使用Amplify,因为这是AWS开发在内部发展的方向,并且无论如何amazon-cognito-identity-js仍是Amplify的一部分。

答案 1 :(得分:3)

补充@DaveS 的精彩回答。您可以使用 3 种官方工具将 Cognito 集成到您的应用中:

Amplify

  • 在客户端应用程序中使用它,您无论如何都会在其中使用 Amplify - 以利用预制的身份验证 UI 组件或与来自 Amplify 生态系统的其他服务集成:API、分析、存储等。
  • 不支持启用机密的 Cognito 应用客户端。
  • 无法直接进行经过身份验证(需要 AWS 凭证)的 Cognito API 调用(例如 adminCreateUser),但有一个 workaround

amazon-cognito-identity-js

  • 它是一个小得多的包,它是 Amplify 的一部分(托管在 Amplify monorepo 中)。
  • 如果您不需要 Amplify 提供的任何额外功能(节省捆绑包大小),它仍然可以单独使用。
  • 不支持启用机密的 Cognito 应用客户端。
  • 无法进行经过身份验证(需要 AWS 凭证)的 Cognito API 调用,例如adminCreateUser
  • 可在后端使用(仅限未经身份验证的 Cognito API)。

AWS SDK

  • 尽可能低级。
  • 提供对所有(经过身份验证和未经身份验证的)Cognito API 的访问。对于经过身份验证,请确保代码可以访问 AWS 凭证。
  • 可以使用启用机密的 Cognito 客户端应用(您需要使用机密对请求进行签名)。
  • 可用于客户端(仅用于未经身份验证的 API,否则您将暴露机密)和服务器应用程序。

可以在此处找到所有 3 个的代码示例:AWS Cognito: Amplify vs amazon-cognito-identity-js vs AWS SDK