AWS App Runner で Next.js をデプロイしてみよう
こんにちは。
米国時間2021年5月18日、AWSから AWS App Runner
という、なんかめちゃめちゃ凄そうなサービスがローンチされました。
普段、フロントエンドをメインに開発している者としてはインフラをよしなにやってくれるなんて、なんとありがたいのでしょうか 😉
AWS App Runner
AWS App Runner は、コンテナ化されたウェブアプリケーションや API を開発者が簡単かつ迅速にデプロイできるフルマネージド型サービスです。大規模に、しかも事前のインフラ経験を必要とせずにデプロイすることができます。ソースコードからでも、コンテナイメージからでも始められます。App Runner がウェブアプリケーションを自動的にビルドおよびデプロイし、暗号化しつつトラフィックのロードバランスを実行します。また App Runner は、トラフィックのニーズに応じて自動的にスケールアップまたはスケールダウンします。App Runner を使用すれば、サーバーやスケーリングについて煩わされることもなく、アプリケーションに集中できる時間が増えます。
引用: https://aws.amazon.com/jp/apprunner/?nc1=h_ls
AWS公式サイトでも紹介されているように、AWS App Runner はコンテナおよびソースコードから用意にデプロイできサービスを始められる特徴があります。
フロントエンドの開発をしている筆者にとって、GUIからリソースを選択し、ボタンをポチればデプロイでき、トラフィックが増えたら自動的にスケーリングし、SSL通信までしれくれるありがたいサービスです。
リリース当初は英語版でしたが、現在では日本語に翻訳されていますね。
ユースケース
- フロントエンドとバックエンドのウェブアプリケーション
- マイクロサービスと API
- 迅速な本番デプロイ
はじめる
Amazon ECR パブリックリポジトリのイメージをデプロイする
それでは、早速 AWS App Runner を使ってみたいと思います!
上記は2通りのデプロイ方法があると述べましたが、まずは、パブリックレジストリからデプロイしてみたいと思います。
「サービスの作成」ボタンを押下します。
デプロイ方法の選択
リポジトリタイプ「コンテナレジストリ」を選択、プロバイダーは「Amazon ECR パブリック」を選択します。コンテナイメージの URI はこちらを参照すると使用できるイメージがリストで表示されると思います。
今回は nginx
を使用したいと思いますので、こちらを選んでみます。そうすると、URI が記載されていますのでこちらをコピって貼り付けます。
public.ecr.aws/nginx/nginx:latest
デプロイトリガーは新しいプッシュされる度に自動的にデプロイすることができますが、今回はひとまず手動で問題ないかと思います。
サービスを設定
次に、各設定をしていきます。
特にこだわりが無ければデフォルトでいけます。サービス名
だけは必須なので適当なものを入力しておきます。ポート
は80
を設定します。Auto Scalling
やヘルスチェック
の設定もここで行います。
最後に設定したものの確認と、問題無ければ「作成とデプロイ」を押下して完了です。
デプロイが完了するまでには5分程時間がかかるようなので気長に待ちましょ〜。
デプロイ中は In progress
のステータスとなります。
完了すると下記のようにステータスがSucceeded
になります。
成功!
デフォルトドメイン
に記載されているURLにアクセスしてwelcomeページが表示されたら成功です!
ソースコードからデプロイする
次に、ソースコードからデプロイしてみたいと思います。
今回は React.js のフレームワークでおなじみ、Next.js をデプロイしてみます!
特に Next.js の説明はしませんが、気になる方はこちらからどうぞ。
上記の例ではコンテナレジストリを選択しましたが、今回はソースコードレジストリ
を選択します。
なお、Github に接続しておく必要があるのであらかじめ設定をしておきましょう。
Next.js は様々なテンプレートが公開されていますので、そちらをデプロイの対象としてみるのも良いかもしれないですね!
次に、構築の設定を行います。
今回は ここですべての設定を構成する
を選択します。
別途設定ファイルを使用したい場合は apprunner.yaml
を読み取れば良いようです。
ランタイムは Nodejs 12
、構築コマンドは yarn install && yarn build
を入力します。開始コマンドは yarn start
にします。こちらは各フレームワークの設定に従ってください。ポート
は3000
です。
(2023/02/08 記事更新時点)
本記事の初稿では Node.js 12
および Python 2.7
のみでしたが、それぞれ Node.js 16
と Python 3.1
が利用できるようになってます。
それ以外にも、 Go 1, Corretto 8,11 などにも対応しているみたいですね。
今後紹介する予定の Next.js 製のアプリケーションも Node.js 16
のランタイム環境にデプロイしているので、問題なく使えてそうです。
その後の作業は上記と同様にサービスを設定
で任意でサービス名を設定して、必要に応じて Auto Scaling やヘルスチェックの設定をして次に進みます。
最後の確認して問題が無ければ作成とデプロイ
を押下してデプロイしましょう!
デプロイまで完了したらデフォルトドメイン
にアクセスして画面が表示されたら完了です!!
削除
削除する際はアクションタブから削除
を選択すればおkです。
まとめ
以上のように簡単にデプロイすることができましたね!
通常であれば、各リソースを準備して構築する必要があるのですが、このサービスではその手間を省力できる点でかなりメリットがありそうです!
始めたてのサービスやイベントの告知サイト、開発用など幅広いシーンで利用できそうです!
以上
Discussion