コンテナだけじゃない。AWS App RunnerでWebアプリをソースコードから簡単デプロイ

コンテナだけじゃない。AWS App RunnerでWebアプリをソースコードから簡単デプロイ

AWS App Runnerを使って、ソースコードからNode.jsのWebアプリを簡単デプロイしてみました。コンテナ化不要です。
Clock Icon2021.05.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

オペレーション部の加藤(早)です。

当ブログDevelopersIOにもすでに何件かブログが上がっていますが、
Webアプリケーションを簡単にデプロイできる新サービス AWS App Runner がローンチされましたね!

App Runnerではコンテナイメージを用意することなく、GitHubに置いてあるソースコードも直接デプロイできるようなので試してみました。 感動レベルに簡単操作だったのでよかったらやってみてください。

アプリケーション

GitHubにリポジトリを作成します(今回のサンプルはこちら)
極めてシンプルなexpressのWebアプリを用意しました。


const express = require('express')
const app = express()
 
app.get('/', function (req, res) {
  res.send('Hello App Runner!!')
})
 
app.listen(80)

AWS App Runnerの設定

  • App Runnerのトップページから、「サービスの作成」を選択します。

GitHub接続の作成

  • 以下の画面になります。
    • 今回は「ソースコードリポジトリ」を選択します。
    • GitHubアカウントに「AWS Connector for GitHub」というアプリをインストールするために、「新規接続」をクリックします。

  • 小さな別ウィンドウが開きます。
    • 初めての場合は任意の接続名を作成し、「別のアプリケーションをインストールする」を選択します。

  • GitHub側の画面に転送されます。
    • GitHub側でアプリに権限を渡すリポジトリを選択し(今回はAll repositories)、Install をクリックします。

  • App RunnerのGitHub接続作成画面に戻るので、作成した接続を選択して「次へ」をクリックします。

ソース設定

  • App Runnerの設定に戻ります。
    • "ソース"で先ほど作成したGitHub接続を設定し、リポジトリとブランチを選択します。
    • "デプロイ設定"で「自動」を選択すると、対象ブランチにコードがpushされた際自動的にデプロイが動くようになります。楽ちん。

ビルド・デプロイの設定

  • ソースリポジトリに設定ファイル(apprunner.yaml)を置くやり方もありますが、今回はGUI上で設定をします。
    • ランタイム、ビルドコマンド、アプリケーションの開始コマンド、ポートを入力します。
    • ランタイムは現在 Python3, Nodejs12 の2択です。

サービスの設定

  • サービスのインフラに関する設定を入れます。
    • 今回は最小構成にしました。
    • AutoScaling, ヘルスチェック、セキュリティ(IAMロールとKMS)、タグに関する設定は今回はデフォルトにします。

最終確認

  • 最後にここまでの入力項目を確認して、「作成とデプロイ」をクリックすればOKです。

  • デプロイが終わると、コンソールでURLが確認できます。

動作確認

  • デプロイされました!

自動デプロイ

  • ソースコードをpushすると、新しいコードが自動デプロイされていました。

const express = require('express')
const app = express()
 
app.get('/', function (req, res) {
  res.send('自動デプロイだよ!!')
})
 
app.listen(80)

まとめ

興奮のあまり画像がジャギジャギになってしまいました。お見苦しくてすみません。

ほとんどソースコードを用意するだけでWebアプリがデプロイができるすごいサービスです。
個人的には、デフォルトでデプロイログやアプリケーションログ、メトリクスが取得されている点も素晴らしいと思いました。よかったら試してみてくださいね!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.