S_Pure's Blog

ITエンジニアの趣味ブログ

Amplifyを利用したReact Webアプリケーションのデプロイ

2020年06月25日

はじめに

GitHubで管理しているWebアプリをAWS上に簡単にデプロイしてみたいと思い、Amplifyでデプロイする事にしました。

Amplifyとは

セキュアでスケーラブルなモバイルアプリケーションやウェブアプリケーションを構築するための開発プラットフォームです。
ユーザーの認証、データとユーザーのメタデータのセキュアな保存、データへの選択的なアクセスの許可、機械学習の統合、アプリケーションのメトリクスの分析、サーバー側コードの実行するといった作業を容易にします。
Amplify は、バージョンコントロール、コードのテスト、実稼働環境へのデプロイといったモバイルアプリケーションの開発ワークフロー全体をカバーしています。 容易にスケーリングできます。
AmplifyのライブラリとCLIはオープンソースであり、カスタマイズや自分自身のプラグインの作成する事が可能です。

サンプルのReactAppを作成する

nodeのバージョン確認

まずは、nodeのバージョンを確認します。 下記のコマンドをターミナルで実行して、nodeがインストールされているかを確認してください。

nodeのバージョン確認
node -v
nodeのバージョン確認結果
v12.16.3

新しいReactAppを作成する

下記のコマンドでアプリケーションを作成します。

ReactAppの作成
npx create-react-app amplifytest

上記のコマンドの実行が完了したら、作成されたフォルダに移動します。

フォルダ移動コマンド
cd amplifytest

フォルダに移動したらアプリをスタートしてみます。

アプリ起動コマンド
npm start

GitHubにリポジトリを作成する

GitHubのページに移動し、新たにリポジトリを作成します。 名前の欄にamplifytestと入力し、Create repositoryをクリックします。

image.png

ReactAppをGitにプッシュ

先ほど作成したReactAppをGitのリポジトリにプッシュします。

作成した新たなGitリポジトリのページに表示されているコマンドを参考に、Gitの設定を行います。 image.png

ターミナルでReactAppがあるフォルダを開いて、下記のコマンドを実行します。

Gitの初期設定コマンド
echo "# amplifytest" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/{!!!ここは個人のアカウント名になります!!!!}/amplifytest.git
git push -u origin master

上記のコマンドを実行し、GitHubのページを更新してみると、下記のように様々なファイルが追加されている事が確認できます。 image.png

ReactAppを変更してみる

別にやる必要無いのですが、デフォルトのページだと面白みが無いので、ページを変更してみようと思います。

先ほどReactAppを作成したファルダ内のsrc/app.jsを編集していきます。

app.jsの内容
import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Amplifyを確認するために作成したアプリです!
        </p>
        <p>
          しっかりと動いてくれるかドキドキ!
        </p>
      </header>
    </div>
  );
}

export default App;

下記コマンドでGitに変更点をプッシュします。

変更点のプッシュ
git add src/App.js
git commit -m "Modify App.js"
git push -u origin HEAD

デプロイ方法

Amplifyページを開く

AWSマネジメントコンソールでAmplifyと検索し、サービスのページを開きます。

image.png

開始ボタンを押す

Build scalable cloud-powered appsと記載されている方は、モバイルやWeb開発を簡素化するためのCLI(コマンドラインインターフェイス)とライブラリを提供してくれるサービスです。 image.png

Build, deploy, and host modern web appsと記載されている方は、Gitリポジトリを接続して、フロントとバックエンドを継続的にデプロイする事ができます。 グローバルなCDNでホストしてくれるので、可用性もバッチリです。

image.png 今回は、Build, deploy, and host modern web appsGET STARTEDをクリックします。

Gitリポジトリのサービス選択

今回はGitHubからデプロイしたいので、GitHubを選択して、Continueをクリックします。

image.png

GitHubとの連携の画面が表示されたら、Authorize aws-amplify-consoleをクリックします。 image.png

レジストリ・ブランチの選択

認証が完了したら、デプロイしたいリポジトリとブランチを選択します。

image.png

ビルド設定の構成

アプリの名前を入力します。 今回はデフォルトの設定を利用します。

image.png

確認

今まで設定してきた項目を確認し、保存してデプロイをクリックします。 image.png

上部にアプリの作成中が進行している旨が表示されます。 image.png

下記のように検証の部分にチェックが付けばデプロイが完了しています。

https://<branchname>.<appid>.amplifyapp.comにデプロイされています。 左下のリンクをクリックしてみましょう!

image.png

先ほど作成したReactAppにアクセスできるようになっています! image.png

コードの変更を自動的にデプロイする

ターミナルで自分のパソコンのReactAppのフォルダに移動します。

src/App.jsの内容を変更します。

App.jsの内容
import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Amplifyを確認するために作成したアプリです!
        </p>
        <p>
          しっかりと動いてくれました(^^)</p>
      </header>
    </div>
  );
}

export default App;

変更完了したら、GitHubのリポジトリへプッシュします。 ターミナルで以下のコマンドを実行してください。

変更点をGitへプッシュ
git add src/App.js
git commit -m "Change Comment"
git push -u origin HEAD

変更後のAmplifyの確認

Gitへ変更点をプッシュしたら、Amplifyの管理画面を更新してみましょう。

下記のように、自動的に、プロビジョンから実行され、ビルドされています。 image.png

検証まで終了したら、再度ページを開いてみましょう!

image.png

内容が更新されました!

後始末

Amplifyの管理画面の右上に表示されている、アクションから、アプリの削除を選択します。

image.png

「削除する場合は、deleteと入力してください」と言われるので、deleteと入力して、deleteボタンをクリックします。

下の図のように削除された旨が表示されたら正常に削除されています。 image.png

デプロイの確認は以上になります。

まとめ

とても簡単にReact Appをデプロイする事ができました。
こんなに簡単にデプロイできるなら、Webアプリを作るのが楽しくなりそうです。

すぐに削除する事ができるので、一旦、試しに作成してみるのも簡単にできると感じました。
今度は、しっかりしたReact Appのデプロイにチャレンジしてみようと思います。


Written by Ryota Saito
関西出身 1993年生まれ
正社員プログラマとして勤務しながら様々な技術について勉強中
気になった技術情報を中心に発信しています。
like Guitar🎸 RADWIMPS🎧 Apple🍎
立命理工卒 好奇心旺盛

Twitterのフォローよろしくお願いします。

© 2020 Ryota Saito All Rights Reserved.