Slackこんにちは、AWS担当のwakです。Lambdaで実装するサンプルを作ります。Commandsは、言ってみればユーザーの操作に応じてWebサーバーにリクエストを送り、ごく短時間で終わる処理をしてもらってその結果を受け取るものです。少なければ1日数回、どんなに多くても1日に数百回のこのコマンドのためだけにWebサーバーを用意して24時間待ち受けを行うなんて無駄なことはしたくありません。Lambdaならこのような目的にぴったりで、EC2のt1.microインスタンスなどよりもずっと安価です。何か作ろう弊社ではCloudWatchで何かアラートが出たとき・復帰したときにそれぞれSlackへ通知する仕組みが既に稼働中です。境界値付近で値が行ったり来たりすると通知が何度も飛んできて、「今出ている警告は何か」を見失うことがありました。Lambdaで作ることにします。Commandを新規に作成し、トークンを取得します。URLは未定なので未設定のまま置いておきます。IAMロール作成まずLambdaを実行するためのロールを作ります(既にあるなら不要です)。今回はCloudWatchに対する権限(読み取り専用で十分)が必要です。Slackから渡されるトークンはコードに埋め込むことにしましたが、もしDynamoDBで管理するのであればDynamoDBの読み取り権限も必要になります。CloudWatchのメトリクスを取得して返すだけの簡単なコードになりました。response_typeにin_channelを入れておくと、コマンドの実行結果を他のユーザーも見ることができるようになります。8行目にあるxxxxxxxxxxxxxxxxxxxxxxxxはSlackから与えられたトークンで置き換えます。`状態がALARMの監視項目はありません。`状態がALARMの監視項目が${data.MetricAlarms.length}件あります。});}念のためパラメーターのtokenだけセットしてテスト実行してみましょう。どちらかの結果が戻ってくれば成功です。APIを選んで新規APIを作ります。名前は変えられないので慎重に行きましょう。要するにURL設計です。Methodを選んでGETやPOSTを作ります。それぞれのメソッドごとに別々の処理が作れます。今回はGETでSlackに呼び出してもらうことにします。functionを選択します。GatewayとLambdaをどのように繋げるかを設定していきます。2→3の間には何らかの変換ルールが必要です(後者ではもともとJSONをそのまま返すというルールが設定されています)。Request設定API呼び出し元から与えられる想定のパラメーターを設定します。数が多いのですがぽちぽち入力します(今回はtokenだけでも構いません)。functionに渡すかを決めます。"$context.apiId"}テスト実行するテスト実行しましょう。tokenにトークンを入力してテストボタンを押します。先ほどLambdaを実行したときと同様の結果が返ってくれば成功です。デプロイするこれで動作に問題ないことが確認できたのでデプロイします。これでURLが決まります。Slackの設定Slackに戻り、必要に応じて項目の設定を行います。Gatewayで決まったもの。Name(BOTが発言するときの名前。Icon(BOTが発言するときのアイコン。listにチェックを入れるとオートコンプリートが使えるようになりますこれでもう終わりです。ブラウザからでもスマホからでも、コマンドを実行するだけでAWSのAPIが実行されて結果が得られるようになりました。Commandが、それもサーバーレスで実現できました。ややこしいことはAWSが引き受けてくれるので、サーバーが落ちたらどうしようといったことを考える必要がありません。お手軽で効果がある、コストパフォーマンスの高いコードはどんどん書いていきたいものですね。グラフ表示こんにちは、久しぶりに和朗です。APIを呼び出すこんにちは、AWS担当のwakです。Chromeアプリ[Postman]の使い方メモ井上です。API作成時にとても便利なPostman。LambdaでWebサイトの死活監視を行ってSlackに結果を流すこんにちは、AWS担当のwakです。Lambdaの話をし...2015-11-09StatusCakeでサイト監視してSlackへ通知するこんにちは。(1)はてなブログをはじめよう!jabe20さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。