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の処理内容
やっていることはシンプルです。
- LambdaやCloudWatch eventsに設定されている変数を読み込む
- "channels.history"APIを利用して削除対象メッセージを取得する
- "chat.delete"APIを利用してメッセージを削除する
- "chat.postMessage"APIを利用して処理結果を通知する
処理結果の通知イメージ
ソースコード
Epoch Timeの取得処理
Slackのメッセージを取得する時に、Unixタイムスタンプで指定します。
Python3では、下記のようなコードで、Unixタイムスタンプ(Epoch Time)を取得できます↓
コード全貌
以上です!
2019年も良い年になりますように!🐗㊗️