🍣
Amplify(with Cognito) + React の始め方
初めに
Amplify(with Cognito) + React を作成した際に、詰まったので手順としてまとめておく。
事前準備
- 以下を参考にnode.jsをインストール
https://qiita.com/ryome/items/eec08b28aff294e8c3d6 - amplifyをインストール
$ npm install -g @aws-amplify/cli
- amplifyがインストールされていることを確認
$ amplify -v
- amplifyの認証情報を設定
$ amplify configure
手順
- React環境の構築
$ npx create-react-app myapp
- myappという名前のフォルダが作成される
- myappのフォルダ配下に移動
$ cd myapp
- Amplifyをセットアップする(以下を設定)
$ amplify init
? Initialize the project with the above configuration? No
? Enter a name for the environment dev
? Choose your default editor: Visual Studio Code
√ Choose the type of app that you're building · javascript
Please tell us about your project
? What javascript framework are you using react
? Source Directory Path: src
? Distribution Directory Path: build
? Build Command: npm.cmd run-script build
? Start Command: npm.cmd run-script start
Using default provider awscloudformation
? Select the authentication method you want to use: AWS profile
5.認証機能を追加(以下を設定)
$ 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.
- AWSリソース(auth関連)をデプロイ
$ amplify push
-
aws-amplify
とaws-amplify/ui-react
のライブラリをnode_modules
フォルダにインストール
$ npm install aws-amplify @aws-amplify/ui-react
- src/App.js に以下をコピペ
App.js
import { Amplify } from 'aws-amplify';
import { withAuthenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';
import config from './amplifyconfiguration.json';
Amplify.configure(config);
function App({ signOut, user }) {
return (
<>
<h1>Hello {user.username}</h1>
<button onClick={signOut}>Sign out</button>
</>
);
}
export default withAuthenticator(App);
- 実行してみると、自動でブラウザが開く
$ npm start
- 以下の認証画面が表示された
- アカウントを新しく作成
- メールの確認コードを入力し、認証
- アクセスすることができた
Discussion