AWS App Runner でお手軽にアプリケーションを動かそう!

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

9月の空気って最高ですね!PE部 礒です。

今日は AWS App Runner (以下 App Runner ) で、Github リポジトリをソースとした Slack bot を稼働させてみます。
実行環境についてほとんど意識しなくて良く、10分ほどでできてしまいます。

App Runner とは?

コンテナ化したアプリケーションを簡単にデプロイできるマネージドサービスです。
コンテナイメージやソースコードをポチポチ指定すると、自動デプロイ機能とアプリ実行環境ができあがります。

メモリ容量は 2GB からの提供で、メモリ 2GB で常時稼働させると $12/月くらいになりそうです。
参考:https://aws.amazon.com/jp/apprunner/pricing/

*こぼれ話*
EC2 上で動いていた社内利用の Slack bot を、管理容易化のためこちらを検証しました。
類似サービスである render の無償プランでは、15 分アクセスがないとサーバがサスペンド状態になるとのことで採用を見送りました。
処理にリアルタイム性が不要な場合は render を利用されても良いと思います。

個人的には、Heroku Hobby プランのように軽いアプリケーションを動かせる512MBくらいのメモリも App Runner で設定できるようになったら嬉しいです。


ではやっていきましょう!

Step 1. Slack App の作成

今回は、Bolt という Slack 公式の Node.js フレームワークを使います。
Boltガイド の「アプリを作成する」「トークンとアプリのインストール」を実施します。 以下2つの値を控えておきましょう。

  • Bot User OAuth Access Token (OAuth & Permissions ページで確認)
  • Signing Secret (Basic Information ページで確認)

Step 2. ローカルプロジェクトの作成

 1. GitHubで無料プライベートリポジトリを設定する方法 を参考に、空の Github リポジトリを作成します。
 2. 自分のローカル環境にリポジトリを clone したのち、サンプルコード をコピーしてapp.jsとして保存します。

$ git clone myApp
$ cd myApp
$ vi app.js

 3. ファイル追加を push します。

$ git add app.js
$ git commit -m 'test bolt project'
$ git push origin main

Step 3. App Runner サービスの作成

  1. AWSコンソールで AWS App Runner の画面を開き、「サービスの作成」をクリックします。

  2. ソースで「ソースコードレポジトリ」を選択し、Github との接続を追加します。
    接続後リポジトリとブランチを指定したあと、手動/自動デプロイを選択します。

  3. 構築を設定します。
    ランタイム、コマンドはそれぞれこんな感じ
    (一般的には、構築コマンドは npm install コマンドで良いと思います)

    Boltのサンプルコードが3000ポートを利用するようになっているので、3000番ポートを利用するよう設定します。

  4. サービス設定します。
    サービス名前に加えて、控えておいた Bot User OAuth Access Token と Signing Secret を環境変数にセットします。
    →「作成とデプロイ」をクリック

  5. サービスのデフォルトドメインを取得 サービス作成中の画面に、デフォルトドメインが表示されています。
    このURLからサービスで実行されている Web アプリケーションにアクセスできます。このURLをクリップボードにコピーしましょう。

  6. Slack 側でリクエスト URL を設定 2箇所に設定します。
    まず Interactivity&shortcuts の Interactivity を On にして、Request URL欄に {デフォルトドメイン}/slack/events と入力します。
    次にEvent Subscriptionsで Enable Events を On にして、同様の URL を入力します。
    ★このとき、App Runner サービスが起動中のために Your URL did'nt respond. と表示された場合は、時間をおいて再チャレンジしましょう

できました

Slack の任意のチャンネルで「hello」と投稿すると、そのイベントを検知したbotが反応してくれました。

App Runnerでは、負荷に応じてリソースをスケーリングする AutoScaling 機能なども設定できます。
アプリケーションの簡単なデプロイにお役立てください!

おまけ

ソースコードを更新して push してみます。
このように差分を発生させます。

push 後に App Runner のサービスを開くと、「デプロイログ」の部分に行が追加されています。
このあと、5分ほどでデプロイは終了しました。

Slack で同じように検知させてみます。

変更が反映されました🎉

礒 瑞希

プロセスエンジニアリング部で社内業務の効率化をしています

ミッフィーが好きです