AWS Amplify ホスティングでNext.jsをホスティング

記事タイトルとURLをコピーする

こんにちは、屋根裏エンジニアこと 技術1課の折戸です。

屋根裏併設のバルコニーにもとうとう雪が降りました⛄
いよいよ暖房器具の購入を検討したほうがいいかもしれません。

今回は AWS Amplify ホスティングでNext.jsアプリケーションをホスティングしてみましたので、その手順と動作確認方法をご紹介します。

AWS Amplify ホスティングとは

aws.amazon.com

AWS Amplify ホスティングは、フルマネージド CI/CD およびホスティングサービスであり、ビジネスに合わせて拡張できます。また、高速かつ安全で信頼性の高い静的アプリケーションおよびサーバー側のレンダリングアプリケーションを提供します。React、Angular、Vue、Next.js、Gatsby、Hugo、Jekyll などの最新のウェブフレームワークをサポートします。

AWS Amplify ホスティングを使うことで、簡単に安全に最新のウェブフレームワークをホスティングでき、CI/CD環境も構築できます。

事前準備

  • npm

    • Next.jsアプリケーションを作成するため、npmコマンドとnpxコマンドを使用します
    • もしインストールされていない場合は、適宜以下のページより環境に応じたnpmをご準備してください nodejs.org
    • 今回はMacの端末で以下のnpmバージョンを利用しました
% npm --version
8.3.0
  • リポジトリ
    • ソースリポジトリはGitHubのリポジトリとします

      • アカウントをお持ちでない場合は、適宜準備してください github.com
    • GitHubリポジトリの認証方法はSSHとします

      • 設定されてない場合は、適宜設定してください docs.github.com

ローカル環境へNext.jsアプリケーションを作成

npxコマンドでNext.jsアプリケーションを作成

アプリケーションを作成したい任意のディレクトリで以下コマンドを実行します

% npx create-next-app@latest --ts
…
Ok to proceed? (y). → y をEnter
…
✔ What is your project named?  → Enter
…

完了すると、 my-app の名前のディレクトリが作成されます

npm build & start

作成されたディレクトリへ移動し、ビルドします
その後、ローカル環境で起動させます

% cd my-app/
% npm run build
% npm run start

起動したアプリケーションへアクセス

任意のブラウザより
http://localhost:3000
へアクセスします

f:id:swx-orito:20220106005556p:plain 上記のページが表示されれば成功です
これでローカル環境へアプリケーションを作成できました🎉

アプリケーションを停止

起動確認は完了したので、ローカル環境のアプリケーションは停止させておきます

Ctrl+c

Git 作業

GitHubにリポジトリを作成

GitHubアカウントへログインし、リポジトリを作成します

f:id:swx-orito:20220117081018p:plain 右上ペイン + -> New repository クリック

f:id:swx-orito:20220106001929p:plain

  • Repository name
    任意の名前(今回は amplify-hosting-next-app としました)

  • Private 選択

Create repository クリック

ローカル環境のアプリケーションをGitHubリポジトリへ Push

npxコマンドでNode.jsアプリケーションを作成すると初回のgit commitまで実行されている状態です

% git log
commit b423d743bf148697a260db67fa7a93406de40de3 (HEAD -> main)
Author: Ryota Orito <…@…>
Date:   Fri Jan 14 22:44:28 2022 +0900

    Initial commit from Create Next App

よって、git remote add コマンドから順に実行します

% git remote add origin git@github.com:【GitHubユーザー名】/【Repository name】.git
% git branch -M main
% git push -u origin main
Enter passphrase for key '/Users/user/.ssh/git': → GitHubのSSHキーパスワードを入力

【GitHubユーザー名】 【Repository name】 は適宜変更してください

AWS Amplify ホスティング 設定

f:id:swx-orito:20220114175156p:plain 検索カーソルより、Amplifyページへ遷移

f:id:swx-orito:20220105184316p:plain 使用を開始する クリック

f:id:swx-orito:20220105184447p:plain Amplify Hosting使用を開始する クリック

GitHubリポジトリととAmplifyを連携

f:id:swx-orito:20220105184806p:plain GitHub 選択
続行 クリック

f:id:swx-orito:20220105185954p:plain GitHubのページへリダイレクトされます
Authorize aws-amplify-console をクリックしてAmplifyコンソールからのアクセスを承認します
これにより、GitHubリポジトリとAmplifyが連携されます

f:id:swx-orito:20220106002727p:plain

  • 最近更新されたリポジトリ
    作成したリポジトリ名 を選択 次へ をクリック

必要なロールの設定

Amplifyコンソールがリソースへアクセスできるようにロールを設定します f:id:swx-orito:20220106002949p:plain 新しいロールを作成 クリック

f:id:swx-orito:20220106003100p:plain IAMロールのコンソールが別タブで開きます

f:id:swx-orito:20220106003142p:plain 必要なロールが選択された状態なので、次のステップ:アクセス権限 クリック

f:id:swx-orito:20220106003336p:plain 次のステップ:タグ クリック

f:id:swx-orito:20220106003431p:plain 次のステップ:確認 クリック

f:id:swx-orito:20220106003526p:plain

各項目入力されている事を確認
ロールの作成 クリック
ロールの作成が完了したらタブは閉じて、

元のタブへ戻ります f:id:swx-orito:20220106003712p:plain
更新ボタンをクリック
作成したロール名( amplifyconsole-backend-role )を選択
次へ クリック

デプロイ

f:id:swx-orito:20220117080814p:plain 保存してデプロイ クリック

デプロイフローが開始されます f:id:swx-orito:20220106004012p:plain プロビジョン -> ビルド -> デプロイ -> 検証 の順に実行されます  

私の環境では 検証 がチェック状態になるまで約5分程度時間がかかりました

f:id:swx-orito:20220106005416p:plain 検証がチェック状態になったら、
ドメイン に表示されているURLへアクセスします

すると、、、

ホスティングされたアプリケーションへアクセス

f:id:swx-orito:20220106005556p:plain ローカル環境で起動したアプリケーションと同じページが表示されればAmplify Hostingによるホスティング成功です🎉🎉

CI/CD 確認

ここまでの設定で、ソースコードをプッシュしたタイミングで自動的にアプリケーションがデプロイされる仕組みが構築されています
その動作確認をしていきます

index.tsx を編集

変更されたことを確認するために、トップページの表示文言を変更します

% vim pages/index.tsx

本稿では以下の Welcome to の部分を Hello へ変更しました

% git diff pages/index.tsx
       <main className={styles.main}>
         <h1 className={styles.title}>
-          Welcome to <a href="https://nextjs.org">Next.js!</a>
+          Hello <a href="https://nextjs.org">Next.js!</a>
         </h1>

再度 Push

改めて、GitHubリポジトリへプッシュします

% git add pages/index.tsx
% git commit -m "Edit text"
% git push

すると、再度デプロイフローが開始されます f:id:swx-orito:20220106160117p:plain 検証 がチェック状態になったら、
再度、ホスティングされたURLへアクセスします

f:id:swx-orito:20220106162139p:plain

Welcome to の部分が Hello に変わっていることが確認できれば、成功です🎉🎉🎉

最後に

簡単にNext.jsアプリケーションをホスティングできるうえに、ついでにCI/CD環境も構築できました。
せっかくなので、次回以降にこのNext.jsアプリケーションをカスタマイズして何かブログを書こうと思います。
それでは。

折戸 亮太(執筆記事の一覧)

2021年10月1日入社
クラウドインテグレーション部技術1課

屋根裏エンジニア