selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

slackからAWS Lambdaを起動するために、Outgoing WebHooksではなくて Slash commandを使った理由

後で勉強会等で発表するための、自分用メモ。

TL;DR

  • Outgoing WebHooks は private channelでは使うことが出来ない
  • slash commandは private channel でも利用可能
  • private channel でも利用されることを考慮して slackからAPI Gatewayへの連携に slash command を採用した

やりたいこと

  • slack上でURLを入力したら botが起動する
  • botは入力されたURLについて、パフォーマンス観点で修正できるところを教えてくれる
  • botは誰でも利用することが出来る

やったこと

https://dev.classmethod.jp/cloud/aws/slack-integration-blueprint-for-aws-lambda/ 基本的に、class method さんのこのブログを見ながら手を動かした。 ここで、Outgoing WebHooksではなくて、Slash commandを使っている理由を諸々考えたので、その内容をメモった。

構成

SlashCommand(slack) => API Gateway => lambda => slack

slash commandを採用した理由

 slackから lambdaを起動するには、Outgoing WebHooksと、slash commandの2つの方法がある。Outgoing Webhookは、特定のchannelでの発言内容に、特定の語句が含まれていたときに、任意のURLにPOSTリクエストを飛ばすことが出来る。slash commandは、/remind などの、slack上で実行できる slash のコマンドを追加できる機能だ。指定した slash commandが実行されたときに、任意のURLにGET/POSTリクエストを実行することが出来る。slash コマンドでの実行は、他のユーザーにはコマンドが見えない。それは実行することが共有・教育につながるという chatopsの考え方からすると、少しばかりデメリットである。

 しかしながら、今回は slash commandを slack から Lambdaを起動するための interfaceとして利用した。その理由は、Outgoing Webhookは privateなchannelでは起動できないためである。実行コマンドを見えるようにするのは、botからslackに通知する内容で担保することにする。

参考資料

Outgoing Webhooks | Slack

The outgoing webhook integration is only available in public channels. If you would like to get data out of private groups and DMs in real-time, try a slash command.

Slash Commands | Slack