Connpassの勉強会情報をSlack通知するツール(python)を作ってterraformでデプロイ自動化してみました。
ものはこちら → https://github.com/ishim0226/ConnpassToSlack
いくつかパラメータセットしてapplyするだけなので、数分でデプロイできます。
作った背景
普段、インフラエンジニアとして働いておりプログラミングすることがあまりないので、勉強してみたいと思ったのがきっかけです。
どうせならインフラ部分のスキルを掛け合わせたいと思い、クラウド上でインフラコード化を前提に考えた結果、このようなものを作ってみました。
おかしな箇所ありましたら、コメントいただけると幸いです。
ツールの特徴
ざっくり特徴をあげると、以下のようなものです。
- 新規追加されたイベントまたは、更新があったイベントのみ通知します。(通知済みイベントをDBで管理してます)
- 以下で通知するイベントをフィルターできます。
- キーワード(複数のOR指定が可能、※ANDや除外はできません)
- 開催場所(複数のOR指定が可能、※ANDや除外はできません)
- 一度、通知したイベントに更新があったときの通知有無(デフォルトは「通知しない」)
- 数分でデプロイできます。
- 低コストです。AWS利用料がかかりますが、おそらく数百円/月もいかないくらいです。
処理の概要
CloudwatchEventsでLambdaを定期実行し、取得したEventをDynamoDBへ流します。
その後、DynamoDBStreamにより実行されたLambdaにてSlack WebhookURLを叩き、Slackへ通知します。
※Slack WebhookURLの取得方法は SlackのWebhook URL取得手順 が参照になります。
アーキテクチャ図
実行までの流れ
※詳細は Readme を参照ください。
- Repository をCloneします。
- パラメータ(terraform/variables.tf)を編集します。
ここでフィルター条件や実行時間、Slack通知先などを設定します。 - terraform実行してデプロイ完了