C#とかVue.jsとかAWSとか興味のあることちまちまやってます。CodeBuildのビルドステータスをCloudWatchと使って監視しイベントを検知したらLambdaを起動し自身のLINEへビルド結果を通知します。トークに返信して自動で再ビルド実行とかは組み込んでません。純粋にビルド結果の通知です。世間じゃSlackに通知とかなんでしょうがこちとらぼっちの個人開発なんでSlackなんぞ使ってません。LINEに通知が来てくれたほうが気付きやすいんです。赤枠部分を実装します。処理的にはざっくり以下の流れです。CodeBuildのビルドプロジェクトが作成済みであることを前提としています。Developersへの登録を含め使用するのは初めてです。作業手順のを軽く整理します。Developersへ登録プロバイダーの作成&チャネルの作成Lambda関数の作成(ローカル)AWSでの作業Lambda関数の作成ローカルで作成したものをLambdaにアップCloudWatchでイベントの設定テスト上記の流れで作業します。Developersからユーザ登録してください。Developers登録が済めばガイドに従ってプロバイダーの作成・チャネルの作成を実施してください。APIを選択すること。最初はアクセストークが発行されていないので「メッセージ送受信設定」の項目にあるアクセストークンの再発行を押下してアクセストークンを入手します。赤枠内のチャネルシークレット・アクセストークン(ロングターム)・ユーザIDをこのあとのLambda関数で使用します。Lambda関数の作成まず、ローカルでLambda関数を作成しファイルをZipに固めてLambdaにアップロードします。基本的なコードはSDKのドキュメントで丁寧に解説されているので簡単です。任意の作業ディレクトリを用意してください。カレントディレクトリは作業ディレクトリとします。BOTのNode.js向けSDKをインストールします。Worldも紹介しておきます。不要でしたら読み飛ばしてください。Worldインストール完了後、任意のエディタでindex.jsを作成してください。コードを簡素にするためチュートリアル的な基本形を記載します。これはSDKのドキュメントに記載されているものをLambda向けに編集したものです。});};関数内の下記値は各自置き換えてください。ID(ページ最下部)以上が基本形です。Worldが通知されます。BOTを友達追加しておく必要があります。Worldで使用した関数をCodeBuildの結果通知用に編集します。//アクセストークン等を環境変数としています。//2通知用のメッセージ作成。//通知内容にはCloudWatchから渡されるeventの内容を出力します。});};簡単なものなので説明することもあまりありませんが補足的な感じで書いておきます。BOT用のクライアントを作成します。Worldでも記述しましたがアクセストークンなどの値は適宜置き換えてください。process.env.CHANNEL_SECRET});今回はLambdaで環境変数を登録し、その環境変数をコードに記載しています。(process.env.XXの部分)環境変数の登録については後述します。文字列結合でメッセージを作成します。CloudWatchで検知されるイベントは成功・失敗・停止の3種類です。後述しますが、このイベント種類はCloudWatchのイベント作成時に指定します。event.detail['build-status'];CloudWatchから渡されるイベントデータのjsonにハイフンが入っているので面倒な書き方をしています。作成したメッセージを載せてAPIを実行します。トークの送信先であるユーザIDについてもアクセストークンと同様に環境変数としてLambdaに登録したものを使用します。AWSコンソールからLambdaで関数の作成&アップロードAWSの管理コンソールからLambda関数を作成し、先程ローカルで作成した関数をアップロードします。Lambda関数の作成Lambdaのダッシュボードから関数を作成します。ランタイムはnode.jsを選択します。ローカルで作成した関数のアップロードAWSでLambda関数の作成完了後、ローカルで作成した関数をアップロードするためにZIPで固めます。対象はindex.jsとnode_modulesディレクトリです。(zipファイルの名前は展開されて消えるのでなんでもいいです)Lambda関数の管理画面から「関数コード(エディターが表示されている部分)」の「コードエントリタイプ」を.zipファイルをアップロードに変更します。すると、zipファイルがアップロード可能となるので先程固めたzipを選択してアップロードします。アップロードが完了するとzipが展開され作成した関数がエディタに表示されます。関数内で使用している下記3つの値をLambdaに環境変数として登録します。保存で保存することLambda関数のDesignerによるトリガーの追加についてLambda関数のトリガー設定については私の環境(IAMユーザ)では不要でした。後述するCloudWatchイベントを作成すると自動でトリガーが設定されます。上記までのLambda関数の設定が完了したらLambda関数を起動するためのイベントを設定します。startedでイベントを作成します。下記画像の通りイベントパターンを設定します。必要なものを選択してください。右側のターゲットで先程作成したLambda関数を指定します。その他の項目はデフォルトのままです。後のテストで使用するために「サンプルイベントの表示」を展開してサンプルテキストをコピーしてメモ帳にでも貼り付けておいてください。※これは作成完了後でもイベントの編集画面から確認できます。ここまで滞りなくすべてうまく行っていればCodeBuildを走らせると結果がLINEに通知されるはずです。バカスカCodeBuildを動かすのももったいないのでLambda関数のテストで本当に動くかテストします。Lambda関数のテスト先程コピーしたサンプルイベントのテキストをイベント毎に分割してLambdaのテストとして登録します。Lycheejam/linebot_cb登録したテストイベントを選択してテストを実行してください。するとラインに通知が来るはず!Lambda関数を一通りテストしたあと、私の場合は反映したいコミットもあったので実際にCodeBuildを動かしました。静的サイトジェネレータなのでほぼほぼコケることはありませんが1つLambda関数作っておけば他のビルドプロジェクトにも使えるので便利そうですね。DocSearchでの検索を有効にします。»プロフィールid:HM_Atlasチラ裏のメモ帳モノづくりが好き。技術で世の中(大袈裟)を便利にするのが好き。(1)月別アーカイブリンクTwitterGitHubSteam自滅しがちQiitaはてなブログをはじめよう!HM_Atlasさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。