AWS Amplify CLIで既存のCognito User PoolをImportする
個人的な理由でCognito User PoolsをAWS Amplify CLIの管理外に置こうとしています。 その場合のAmplify CLIでの対応についてまとめました。 Amplify initは必須 ampli […]
目次
個人的な理由でCognito User PoolsをAWS Amplify CLIの管理外に置こうとしています。
その場合のAmplify CLIでの対応についてまとめました。
Amplify initは必須
amplify init
でセットアップは事前に済ませましょう。この時選択するAWSのprofileに設定されているregionが、Cognitoのあるリージョンと同じであることが必須です。
下の例のように、No Cognito User Pools
と言われた場合はまずregionの設定を疑いましょう。
% amplify import auth
Using service: Cognito, provided by: awscloudformation
No Cognito User Pools were found in the configured region: us-east-1.
amplify import authでインポートする
amplify import authコマンドを実行すると、リージョン内にあるUser Poolsを自動で探してくれます。
% amplify import auth
Using service: Cognito, provided by: awscloudformation
? What type of auth resource do you want to import? …
❯ Cognito User Pool and Identity Pool
Cognito User Pool only
? Select the User Pool you want to import: …
cognito-webauthn-UserPool (us-west-2_XXXXP)
webauthn-cognito2-UserPool (us-west-2_XXXXc)
(Type in a partial name or scroll up and down to reveal more choices)
成功すれば、以下のようにログが出力されます。
% amplify import auth
Using service: Cognito, provided by: awscloudformation
✔ What type of auth resource do you want to import? · Cognito User Pool only
✔ Select the User Pool you want to import: · us-west-2_XXXXP
✔ Only one Web app client found: 'my-app' was automatically selected.
✔ Only one Native app client found: 'aws-amplify' was automatically selected.
✔ Federated identity providers are not configured, no OAuth configuration needed.
✅ Cognito User Pool 'cognito-webauthn-UserPool' was successfully imported.
Next steps:
This resource will be available for GraphQL APIs ('amplify add api')
Use Amplify libraries to add signup, signin, signout capabilities to your client
application.
iOS: https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios
Android: https://docs.amplify.aws/lib/auth/getting-started/q/platform/android
JavaScript: https://docs.amplify.aws/lib/auth/getting-started/q/platform/js
amplify statusで確認
amplify status
でもImport
ステータスで表示されます。
Current Environment: dev
| Category | Resource name | Operation | Provider plugin |
| -------- | --------------------------- | --------- | ----------------- |
| Auth | ionicamplifyexample853f2b6c | Import | awscloudformation |
あとはamplify push
やamplify pubish
などでAmplifyアプリをAWSにアップしましょう。
Authまわりを実装する前に、aws-exports.js
をチェック
amplify import auth
しただけでは、Authの設定がimportされていない様子でした。もしAuth系のデータがファイルに反映されていない場合、amplify push
などでAWS側とデータを同期させることで、情報が更新されます。
トラブルシューティング
“No Cognito User Pools were found in the configured region: us-east-1”
amplify init
でセットアップしたリージョンにCognito User Poolsが見つかりませんでした。リージョンが異なる場合は、新しくamplify init
し直すか、ユーザープールをAmplify側のリージョンに作り直しましょう。
“❯ The selected Cognito User Pool does not have at least 1 Native app client configured. Native app clients are app clients with a client secret.”
User Poolsのアプリクライアントが存在しない。またはクライアントシークレットを持つものが存在しないのどちらかです。新しくアプリクライアントを作成してやりましょう。