AWS Amplify 和 amazon-cognito-identity-js 的区别?
Posted
技术标签:
【中文标题】AWS Amplify 和 amazon-cognito-identity-js 的区别?【英文标题】:The difference between AWS Amplify and amazon-cognito-identity-js? 【发布时间】:2019-05-19 02:34:06 【问题描述】:我正在查看有关如何将 Cognito 与 Angular 集成的演示,它是用于授权服务的 amazon-cognito-identity-js。
看起来应该是我们应该使用的,但是其他教程整体安装AWS Amplify:
npm i aws-amplify
想知道有什么区别以及一个是否比另一个更新?
【问题讨论】:
【参考方案1】:amazon-cognito-identity-js
曾经是一个单独的包,专门用于Cognito
。最近,他们将所有 SDK 捆绑到 Amplify
以简化集成过程。
例如,在我们的 ios 应用中,Cognito
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
的一部分进行维护。
【讨论】:
【参考方案2】:补充@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。
【讨论】:
嘿 Max,感谢您对这 3 个官方选项的精彩概述以及包含代码示例的文章!它确实有助于阐明将 Cognito 集成到 Web 应用程序客户端或服务器的选项。以上是关于AWS Amplify 和 amazon-cognito-identity-js 的区别?的主要内容,如果未能解决你的问题,请参考以下文章
AWS Amplify 错误从 aws-amplify 导入 StorageProvider 类
Flutter 与 AWS 的集成(有和没有 Amplify)