この記事はSORACOM LTE-M Button powerd by AWS Advent Calendar 2018 9日目の記事になります。
すみません。時間オーバーしてしまいました。
さて、
SORACOMさん年末恒例の、#ソラコムサンタ に、実のところ、初めてちゃんとしたお願いをしてみました。
経緯としては、
先日、2018.11.22 SORACOM Technology Camp 2018 ナイトイベントでLTをしました。
このLTのために、ひたすら押し続けたわけですが、
そういえば、1500に近づいても、特に通知があるわけでもない。。。
これは欲しいぞ。
と思って、お願いしたわけです。
とはいえ、APIを使えば実装できるものではある・・・と思いまして、Lambdaで実装してみました。
履歴の管理は、とりあえず、DynamoDBに製造番号(serialNumber)をキーに保存しています。
直近の情報が知りたいので、保持し続ける必要はないと思って、DynamoDBにTTLを指定して勝手に消えるようにしています。
ほんとは、最近発表になったAmazon QLDB使えるんじゃないかなーとか思って、Previewを申し込んでみたのですが、
流石にまだ申請通りませんでした。
今の段階の動きとしては、以下
- ボタンクリック時に動作するLambda内でDynamoDBに回数や日時を格納
- Cloudwatch Eventsで動くことを想定したLambda内でSORACOM APIの/gadgetsでアカウントに紐づくボタンの一覧を取得
- serialNumberをキーに、DynamoDBから情報を取得し、閾値を超えていたらSlackに通知
今の段階では、以下の閾値を設定しています。
- 残りクリック数 1490以下(普通は100以下ですかなと)
- DynamoDBにあるItem数が3以上(1日未満想定で3回クリックしていたらクリックし過ぎかなーと(1日400回近くクリックしていた人ですがw))
※ BANSHEEだけ通知がないのは、Itemsの数が3で、残りクリック数が1491なので
ボタンによって、閾値を変えられるべきかと思うので、
ボタンのTagに閾値を持っても良いかなーと思うので、
今週中にその辺改修して、対応したソースをアップします。
なんか、ボタンでなんかしてみたって感じではないのですが、以上になります。