概要
PagerDutyのオンコール担当になっていることをうっかり忘れたことが何回かあったので、なにかよい方法ないかなと探してたら、「pd-oncall-chat-topic」というものがあったので早速試してみました。
仕組みはとてもシンプルでした。
- Lambdaが5分おきに動いてPagerDutyのAPIからオンコール担当を取得
- Slackのチャンネルにトピック登録
手順
手順はReadmeに記載の通りで特に詰まるところもなく設定できます。
SlackでBotを設定する
ここからBotを作成します。
https://my.slack.com/services/new/bot
トピック設定するチャンネルを右クリックして「リンクをコピー」します。
CDXXXXXXXの部分がSlackChannelIDになるのでメモしておきます。
https://example.slack.com/archives/CDXXXXXXX
チャンネルのインテグレーションから「アプリを追加する」を選択して、先ほどつくったbotを追加します。
PagerDutyのスケジュールIDを取得する
On-Call Scheduleから該当のスケジュールを選択しURLのPXXXXXXXX部分をメモする
https://example.pagerduty.com/schedules#PXXXXXXXX
PagerDutyのMyProfileからAPIトークンを発行する
「Create API UserToken」からトークンを発行します。
AWSのリソースを作成する
1 Makefileの修正
$ git clone git@github.com:PagerDuty/pd-oncall-chat-topic.git
$ cd pd-oncall-chat-topic
$ vim Makefile
-------------------------------
# STACKNAME_BASEを書き換える
STACKNAME_BASE=example-pagerduty-oncall-chat-topic
2 STACKNAME_BASEに指定した名前でS3バケットを作成する(example-pagerduty-oncall-chat-topic)
3 リソースの作成
$ make deploy
$ make put-pd-key
PagerDutyで作成したユーザートークンを指定
$ make put-slack-key
BotのAPIトークンを指定
DynamoDBに通知先の情報を登録する
動作確認
5分おきにLambdaが動き、チャンネルにトピックを設定してくれます。
うまく動かない場合はLambdaのログが出ていますので確認しましょう。