📝

AWS App Runnerで爆速を体験してみた

2021/08/02に公開

巷で何かと話題のApp Runnerをようやく触ってみました。
App Runnerについて詳しくは、
AWS App Runner のご紹介
をご覧ください。

ポイント

ざっくりとしたポイントは以下の点かと思います。
・ソースコード or コンテナイメージのみでOK
・CI/CDパイプラインの自動化
・ロードバランシング、Auto Scalingの自動化
・サーバー証明書管理不要
・現在はPython 3 or Node.js 12をサポート

動画

https://youtu.be/E_hbM7aIp38

準備

今回はNode.jsで超簡単なHello Worldアプリを作ったので、これで試してみます。

コード

サーバーを起動して、Hello Worldと表示するだけです。

index.js
const http = require("http");
const server = http.createServer();

server.on("request", function (req, res) {
  res.writeHead(200, { "Content-Type": "text/plain" });
  res.write("Hello World");
  res.end();
});

server.listen(8080);

また、package.jsonのscriptにstartコマンドでnode index.jsを追記しました。
これでnpm startしたときにindex.jsを実行します。
その他の設定はnpm initのデフォルト値です。

package.json
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node index.js"
  },

リポジトリ

今回はGitHubリポジトリにtestという適当なプライベートリポジトリを作成し、先ほどのコードをプッシュしておきました。

体験してみる

最低限の準備ができたので、App Runnerを使ってみます
まずはApp Runnerコンソールに移動します。

GitHubとの連携

サービスを作成します。

まずはGitHubとの連携を設定します。
「ソースコードリポジトリ」を選択し、「新規追加」をクリックします。

接続名を入力し、「別のアプリケーションをインストールする」をクリックします。

GitHubにリダイレクトするので、GitHub側にAWS Connector for GitHubをインストールします。

インストールするとApp Runnerのページにリダイレクトします。
GitHubアプリケーションに自動的に名前が入っているので、「次へ」をクリックします。

GitHubとの接続に成功すると、画面上部に「接続済み」のメッセージが表示されます。

連携するリポジトリ情報を選択します。

デプロイの設定はデフォルトでは「手動」ですが、今回はCI/CDパイプラインの自動化も体験したいので、「自動」を選択しました。

構築設定

続いて構築設定です。
コンソール上で設定するかapprunner.yamlファイルを使用するかを選択できるようですが、今回はコンソール上で設定します。
ランタイムはNodejs 12を選択しました。

構築コマンドはnpm i、開始コマンドはnpm start、ポートは8080に設定します。

サービスの設定

続いてサービスの設定です。
サービス名を入力します。
仮想 CPU とメモリや環境変数は特にいじりません。

その他の設定も今回はデフォルトのままとします。

確認とデプロイ

最後に確認画面で設定を確認して、「作成とデプロイ」をクリックします。

あとはApp Runnerが裏側でコードの取得やデプロイなどを自動的にやってくれるようなので、しばらく待ちます。
このタイミングで、httpsのデフォルトドメインが払い出されています。

5分程度でステータスが「Running」になりました。

「ログ」のタブからビルドやデプロイの結果も確認できます。

デフォルトドメインにアクセスすると、Hello Worldアプリが表示されました!
ソースコードだけ用意して、コンソールでポチポチするだけでできちゃいました!

コードの変更

最初のデプロイは完了したので、コードを以下のように一部変更してリポジトリにpushしてみます。

index.js
const http = require("http");
const server = http.createServer();

server.on("request", function (req, res) {
  res.writeHead(200, { "Content-Type": "text/plain" });
  res.write("Code Changed"); //変更箇所
  res.end();
});

server.listen(8080);

自動デプロイの設定を選択したので、pushしたら自動的にCI/CDパイプラインが動き出しました!

今回は2分ほどでデプロイが完了しました。

デプロイ内容も反映されています。

ログのダウンロードも可能

各種ログはコンソールからダウンロードすることもできます。
コンソールで確認するのが難しい量の場合はローカルで検索かけながら見ることもできますね。

メトリクスも確認可能

簡単なメトリクスはコンソール上で確認できるようです。

カスタムドメインも利用可能

デフォルトドメインからカスタムドメインを追加することも簡単にできそうです。

料金について

詳しくは公式ドキュメントをご覧ください。

  • プロビジョニングされたコンテナインスタンス
    0.007 USD/GB 時
    こちらはデプロイや一時停止の際に、メモリ容量に対して課金されるようです。
  • アクティブなコンテナインスタンス
    0.064 USD/vCPU 時*
    0.007 USD/GB 時*
    こちらはメモリとvCPUの両方に課金されるようです。

まとめ

今回はApp Runnerで爆速を体験してみました。
体感としては、Amplifyのバックエンド版といったかんじで、超便利でした!!
これからいろいろなサービスとの連携も強化されそうなので、楽しみに待つことにします。
爆速万歳!!

Discussion