AWS Amplifyを使ったVueアプリケーションへの認証追加
AWS Amplifyとは
AWS AmplifyはAmazonにより提供されているオープンソースのフレームワークであり、一緒にまたは単独で使用できるツールおよびサービスを含めています。 それらの ツールの一つとしての Amplify Authは使用すると、安全な認証をすばやく設定し、アプリケーションへのユーザーのアクセスを制御することができます。
Amplifyフレームワークは、主な認証プロバイダーとしてAmazon Cognitoを使用します。Amazon Cognitoは、ユーザー登録、認証、アカウント回復、およびその他の動作を処理する強いユーザーディレクトリサービスです。
AWSアカウントの作成
AWS Amplifyを使用するには、AWSアカウントを開設する必要があります。AWSアカウントを持っていない場合はここを見てアカウントを作成してください。
プロジェクトの作成
Vue CLIを使用してプロジェクトを作成しましょう。 まずは、システムにVueCLIをインストールする必要があります。 インストールしていない場合は、以下のコマンドでインストールできます。
npm install -g @vue/cli
インストール後、Vue CLIを利用してプロジェクトが作成できるようになりました。以下のコマンドを実行して新規プロジェクトを作成しましょう。
vue create vue-amplify-auth-tutorial
設定値の選択を求められるので、“Manually select features”→“babel”→“Router”→“Linter / Formatter”の順番で選択してください。
Vue CLIが完了した後、作成したディレクトリへ移動するためのコマンド、サーバーを起動するためのコマンドが表示されるので、それに従って行ってください。サーバーが起動されたら、localhost:8080
でブラウザを開くことができます。
Amplify CLIのインストールと設定
Amplify CLIは、アプリケーション用の各種AWSのクラウドサービスを構築するツールの一連です。まず、以下のコマンドを実行することでインストールできます。
npm install -g @aws-amplify/cli
つぎ、以下のコマンドを実行することでAmplifyを設定します。
amplify configure
上記のコマンドを実行したら、新しいブラウザウィンドウが開いて、AWSマネジメントコンソールへのログインを求められます。ログインした後、ターミナルへ戻って、Enterキーを押しましょう。
続いて、AWSリージョンの選択が求められるので、リージョンを選択してください。
あと、新しいIAMユーザー名を指定する必要があります。デフォルトの名前をそのままにしてEnterキーを押下できます。または、独自の名前を指定することもできます。今回は、auth-demoという名前を指定します。
Enterキーを押下しブラウザーに戻った後、以下の順序を行います。
Permissionsボタンを押下してください。
Tagsボタンを押下してください。
Reviewボタンを押下してください。
Create Userボタンを押下してください。
そのあと、ターミナルに戻って、Enterキーを押下してください。
作成したユーザーのaccessKeyIdを入力してEnterキーを押下してください。
作成したユーザーのsecretAcessKeyを入力してEnterキーを押下してください。
プロファイル名の入力を求められるので、デフォルト値をそのままにしてEnterキーを押下してください。
すべてが完了したら、新しいユーザーが設定できたことを示すメッセージがターミナルに表示されます。
認証サービスの作成
Vueアプリケーションのルートディレクトリから、以下のコマンドを実行してください。
amplify init
Vueアプリケーションに認証を追加する必要があるので、Vueアプリケーションのルートディレクトリで、以下のコマンドを実行してください。
amplify add auth
Amplifyの初期化時、アプリケーションの情報の入力を求められるので、それに従ってください。
プロジェクト名を入力してください。
バックエンド環境の名前を設定してください。
好きなエディターを選択してください。
Vueを利用するので、JavaScriptフレームワークを選択してください。
これがデフォルトとして設定しているので、Enterキーを押下することで次に進みます。
新しいAmplifyプロジェクトを初期化する時、以下のものが生成されます。
- バックエンドの定義を格納する、
amplify
というトップレベルディレクトリが生成されます。 - Amplifyを使って作成したサービスの設定の全てを格納するsrcディレクトリに、aws-exports.jsというファイルが生成されます。これによってAmplify Clientはバックエンドのサービスに関する必要な情報を取得できます。
サービスをデプロイするにはamplify
push
コマンドを実行してください。
Amplifyライブラリのインストール
VueアプリケーションにAmplifyをインストールする必要があります。以下のコマンドを実行してインストールできます。
npm install aws-amplify
アプリケーションの設定
VueアプリケーションにAmplifyを追加する必要があります。main.jsファイルを開き、最後のimportの下に以下のコードを追加します。
import Amplify from 'aws-amplify'; import awsconfig from './aws-exports'; Amplify.configure(awsconfig);
登録ページの作成
ユーザーが登録ボタンを押下すると登録メソッドを呼び出します。以下に、その登録メソッドの実装を示します。
async register() { try { await Auth.signUp({ username: this.email, password: this.password, }); alert('User successfully registered. Please login'); } catch (error) { alert(error.message); } },
このメソッドはインストールしておいたAWS AmplifyパッケージのAuthを利用します。以下のステートメントをスクリプトセクションの上部に追加します。
import { Auth } from 'aws-amplify';
では、アプリケーションを開いて、ユーザーを新規登録してみましょう。成功した場合はユーザーが登録できたという通知が届きます。
ログインページの作成
ログインメソッドを以下のように実装します。
async login() { try { await Auth.signIn(this.email, this.password); alert('Successfully logged in'); } catch (error) { alert(error.message); } },
これまで、アプリケーションを開いて、既に登録されているユーザーでログインできます。
ログアウトメソッドの追加
スクリプトセクションで、ログアウトメソッドを含まれるメソッドのオブジェクトを以下のように追加します。
methods: { async logout() { try { await Auth.signOut(); } catch (error) { alert(error.message); } }, },
これまで、AWS Amplifyを使ったVueアプリケーションへの認証追加の完了です。
Gitlabのソースコード
参照元
https://aws.amazon.com/amplify/
https://blog.thundra.io/how-to-build-an-application-in-minutes-with-aws-amplify