Lambdaでスケジュール機能(cron)が使えるようになったことで、一段とサーバレスでbotを実現できるようになってきました。
http://aws.typepad.com/aws_japan/2015/10/aws-lambda-update-python-vpc-increased-function-duration-scheduling-and-more.html
前に作った物はこちら
LambdaでAppStoreのレビューを拾ってSlackに流し込む
AWS LambdaのSchedule Taskを使ってエゴサーチをslackに流し込む
今回は、OpsWorksでデプロイを実行した時の状況をSlackに通知してくれる物を作りました。
仕組みはもう使いまわしで、こんな感じでOpsWorksのデプロイ情報を見て、デプロイが始まったらSlackに通知し、デプロイが終わったもしくは失敗したら、Slackに通知してくれます。
Slackにはこんな感じで通知してくれます。
この仕組で問題点としてあるのが、AWS Lambdaは5分以下のスケジュールが指定できないということ。
http://docs.aws.amazon.com/ja_jp/lambda/latest/dg/getting-started-scheduled-events.html
毎分みたいなcronを書いてもエラーになってしまいます。
5分毎にチェックした場合に、5分の間にデプロイが開始して終わってしまうと、、このスクリプトの仕組み上、通知が来ない。
過去のデプロイIDをずっと保持すれば、完了した事を通知できるけど、どれぐらい保存するかというのと、いつ消すのかが課題として残る。
Lambdaのスケジュールタスクが1分にも対応してくれると嬉しいな。