amplify init不要: Next.jsとAmplifyUIで既存のCognito使って認証だけしたい
やりたいこと
- Cognitoのユーザプールは別で作成済みで、amplifyを使ってのリソース作成や管理は「しない」
- Next.jsのアプリケーションは別で作成済み
という条件で、AmplifyUIのうち認証のとこだけ使いたい(要は Authenticator | Amplify UI for React だけ使う)ということです。
これが以外と情報を探すのに手間取ったので、自分でメモしておきます。
確認した環境は以下の通り。
先に結論
amplify init や amplify add auth を実行する必要はない。
必要なのは @aws-amplify/ui-react のインストールと、CognitoユーザプールのIDなどを環境変数として定義し、それをアプリで読み込むようにすることのみ。
手順
amplify UI のインストール
公式ドキュメントに従ってインストールする。
Installation | Amplify UI for React
環境変数の設定
Next.jsの場合は NEXT_PUBLIC_*** という接頭辞がある変数であればクライアントサイドで参照できる。
Next.js で環境変数を扱う (.env, NEXT_PUBLIC, NODE_ENV)|まくろぐ
Cognitoユーザプールの情報をNEXT_PUBLIC_hogehogeで定義していく。
補足)ここで定義する情報はクライアント側に漏れても問題のない情報なのでNEXT_PUBLICで定義するが、クライアント側に漏れてまずいような値を定義するときにはNEXT_PUBLICは使えませんというか使ったらだめです。
/project_root/.env.local などに以下を定義する。
AmplifyUI用の変数設定
/project_root/types とか /project_root/config とか、とにかくどこでもいいのだけれどアプリが読み込めるように以下の変数を定義する。
アプリで使う
あとは上記で定義した AmplifyConf を必要な場所で import して、
してやれば使えるようになる。(詳細な使い方は公式ドキュメント確認のこと)