slack投稿時にlambdaを実行させる。その後、投稿内容をS3に保存

slack投稿時にlambdaを実行させる。その後、投稿内容をS3に保存

1, lambda関数を作って、関数URLでWeb公開
APIゲートウェイ無しで出来るから楽!
https://XXXXXXXXXXXX.lambda-url.ap-northeast-1.on.aws/

2, slackアプリを作って、Event Subscriptionsを有効にし、Lambda 関数のエンドポイント URL を指定
https://api.slack.com/apps

VerifiedになればOK。チャレンジ・レスポンス処理は、最初のURL入力時だけで、後は不要。

チャレンジ(最初の検証)が失敗すると、以下のように表示されるので、lambda関数を作り直し
Request URL Your URL didn’t respond with the value of the challenge parameter.

読み取り権限も付与
Subscribe to events on behalf of usersの
Add Workspace Eventボタンを押して、message.channels(公開チャネルの投稿メッセージ)を追加。
このアプリをインストールしたワークスペースでの公開チャネルにメッセージ投稿されるたびに、lambdaがコールされるようになる。

3, 投稿内容を保存するS3バケットを生成

4, lambdaにS3保存ポリシーを作成して、lambdaロールに付与
アクションは、PutObjectだけ
arn:aws:s3:::your-backet-name

5, lambdaコードを書き換えて、テストコードを実行してみる。S3にファイルが保存されていればOK!
※ユーザIDをファイル名にしているので、毎回上書きされる…。

lambdaのテストJSON
s3にファイル保存されるか確認する

6, 実際のslack投稿がS3保存されるようにする
作成したSLACKアプリを、自分のワークスペースにインストールする必要がある。

投稿メッセージやメンションに反応するだけのslackアプリ(python)で作ってみた。意外と設定が面倒!