2

在将 AWS Amplify 添加到 React 项目时,我正在尝试使用我现有的 Cognito 用户池。

因此,我想在我手动创建的 Cognito 用户池中为现有用户使用 Amplify Datastore 功能。此外,我喜欢用于管理 API 的 GraphQL 模式的 Amplify CLI 功能,因此,这意味着我需要在我的 react 项目中初始化 amplify 项目。

我从本章开始https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js。但本章使用 API Key 认证。

我知道,我可以通过 将身份验证添加到放大项目amplify auth add,但它没有使用现有用户池的选项。

我可以使用我的用户池,而无需amplify init通过手动组合来初始化放大项目aws-exports.json。但正如我所指出的,我还需要为 API 添加放大项目。

我会结合配置,例如Amplify.configure({...aws_config_by_amplify, ...my_aws_config}),但仍然不清楚如何使用我的用户池管理放大 api 身份验证。

理想情况下,使用一些命令来放大现有用户池的项目配置会很棒,但我还没有找到。

另外,我认为可以在放大项目的 cloudformation 模板/参数中进行一些手动更改,并用它来更新堆栈,但不幸的是,我在 CloudFormation 的使用方面不太好。

如何解决这个问题?

4

1 回答 1

1

解决方案在这里找到:https ://github.com/aws-amplify/amplify-cli/issues/779

  1. 初始化放大项目amplify init
  2. 添加 APIamplify add api并选择 GraphQL
  3. 更新ampilfy/backend/api/backend-config.json,更改defaultAuthentication
          "defaultAuthentication": {
            "authenticationType": "AMAZON_COGNITO_USER_POOLS"
          }
  1. 更新ampilfy/backend/api/amplifyDatasource/parameters.json
{
    "AppSyncApiName": "amplifyDatasource",
    "DynamoDBBillingMode": "PAY_PER_REQUEST",
    "DynamoDBEnableServerSideEncryption": "false",
    "authRoleName": {
        "Ref": "AuthRoleName"
    },
    "unauthRoleName": {
        "Ref": "UnauthRoleName"
    },
    "AuthCognitoUserPoolId": "<USERPOOL ID>"
}

(我不确定authRoleName并且unauthRoleName需要)

  1. amplify push,瞧,Appsync 将用户池作为默认身份验证。
于 2020-05-08T08:00:22.657 回答