将手动创建的 Cognito 用户池与放大项目一起使用
Posted
技术标签:
【中文标题】将手动创建的 Cognito 用户池与放大项目一起使用【英文标题】:Using manually created Cognito User Pool with an amplify project 【发布时间】:2020-08-21 16:44:00 【问题描述】:在将 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。
如何解决?
【问题讨论】:
【参考方案1】:解决方案在这里找到:https://github.com/aws-amplify/amplify-cli/issues/779
-
初始化放大项目
amplify init
通过选择 GraphQL 添加 API amplify add api
更新ampilfy/backend/api/backend-config.json
,将defaultAuthentication
改为
"defaultAuthentication":
"authenticationType": "AMAZON_COGNITO_USER_POOLS"
-
更新
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
)
amplify push
,瞧,Appsync 将用户池作为默认身份验证。
【讨论】:
以上是关于将手动创建的 Cognito 用户池与放大项目一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何在现有的 Cognito 用户池中获取生日? (放大 iOS)
如何通过 Cognito 用户 ID 限制访问 AWS API Gateway 端点
使用 Amplify 将现有 AWS Cognito 用户池集成到 iOS 项目中