ロコガイド テックブログ

「地域のくらしを、かしこく、たのしく」する、株式会社ロコガイドの社員がいろいろな記事を書いています。

「地域のくらしを、かしこく、たのしく」する、株式会社ロコガイドの社員がいろいろな記事を書いています。

AWS App Runner を触ってみた

こんにちは。最近、個人的に AWS コンテナ設計・構築周りをコツコツ学習している前山です。

今年の8月に、Heroku の無料プランが終了することを発表されました。個人的には、Heroku には大変お世話になったのですが、Heroku の有料化にあたって、簡単に Web アプリケーションをデプロイできる AWS App Runner や Google Cloud Run を選択する機会も増えるかなと思い、今回は AWS App Runner を実際に触ってみて感じたことを書いていきます。

AWS App Runner とは

AWS App Runner とは、コンテナで構成される Web アプリケーションを簡単にデプロイできるサービスです。Auto Scaling やロードバランシング設定、証明書管理などが、自動で管理できます。

App Runner 上に Web アプリケーションをデプロイするには、ECR からコンテナイメージを取得するか GitHub リポジトリからソースコードを取得して、コンテナイメージをデプロイすることでデプロイできます。

以下は簡易構成図になります。

image

図1: ECR を利用する場合の簡易構成図

image

図2: GitHub リポジトリを利用する場合の簡易構成図

ECR からコンテナイメージを取得する場合は、ローカルで検証したコンテナイメージを使用することができます。

GitHub を利用する場合、App Runner が提供するランタイムから選択する必要があり、デプロイしたい Web アプリケーションの環境によっては使えない場合があります。

今回は、試しに簡単にデプロイを実施してみたいので、GitHub リポジトリに Next.js で作成したサンプルアプリを push して、App Runner を利用してデプロイを試してみたいと思います。

セットアップ

まず以下のコマンドを実行して、Next.js の新規プロジェクトを作成します。

$ yarn create next-app --typescript

プロジェクトを作成したら、GitHub リポジトリに push します。

image

App Runner のサービスを作成

次に AWS コンソールから App Runner のサービスを作成します。

image

次にソースの設定をおこないます。以下のように先ほど GitHub に作成したリポジトリを指定します。

image

次にビルドの設定をおこないます。以下のようにランタイムやコマンドの設定をおこないます。今回はコンソール上でおこないますが、 apprunner.yaml をリポジトリに追加して設定することもできます。

image

次にサービスの設定をおこないます。このステップでは、CPU やメモリ・環境変数・オートスケール・ヘルスチェック・タグ等を設定できます。

image

Auto Scaling

App Runner はデフォルトで Auto Scaling をサポートしているので、ニーズに合わせて設定します。

image

以下のようにカスタム設定を追加することもできます。

image

ヘルスチェック

App Runner では現在 TCP ベースのヘルスチェックのみをサポートしています。

image

デプロイ

最後に、設定内容を確認し、デプロイをしてみましょう。

image

デプロイが完了すると以下のような画面になります。

image

上記の画面にあるデフォルトドメインにアクセスしてみましょう。以下のように Next.js のデフォルト画面が表示されたら成功です。

image

感想

非常に簡単にデプロイできました。App Runner はインフラ周りをあまり意識せずに、Web アプリケーションを簡単かつ迅速に AWS 上で動かせるので、何かサクッとデプロイしたいケースのときに非常に良さそうですね。

つい先日、Ruby や Golang のランタイムもサポートされたみたいで、これまでよりも幅広い言語で利用できるようになりました。今後の動向も楽しみですね。

参考: AWS App Runner launches support for PHP, Go, .Net, and Ruby managed runtimes