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 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Auth0 进行 aws-amplify

AWS Amplify 错误从 aws-amplify 导入 StorageProvider 类

Flutter 与 AWS 的集成(有和没有 Amplify)

使用 AWS Amplify 和 AWS Cognito 进行数据特定授权

NextJS 与 Aws Amplify 部署错误

如何使用 Amplify 框架从 AWS 中的 API 获取 http 状态和详细响应?