🔑

Cognito で Userpool が複数ある時の Amplify.configure の使い方

2021/06/10に公開

諸事情で Userpool が複数あるのですが、下記のように Amplify.configure は一つの Userpool の設定しか受け取りません。

export const configure = {
  Auth: {
    region: process.env.AMPLIFY_CONFIG_REGION,
    userPoolId: process.env.AMPLIFY_CONFIG_USER_POOL_ID,
    userPoolWebClientId: process.env.AMPLIFY_CONFIG_USER_POOL_WEB_CLIENT_ID,
  },
};

Amplify.configure(configure);

複数ある場合一体どうすればいいのでしょうか…。

解決策

こんな感じで login 時に一つ目の Userpool で実行、エラーが出たら二つ目の Userpool の設定を Amplify.configure するようにしました。

export const signIn: (username: string, password: string) => Promise<any> = (
  username,
  password
) => {
  Amplify.configure(configure1);
  return Auth.signIn(username, password)
    .then(Promise.resolve)
    .catch(() => {
      Amplify.configure(configure2);
      return Auth.signIn(username, password);
    });
};

若干ゴリ押し感はありますがちゃんと動いてくれました。
ニッチケースだとは思いますがご参考ください!

Discussion