2017年1月30日月曜日

Slack から Heroku 上でスリープしてしまったアプリを起こすテクニック

概要

Heroku の無料枠を使っている場合デプロイしたアプリに 30 分アクセスがないとアプリはスリープしてしまいます
スリープした状態でアクセスが来るとアプリは起動するのですが、いちいちブラウザなどで URL にアクセスするのは面倒です
今回は、そんなスリープしてしまった Heroku アプリを Slack から起こす方法を紹介します

環境

  • Slack 2016/07/14 時点
  • Heroku 2016/07/14 時点

Slack の Slash Commands を作成する

Slash Commands は任意の URL に GET or POST のリクエストを送信することができる機能です
これを使って Heroku アプリを起こすようにしてみます

まず、Custom Integrations に Slash Commands を追加します
まだない場合は Apps Directory から検索して Slash Commands を追加してください

追加できたら Slash Commands を作成しましょう
作成の際のポイントは以下の通りです

  • Integration Settings の URL を Heroku 上にデプロイしたアプリに設定する

サンプルとしては以下の通りです
wackup_heroku_app_configration_sc.png

Method はデプロイした Heroku アプリに合わせて変更してください
Command は好きなコマンドを設定してください

要するに Slash Command を実行したときに Heroku アプリに起こす用のリクエストを送信するだけです

あとはお好みに合わせて「Customize Icon」や「Autocomplete help text」を設定してください

動作確認

では、作成した Slash Command で Heroku アプリを起こしてみましょう
wackup_heroku_app_ret.png

という感じでアプリのルートにアクセスしたときのレスポンスが返ってくれば OK です
( 今回のアプリがリクエスト情報をダンプするアプリだったのでトークンやらなんやらがいろいろで出てしまっていたのでモザイクにしました )

Heroku 側の起動がすぐには終わらなく Slash Command がタイムアウトした場合でもリクエストは Heroku 側に行っているので 2 回目のアクセスではちゃんとレスポンスが返ってくると思います

最後に

Slack の Slash Command を使ってアクセス Heroku のアプリを起こしてみました
まぁ要するにアクセスしているだけなのですが、いちいち URL を確認したりするのが面倒な場合にはいいかもしれません

特にこれが必要になるのは cron を使った Hubot かもしれません
Heroku 上でスリープしてしまった Hubot は cron も回りません
なので、アクセスする必要があるのですが Slash Command で簡単に起こせるようになっているとちょっと便利かもしれません

0 件のコメント:

コメントを投稿