Ionic ReactでAWS Amplifyを利用する
環境情報 セットアップ セットアップはIonicから行います。Amplify CLIのamplify initはAmplifyまわりの初期設定のみ行いますので、基本的にFWのセットアップをしてから行います。 たまにrea […]
目次
環境情報
$ node -v
v12.14.1
$ amplify --v
4.41.2
$ ionic -v
6.12.3
セットアップ
セットアップはIonicから行います。Amplify CLIのamplify init
はAmplifyまわりの初期設定のみ行いますので、基本的にFWのセットアップをしてから行います。
$ ionic start ionicAmplify
? Framework: React
...あとは好きなように
たまにreact-scripts
のご機嫌を損ねているので、.env
ファイルを作っておきます。本番運用向けの場合は大人しく解決させる方向で努力する方が良いでしょうが、今は動けばそれでよいのです。
$ echo "SKIP_PREFLIGHT_CHECK=true" > .env
余談ですが、create-react-app
とほぼ等価なのでTypeScriptでcreate-react-app
したい場合はionic start
してからIonic系ライブラリをremoveした方が手っ取り早かったりします。
Amplify CLIでセットアップ
続いてAmplifyを設定します。
% amplify init
Note: It is recommended to run this command from the root of your app directory
? Enter a name for the project ionicamplifyexample
? 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 run-script build
? Start Command: npm run-script start
Using default provider awscloudformation
For more information on AWS Profiles, see:
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html
? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use lab
What javascript framework are you using
でionic
が出ますが、ドキュメントを見る限りIonic Angularくさいです。今回は安全策として、「Create React Appで作ったアプリ」として設定しました。
Amplify ConsoleでIonic Reactアプリを公開する
アプリを公開するために、ホスティング環境を追加します。
% amplify add hosting
? Select the plugin module to execute (Use arrow keys)
❯ Hosting with Amplify Console (Managed hosting with custom domains, Continuous deployment)
Amazon CloudFront and S3
今回はテストなので、Manual deployment
を選びます。
? Choose a type
Continuous deployment (Git-based deployments)
❯ Manual deployment
Learn more
amplify status
でHosting
が増えていればOKです。
% amplify status
Current Environment: dev
| Category | Resource name | Operation | Provider plugin |
| -------- | ----------------------------------- | --------- | ----------------- |
| Hosting | amplifyhosting | Create | awscloudformation |
amplify publish
で公開します。Manual deploymentの場合、amplify init
でセットしたビルドコマンドを実行してデプロイまでをローカルで実行してくれます。
$ amplify publish
...
The build folder is ready to be deployed.
You may serve it with a static server:
yarn global add serve
serve -s build
Find out more about deployment here:
bit.ly/CRA-deploy
✔ Zipping artifacts completed.
✔ Deployment complete!
https://devxxxxxx.amplifyapp.com
Auth機能を追加する
これだけだとあまり面白くないので、Auth機能も足してみます。
$ amplify add auth
$ amplify publish
Amplify SDKも追加しましょう。
yarn add aws-amplify @aws-amplify/ui-react
src/index.tsx
に以下の3行を追加します。これでIonic ReactからAWS Amplify SDKへのアクセスの準備ができました。
import Amplify from 'aws-amplify';
import awsconfig from './aws-exports';
Amplify.configure(awsconfig);
あとはsrc/App.tsx
を以下のように変更しましょう。これでアプリ全体にAuth機能が追加されます。
+import { withAuthenticator } from '@aws-amplify/ui-react';
-export default App;
+export default withAuthenticator(App);
ログイン操作が完了すると、Ionicのアプリ画面に戻ってきます。