【とりあえずハンズオン】AWS AmplifyでReactやってみた

# はじめに

この記事では
AWS Amplify を利用して React を実行してみたハンズオン記事です。
ベストプラクティスや間違いがあれば
書き直していく予定です。

## AWS Amplify とは

ウェブアプリケーションを素早く構築してくれる AWS のサービス
数多くの言語がサポートされている。

> Amplify では、一般的なウェブフレームワーク (JavaScript、React、Angular、Vue、Next.js) や
> モバイルプラットフォーム (Android、iOS、React Native、Ionic、Flutter) がサポートされています。
> AWS Amplify で迅速な市場投入を実現してください。

https://aws.amazon.com/jp/amplify/

最近、SPA 化が流行り出したこともあって
脚光を浴びているサービスに見えなくもないので実際どんなもんか
今回はハンズオンしてみた。

## 結論

めっちゃ使いやすい！！

「嘘でしょ！？」ってくらい簡単にできてしまったのでハンズオンした記録を残しておきたい。

## 参考にしたページ

https://aws.amazon.com/jp/getting-started/hands-on/build-react-app-amplify-graphql/

[モジュール 1](https://aws.amazon.com/jp/getting-started/hands-on/build-react-app-amplify-graphql/module-one/?e=gs2020&p=build-a-react-app-intro)

[モジュール 2](https://aws.amazon.com/jp/getting-started/hands-on/build-react-app-amplify-graphql/module-two/?e=gs2020&p=build-a-react-app-intro)

## モジュール 1 をハンズオン

### React レポジトリを作成

AWS Amplify で利用するレポジトリを GitHub から取得する為
GitHub に push する用のアプリケーションを作成する。

```bash
create-react-app amplifyapp
```

ディレクトリをチェンジして
ローカルホストで動作確認を行う。

```bash
cd amplifyapp
yarn start
```

しばらくすると、ぬるぬる動く React おなじみの絵が表示される。

![amplify_end.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/287f8032-c16c-60ee-b970-d7e0e899bce3.jpeg)


### React レポジトリを GitHub に push

動作確認が終わったら一旦、アプリケーションを止める。

```bash
git init
git add .
git commit -m "initial commit"
git branch -M main
git remote add origin git@github.com:username/amplifyapp.git
git push -u origin main

```

※username には自分の GitHub アカウント ID を利用

### AWS Amplify 開く

GET STARTED をクリックするとスクロールが下に案内される。
![amplify_get._startJPG.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/be2db58f-3e47-97b9-f4ed-c793c4a8fb41.jpeg)

Develop と Deliver の 2 つがあるので「Host your web app」の「GET STARTED」をクリック

![amplify_develop.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/0dd7848a-1d68-2107-4640-7e15be855796.jpeg)

### Host your web app

ホストするアプリケーションを Github から取得する為
「GitHub」を選択

![amplify_host_webapp.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/46f65d01-8bbb-b1cc-b858-7fcb212fa76e.jpeg)

GitHub 認証済みだと以下のようになるが、まだ認証していない人は
ユーザ名とパスワードが聞かれ、アプリケーションを認証するかどうか聞かれます。

![amplify_branch_connect.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/bd7b663e-6675-c9e0-879e-046cfa818035.jpeg)

ホストするレポジトリ名とブランチ名を選択肢して「次へ」

### ビルド設定の構成

これはとりあえずデフォルトでヨシッ。

![amplify_build.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/c53f9cda-542f-5682-f3cd-f0f0a144bdca.jpeg)

迷わずに「次へ」

### 保存してデプロイ

保存してデプロイ
![amplify_deploy.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/f4ac42d4-75d9-b275-3396-e5eaefc9ec51.jpeg)

「保存してデプロイ」をクリックすると。。。

![amplify_build_success.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/62159407-6c9d-d910-888b-483a2d33f183.jpeg)

プロビジョニング、ビルド、デプロイ、検証というプロセスを踏んで
デプロイ作業が始まる。

デプロイが終わると Amplify が生成した URL から
作成したアプリケーションを実行できる。

![amplify_end.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/527543/257f2733-b942-fb1d-e872-c6d41e5f226f.jpeg)


### AWS Amplify の凄いところ

手軽さに尽きる。
お手元のアプリケーションをサッとデプロイすることで
あとは良しなにやってくれる。

そして、デプロイに成功したアプリ群はすべてのアプリから一覧で見ることができる。
今まで作ったアプリを容易に管理できるってわけ。

さらに、チョット人に見せる程度の用途なら
インフラストラクチャの構築がいらないのは凄い。
※厳密にいえば、AWS Amplify が良しなにやってくれてる。

GitHub との連携も効いているので CircleCI とも疎結合に連携できる。

何でもかんでも出来すぎて。。。出木杉君になったわ。

### でも、お高いんでしょ？

お値段はこちら
https://aws.amazon.com/jp/amplify/pricing/

2021/04/03(土) 現在では

> Amplify フレームワーク
> Amplify フレームワーク (ライブラリ、CLI、UI コンポーネント) を使用する場合は
> 基盤として使用する AWS のサービスに対してのみお支払いいただきます。
> Amplify フレームワークの使用には、追加料金は発生しません。

> 静的ウェブホスティング
> AWS Amplify コンソールでは、2 つの機能に対して料金が設定されています。
> ビルド & デプロイ、およびホスティングです。
> ビルド & デプロイ機能の場合、ビルド分あたりの料金は 0.01USD です。
> ホスティング機能の場合、対象の GB ごとの料金 0.01USD と保存された GB ごとの価格は 0.01USD です。

> AWS 無料利用枠を使用すると、無料で使い始めることができます。
> サインアップすると、新規の AWS 顧客はビルドとデプロイ機能で 1 か月あたり 1,000 ビルド分、
> **ホスティング機能で 1 か月あたり 1**5 GB の提供**と 1 か月あたり **5 GB のデータストレージを受け取ります。

つまりどういうことか

- Amplify フレームワーク とやらを利用すると料金が発生
- ビルドアンドデプロイするとビルド分だけ料金が発生
- 静的ウェブホスティングはGB分だけ料金が発生
- 無料利用枠ならイイ感じに施しを受けられる

おや？これはポートフォリオの公開にうってつけでは？

### まとめ

今回は AWS Amplify を使って React アプリケーションをデプロイしました。
使い方を変えればノーコードアプリケーションもデプロイできるんかなこれ。
だとしたら結構優れものだぞ。

## おわり