という条件で、AmplifyUIのうち認証のとこだけ使いたい(要は Authenticator | Amplify UI for React だけ使う)ということです。
これが以外と情報を探すのに手間取ったので、自分でメモしておきます。
確認した環境は以下の通り。
"next": "13.3.1"
"@aws-amplify/ui-react": "^4.6.0"
amplify init
や amplify add auth
を実行する必要はない。
必要なのは @aws-amplify/ui-react
のインストールと、CognitoユーザプールのIDなどを環境変数として定義し、それをアプリで読み込むようにすることのみ。
公式ドキュメントに従ってインストールする。
Installation | Amplify UI for React
npm install @aws-amplify/ui-react aws-amplify
# または
yarn add @aws-amplify/ui-react aws-amplify
Next.jsの場合は NEXT_PUBLIC_***
という接頭辞がある変数であればクライアントサイドで参照できる。
Next.js で環境変数を扱う (.env, NEXT_PUBLIC, NODE_ENV)|まくろぐ
Cognitoユーザプールの情報をNEXT_PUBLIC_hogehogeで定義していく。
補足)ここで定義する情報はクライアント側に漏れても問題のない情報なのでNEXT_PUBLICで定義するが、クライアント側に漏れてまずいような値を定義するときにはNEXT_PUBLICは使えませんというか使ったらだめです。
/project_root/.env.local
などに以下を定義する。
NEXT_PUBLIC_AWS_PROJECT_REGION=ap-northeast-1
NEXT_PUBLIC_AWS_COGNITO_REGION=ap-northeast-1
NEXT_PUBLIC_AWS_USER_POOL_ID=ap-northeast-1_abcdefghijklmn
NEXT_PUBLIC_AWS_COGNITO_CLIENT_ID=abcdefghijklmnopqrstu
/project_root/types
とか /project_root/config
とか、とにかくどこでもいいのだけれどアプリが読み込めるように以下の変数を定義する。
export const AmplifyConf = {
aws_project_region: process.env.NEXT_PUBLIC_AWS_PROJECT_REGION,
aws_cognito_region: process.env.NEXT_PUBLIC_AWS_COGNITO_REGION,
aws_user_pools_id: process.env.NEXT_PUBLIC_AWS_USER_POOL_ID,
aws_user_pools_web_client_id: process.env.NEXT_PUBLIC_AWS_COGNITO_CLIENT_ID,
};
あとは上記で定義した AmplifyConf
を必要な場所で import して、
Amplify.configure(AmplifyConf);
してやれば使えるようになる。(詳細な使い方は公式ドキュメント確認のこと)