ChatOps系で使い古されたネタです。
Slackには元々Github Integrationがあるんですが、 無料で利用してると1チームで使用できるIntegrationには限りがあるのと Integrationを別で流用したかったので、その練習もかねて PullRequestのOpen CloseのみをSlackに通知したくて、ServerlessFrameworkでコードを組みました。
アーキテクチャ
GithubからAPIGatewayのendpointに対してメッセージを投げて、 LambdaでメッセージをparseしてSlackにメッセージを投下するという感じです。
実際に作ったもの
実際にこんな感じで使えます。
作る上で困ったこと
GithubからLambdaにpayloadを持ってくる時にpayload={ "message" : "test messages"}
とJSONっぽいただの文字列が降ってくるんですが、ここをどうするかで少し悩んでました。結局、slice(8)
で最初の文字列をそぎ落としてJSON.parse
しました。
とりあえず、sliceするか正規表現でマッチかけてごにょごにょするかしか今のところは思いつかないですが、他に良い方法があったら誰か教えてくださいm(_ _)m
おわりに
APIGatewayやLambdaを結構使ってきましたが、そろそろDynamoDBとの連携もやってみたいなと思ったり。 CodeBuildで遊んだりもしてるのでそろそろ記事を投下しようと思います。 おしまい。