前提

1.amplify add authコマンドで認証サービスを作成する

amplify add auth

? Do you want to use the default authentication and security configuration? Default configuration
? How do you want users to be able to sign in? Username
? Do you want to configure advanced settings?  No, I am done.

2.amplify pushコマンドで作成した認証サービスを AWS にデプロイし、
  AWS のCognitoサービスへ反映する

amplify push

3.amplify consoleコマンドでデプロイしたサービスを確認する

amplify console

実装

import Amplify, { Auth } from 'aws-amplify';
import config from "./aws-exports";

Amplify.configure(config);

/**
 * 現在の設定を取得
 * @returns 設定情報
 */
export function getAuthCurrentConfig() {
    return Auth.configure();
}

/**
 * サインアップ
 * @param {object} userInfo ユーザ情報
 * {username, password, email, phone_number}
 * @returns サインアップ情報
 */
export async function signUp(userInfo) {
    try {
        const {
            username,
            password,
            email,
            phone_number
        } = userInfo;

        let userConfiger = {
            username,
            password
        };

        let attributes = {};
        if (!!email) {
            attributes = {
                email
            };
        }
        if (!!phone_number) {
            attributes = {
                ...attributes,
                phone_number
            };
        }
        userConfiger = {...userConfiger, attributes };
        return await Auth.signUp(userConfiger);
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * サインアップ再送
 * @param {*} username ユーザ名
 */
export async function resendSignUp(username) {
    try {
        await Auth.resendSignUp(username);
    } catch (err) {
        console.error('error:', err);
    }
}


/**
 * サインアップ確認
 * @param {string} username ユーザ名
 * @param {string} code 認証コード
 */
export async function confirmSignUp(username, code) {
    try {
        await Auth.confirmSignUp(username, code);
    } catch (err) {
        console.error('error', err);
    }
}

/**
 *  サインイン
 * @param {string} username ユーザ名
 * @param {string} password パスワード
 * @returns ユーザ情報
 */
export async function signIn(username, password) {
    try {
        return await Auth.signIn(username, password);
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * サインアウト
 */
export async function signOut() {
    try {
        return await Auth.signOut();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * グルバールサインアウト
 */
export async function globalSignOut() {
    try {
        await Auth.signOut({ global: true });
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * パスワード変更
 * @param {object} cognitoUser cognitoユーザ
 * @param {string} oldPassword 旧パスワード
 * @param {string} newPassword 新パスワード
 * @returns 変更結果
 */
export async function changePassword(cognitoUser, oldPassword, newPassword) {
    try {
        return await Auth.changePassword(cognitoUser, oldPassword, newPassword);
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * パースワードを忘れる
 * @param {string} username ユーザ名
 * @returns パスワードを忘れる結果
 */
export async function forgotPassword(username) {
    try {
        return await Auth.forgotPassword(username);
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * パスワード忘れサブミット
 * @param {string} username ユーザ名
 * @param {string} code 認証コード
 * @param {string} password パスワード
 * @returns 結果
 */
export async function forgotPasswordSubmit(username, code, password) {
    try {
        return await Auth.forgotPasswordSubmit(username, code, password);
    } catch (err) {
        console.error('error:', err);
    }
}


/**
 * 新パースワードを完了
 * @param {object} cognitoUser cognitoユーザ
 * @param {string} password パスワード
 * @param {string} requiredAttributes 必須属性
 * @returns 結果
 */
export async function completeNewPassword(cognitoUser, password, requiredAttributes) {
    try {
        return await Auth.completeNewPassword(cognitoUser, password, requiredAttributes);
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * 現在セッションを取得
 * @returns 現在セッション
 */
export async function currentSession() {
    try {
        return await Auth.currentSession();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * 現在ユーザ認証情報を取得
 * @returns 現在ユーザ認証情報
 */
export async function currentAuthenticatedUser() {
    try {
        return await Auth.currentAuthenticatedUser();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * 現在資格情報取得
 * @returns 現在情報資格
 */
export async function currentCredentials() {
    try {
        return await Auth.currentCredentials();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * 現在ユーザ資格情報取得
 * @returns 現在ユーザ資格情報
 */
export async function currentUserCredentials() {
    try {
        return await Auth.currentUserCredentials();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * 現在ユーザ情報取得
 * @returns 現在ユーザ情報
 */
export async function currentUserInfo() {
    try {
        return await Auth.currentUserInfo();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * 現在ユーザプールユーザ取得
 * @returns 現在ユーザプールユーザ
 */
export async function currentUserPoolUser() {
    try {
        return await Auth.currentUserPoolUser();
    } catch (err) {
        console.error('error:', err);
    }
}


/**
 * ユーザ属性取得
 * @returns ユーザ属性
 */
export async function userAttributes() {
    try {
        return await Auth.userAttributes();
    } catch (err) {
        console.error('error:', err);
    }
}

/**
 * ユーザセッション取得
 * @param {object} cognitoUser ユーザ
 * @returns ユーザセッション
 */
 export async function userSession(cognitoUser) {
    try {
        return await Auth.userSession(cognitoUser);
    } catch (err) {
        console.error('error:', err);
    }
}


参考