Kon's DX Lab - Case Study

Day 79 │ SlackのEvent Subscriptionが勝手にオフになる?原因と対策まとめ

Published on 2025-06-19

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、こんです。

Slack勤怠ボットMVPのCloud Run公開をすべて完了して、さぁ実行だって思ったら、

Slack AppのEvent Subscriptionの設定で 確かに「Verified」と出たのに、うまくいかない。

こんな試しにはまって、あれこれ追跡調査した結果、原因と対策をまとめることができたので、Noteに残しておきます。


🌎 現象の摘要

  • Event Subscription の画面で https://xxxxx.run.app/slack/events を入力

  • "Verified"と表示されるが

  • スプレッドシートに反映されない

これ、Slack側のバグにも見えるんですが、実際は自分側の設定ミスも原因になりがちなので、一つずつ確認しましょう。


⚡ Check 1. /slack/eventsが404を返していないか

Slackの証明は「200 OKを返してくれるWebエンドポイントかどうか」で評価されます。

URL証明時のログに

POST /slack/events 404

とあったらそれはNG。Cloud Run側のルート設定を見直しましょう

  • Flask では /slack/events を route登録

  • app = flask_app を忘れずに Cloud Run 用に設定


⚡ Check 2. IAM認証を外しているか

Cloud Runは初期設定で "IAMで認証"されたサービスとして動きます。Slackはそれを読みとれないため 403 Forbidden を返し、Event Subscription が無効になることがあります

  • Cloud Run 設定画面 → サービス選択

  • [セキュリティ] タブ → 認証 の項目

  • "IAM を使用して認証" のチェックを 外す


⚡ Check 3. Slack側の "Subscribe to bot events"が無効

よくあるパターンは

  • Event Subscription で URL 証明 OK

  • でも Slack 側の「Subscribe to bot events」が空

  • そのままページリロード → 無効化される

必ず message.im と app_mention など、何か一つイベントを Subscribe しておくことが必須です。


⚡ Check 4. POST /slack/events が 503 / 502 になっていないか

URL 自体は正しくても、Cloud Run 側の返信エラーで "Upstream error"を返してる場合も

  • Cloud Run のログを確認

  • 特に textPayload の最後が 503 502 なら、アプリ側のバグの可能性高


☑ 結論

SlackのEvent Subscriptionは、この上記いずれか1つでもミスると

  • Verifiedになったのに無効

などの現象を起こすことがあります。

コードに問題があるのではないので、まずは1つずつチェックしていきましょう。

次回は「Cloud Runで環境変数が反映されない。.envが効かない理由と解決策」を記事化します!


#Slackボット開発 #CloudRun #Flask #DX #SlackAPI #EventSubscription #100日チャレンジ