Slackの個人活用テク - 通知チャンネルの古いメッセージを自動的に削除するスクリプトをAWS Lambdaで動かす

2019年の初投稿ですっ!
私は個人用Slackワークスペースに様々な通知を流しています。

  • Googleカレンダーの予定
  • ファイルバックアップ完了の通知
  • 動画エンコード結果の通知
  • CircleCIのビルド結果の通知
  • SharedBoxによるメール転送の通知

などなどです。

しかしながら、個人用の通知チャンネルの場合、
過去の通知情報を保存しておく必要はありません。
不要な通知情報が溜まりすぎて無料で検索できる1万メッセージの上限を
越えてしまうことのほうが不便だと思います。

ですので、通知チャンネルに投稿された過去のメッセージを
削除するLambdaファンクションを作成しました。

https://github.com/x-blood/xblood-aws-handson/tree/master/slack-delete-channel-historygithub.com

ポイントをピックアップします↓

Slack Appでトークンを発行して、APIを呼び出す

今回、レガシートークンは利用せず、Slack Appでトークンを発行しました。
下記の記事がよくまとめられています。 qiita.com

APIを利用したいだけでしたので、今回は「sandbox」という名前で
Slack Appを作成し、必要なPermission Scopeを付与しています。

API実行のために付与したPermission Scopeは下記の通りです

Lambdaの処理内容

やっていることはシンプルです。

  1. LambdaやCloudWatch eventsに設定されている変数を読み込む
  2. "channels.history"APIを利用して削除対象メッセージを取得する
  3. "chat.delete"APIを利用してメッセージを削除する
  4. "chat.postMessage"APIを利用して処理結果を通知する

処理結果の通知イメージ

ソースコード

Epoch Timeの取得処理

Slackのメッセージを取得する時に、Unixタイムスタンプで指定します。
Python3では、下記のようなコードで、Unixタイムスタンプ(Epoch Time)を取得できます↓

コード全貌

以上です!
2019年も良い年になりますように!🐗㊗️