背景
- AWS LambdaがRubyの対応したので、自分で作成して使ってみたかった
- Amazonがダッシュボタン事業から撤退してしまうので、その弔いとして
- ジョブカンで打刻するのが億劫だなと感じていた
構成
構成としては以下の図のような構成になっています。
参考にしたのは、このブログのリンクでpythomで自分が実現したいことを達成していたので、90%くらいはここから真似してきました。
こちらのブログだとpythonで書かれていたのですが、今回使いたかったのはRubyなので、Rubyで書きました。
手順
- Amazon IoT Enterprise をAmazonで購入
- 2500円します。
- 実験としてはいいけど、高いな。。。
AWS IoT エンタープライズボタン – IoT をシンプルに。
- Amazon IoT Enterpriseをセットアップ
- アプリをダウンロード
- バーコードを読み込んで、デバイスを登録する
- デバイスとWifiを繋げる
- Amazon IoTをセットアップ
- プロジェクトを作成
- デバイステンプレートを作成
- Labda のセットアップ
- 関数を作成
- SlackのAPI token とチャンネルのIDの獲得
- ここから獲得
- コードの記述
- slack-ruby-clientというgemを使う
- 以下のようなコードを書きます
require 'slack-ruby-client'
def hello(event:, context:)
Slack.configure do |config|
config.token = ENV['SLACK_API_TOKEN']
end
client = Slack::Web::Client.new
client.chat_command(channel: ENV['SLACK_CHANNEL'], command:'/jobcan_touch')
end
- 詳しいコードは以下のGithubから確認してください。
https://github.com/knsg16/slack-jobcan
- コードをAWS Lambdaにアップする
- zip形式のフォルダを作成
- 当該ファイルをLambdaにアップする
- Lambdaにテストイベントを作成して、テスト
- 完成
- お疲れ様でした!!
トラブルシューティング
- ステルスの社内WIFIにAmazon IoT Enterpriseを接続できない。。。
- rubyのversionを2.5.0にきっちり揃えないといけなかった。。。
- 普通にwebhookでは、コマンドをAPIで叩くことができなかった。かつ、非推奨のレガシートークンを使用しなければならなかった。。。
- lamdaにアップするためにファイルをzipにする時のファイル構成