AWS AppSync 的多种授权类型

Multiple Authorization types with AWS AppSync

AppSync 项目似乎只能配置一种授权类型(API_KEYAWS_IAM 等)。我使用 AMAZON_COGNITO_USER_POOLS 作为我的主要类型,但我也有一个 (Node.js) 客户端,我想为其提供 API_KEY 访问权限。

这可能吗?

如果没有,你能推荐任何替代方案吗?

有两种方法可以解决您的用例。

  1. 您可以使用相同的模式配置单独的 AppSync 端点(您可以在一个 AWS 账户中为每个区域创建最多 25 个),并使用不同的授权方案对其进行配置。仅当您需要端点之间的硬隔离时才使用此方法。

  2. 截至 2019 年 5 月,AWS AppSync 支持 multiple authorization schemes GraphQL API。您可以启用 AMAZON_COGNITO_USER_POOLS 作为默认身份验证方案,并启用 API_KEY 作为附加身份验证方案。这是推荐的方法,也适用于订阅,这在另一个答案中解决了 Matthew 的担忧。

如果您没有订阅,Rohan 的回答是有效的;如果您在一个 AppSync 端点中有一个订阅并在另一个 AppSync 端点中改变数据,那么当幕后数据更新时,订阅将不会更新(这是有道理的,因为订阅是作为 AppSync 中的侦听器附加的端点)。在 AppSync 支持多种方法之前,您可能想尝试一下 IAM;有一些细节 here on how to get it to work with Cognito in app + a Lambda. The example there is in python but for node.js you would generate signatures with something like https://www.npmjs.com/package/aws4 。如果您的 运行 您的 node.js 客户端在其他地方生成了一些 API 密钥

,则相同的方法将起作用

截至 2019 年 5 月,AWS AppSync 宣布在同一 API 中支持多种身份验证类型。 https://aws.amazon.com/blogs/mobile/using-multiple-authorization-types-with-aws-appsync-graphql-apis/