Reactjs Aws在一个GraphQLAPI中使用多个Cognito用户池进行放大

Reactjs Aws在一个GraphQLAPI中使用多个Cognito用户池进行放大,reactjs,amazon-web-services,graphql,aws-amplify,aws-appsync,Reactjs,Amazon Web Services,Graphql,Aws Amplify,Aws Appsync,我是AWS Amplify的新手,我正在尝试做一个简单的项目 我有两个不同的前端(react)项目。其中一个用于博客阅读器,另一个用于编辑器。对于这两个应用程序,我希望使用相同的DynamoDB表(并使用graphqlapi)。但是我想为每个项目使用不同的用户池。我如何实现这一点 我在读这篇文章- 我知道AWS AppSync支持多种授权类型,如cognito、api密钥。。。 但它是否支持两种cognito类型 谢谢,根据AWS,您可以使用两个不同的Cognito组通过以下方式访问相同的App

我是AWS Amplify的新手,我正在尝试做一个简单的项目

我有两个不同的前端(react)项目。其中一个用于博客阅读器,另一个用于编辑器。对于这两个应用程序,我希望使用相同的DynamoDB表(并使用graphqlapi)。但是我想为每个项目使用不同的用户池。我如何实现这一点

我在读这篇文章-

我知道AWS AppSync支持多种授权类型,如cognito、api密钥。。。 但它是否支持两种cognito类型

谢谢,

根据AWS,您可以使用两个不同的Cognito组通过以下方式访问相同的AppSync API访问相同的DynamoDB表,这非常简单

如果使用
aws\u auth
指令

type Query {
  getPosts:[Post!]! 
  @aws_auth(cognito_groups: ["Bloggers", "Readers"])
}
type Query {
  getPosts:[Post!]!
  @aws_api_key @aws_cognito_user_pools(cognito_groups: ["Bloggers", "Readers"])
}
如果使用
aws\u cognito\u user\u pool
指令

type Query {
  getPosts:[Post!]! 
  @aws_auth(cognito_groups: ["Bloggers", "Readers"])
}
type Query {
  getPosts:[Post!]!
  @aws_api_key @aws_cognito_user_pools(cognito_groups: ["Bloggers", "Readers"])
}
现在,如果您特别希望为同一个API和DynamoDB表使用两个不同的用户池,那么您需要多做一点工作来实现这一点。以下是步骤:

  • 将两个用户池添加为附加授权 提供程序在您的AppSync设置中
  • 使用
    @aws\u cognito\u user\u pools
    指令进行查询和 这些查询和突变试图访问的模式和对象中的突变
  • 这是一个棘手的问题!当您尝试访问查询/变异解析器中的
    $ctx.identity.cognitoIdentityPoolId
    时,它将抛出null。因为
    cognitoIdentityPoolId
    仅包括在
    AWS_IAM
    授权头中,而不包括在
    AWS_COGNITO_用户池中
    []。但是,您仍然可以从
    $ctx.identity.claims
    中的
    iss
    字段中获取用户池ID,它看起来像
    https://cognito-idp.us-xxxx-x.amazonaws.com/us-xxxx-X_XxxXxxXX
    。这
    us-xxxx-X_XxxXxxXX
    是您的用户池ID,您必须以某种方式对其进行解析
  • 解析用户池ID后,可以根据 Cognito池ID,然后授予他们对您创建的表的访问权 欲望

  • 你是指cognito组还是cognito用户池?