CloudWatch EventsのターゲットにCodeBuildのプロジェクトを指定できるようになりました

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

事業開発部の野村です。CloudWatch EventsのターゲットにCodebuildがサポートされたことが発表されました。

Amazon CloudWatch Events now Supports AWS CodeBuild as an Event Target

なので、今回は私が先日「LINE Notifyをnode.jsで利用する」で紹介したプロジェクトをCodeBuild上で動かすように設定し、CloudWatch EventsのScheduleで定期的に実行することを試しましたのでその方法をご紹介させていただきます。

今回は東京リージョン(ap-notheast-1)で作業しております。

CodeBuildプロジェクト作成

概ね以下の通りです↓

  • CodeBuildプロジェクト名入力
  • 「Source: What to build」では、先日の記事で紹介したGithubのpublicリポジトリを指定しています。(要Github認証)
  • buildイメージは「Use an image managed by AWS CodeBuild」から「Ubuntu」「Node.js」「7.0.0」を選択。
  • advanced settings内のEnvironment variablesで環境変数$LINE_TOKENを設定してます。
  • 今回Cache設定をあわせて指定してますが、必須ではないです。
    • (Cache設定しない場合は、後述のbuildspec.ymlのcacheも不要)
  • 残りの項目はデフォルトでそのまま指定。

Githubリポジトリのソースにbuildspec.yml追加

version: 0.2

phases:
  install:
    commands:
      - npm install --production
  build:
    commands:
      - node main.js

cache:
  paths:
    - './node_modules/**/*'

CloudWatch Eventsのrule設定

こちらも概ね以下の通り↓

  • EventSourceは、cronで1時間おきに設定
  • Targetsでは、「Add Target」ボタン押下後「CodeBuild project」を選択
  • CodeBuildのARN名を入力
    • ARN名はarn:aws:codebuild:<リージョン名>:<AWSアカウントID>:project/<CodeBuildプロジェクト名>
  • 残りの項目はデフォルトでそのまま指定。

  • CloudWatch Eventsのrule名を入力

実行確認

CloudWatch Eventsで設定した時間になったらCodeBuildが動き出します。 CodeBuildの管理コンソールから「Build History」を見ると、結果とログが確認できます。

前回実装したLINE Notifyの結果と同様、LINE上でも無事発言が確認できてます。

まとめ

今回は簡単なnodeアプリケーションを使ってCodeBuildとCloudWatch Eventsの動作確認を実施しました。CodeBuildを利用した定期的なビルドオペレーションの参考になれば幸いです。

それでは。