PowerShellでLambdaを実装しよう!~SlackのBotを実装してみた~

AWS運用自動化サービス「Cloud Automator」

技術4課のPowerShellおじさんこと、鎌田です。社内でPowerShellを実装できる人が増えてきたので、ちょっと焦りも感じつつ。

先のブログで、LambdaをPowerShellで実装しデプロイまでを解説しました。
せっかくLambdaをPowerShellで実装できる準備をしたので、SlackのBotを実装してみることにしました。

PowerShellがSlackに投稿するための準備

Slackに対してPowerShellが投稿するためには、Slack側でIncoming WebHooksのURLの用意が必要です。

SlackのWorkSpaces名をクリックし、メニューから「Customize Slack」をクリック。

左のメニューから「Configure apps」をクリック。

左のメニューから「Custom Ontegraions」をクリックし、Incomming WebHooks」をクリック。

「Add Configuration」をクリック。

ポストするチャンネルを聞かれるので、チャンネルを選びましょう。チャンネルを選んだら、「Add Incoming WebHooks integration」をクリック

Webhook用のURLが生成されます。Webhook URLをコピーして、後ほどのコードに埋め込みます。

ここまで出来たら、準備完了です。

実際に実装してみた

「もう定時だよ、帰らないの?」と通知してくれるBotのコードはこんな感じです。

IncommingWebHookに対してJsonでパラメタを渡しますが、渡すパラメタを配列で作って、PowerShellからInvokeでURLをリクエストする時に、ConvertoTo-JsonでJsonに変換をかけています。
PowerShellではそのまま日本語をJSONで送ってはエラーになるため、変換処理を挟んでいます。
少し処理を変えることで、botを改変できるので、投稿するテキストやユーザー名などは、色々と調整してみてください!

実際にPowerShellを実行してみた

Lambdaでデプロイ後、実際に起動してみると、以下のようにSlackへ投稿されます。

意外と簡単に作れますね。

終わりに

SlackBotをPowerShellで実装したものをご紹介しました。
PowerShellでもサーバーレスできます、自信をもって「サーバーレスやってる」と言いましょう。

AWS運用自動化サービス「Cloud Automator」