こんにちは、こんです🦊
SlackアプリをCloud Runで公開したものの、「なぜか動かない」「Verifiedにならない」「Slackから反応がない」など、最初のつまずきに悩んだ経験はありませんか?
今回は、私が実際にハマったトラブルをもとに、Cloud Run x Slack Bot構築でよくある落とし穴を6つにまとめました。
Slack + Flask + Google Sheets構成でMVPを作っている方には、再現性を上げるヒントになるはずです。
❗トラブルの原因 TOP6
1. app = flask_app を忘れて Cloud Run がエントリポイントを読めない
Flaskアプリを flask_app = Flask(__name__) で定義したら、最後に app = flask_app を忘れず追加しましょう。
flask_app = Flask(__name__)
...
app = flask_app # Cloud Run用
これを忘れるとCloud Runは"App failed to load" エラーで突然止まります。
2. .env が逆に効かない
現場でよくある効果ないパターン。
.env に設定したのに Cloud Run で動かない...
原因は Cloud Runは.envを読まない ことです。
解決策は:
--set-env-vars を使ってデプロイ
gcloud run deploy workpulse-app \
--source . \
--region us-central1 \
--allow-unauthenticated \
--set-env-vars SLACK_BOT_TOKEN=xxx,SLACK_SIGNING_SECRET=xxx,SPREADSHEET_ID=xxx
3. Event Subscription URL が /slack/events になっていない
Slack Appで "Verified" が通ったと思ったら、もう一度開い直すと…
なぜか OFF になってる!?!?
この原因は bot eventsの登録欠如 のことが多いです。
Slack API設定で:
Event Subscription 有効
Request URL: /slack/events
Subscribe to bot events に message.im や app_mention を追加
この順序でやって Verified が "ONのまま"になります。
4. Cloud Run の認証設定を OFF にしていない
初期状態では、Cloud Runの最大の防御はこれ。
この URL は IAM 認証が必要です
というエラーが出たら、Cloud Runの設定を見直しましょう:
Cloud Run 設定画面
セキュリティ > 認証
下方の "IAM を使って認証" を OFF に
5. Google Sheetsが書き込めない
Cloud Run側で Sheets API を呼ぼうとしたら:
403: Permission denied
のようなエラーが出る場合。
原因:
Cloud Run のサービスアカウントが Sheets を使う許可を持っていない
解決策:
Cloud Runのサービスアカウント (xxx-compute@developer...) に Editor ロールを付与
書き込み元の Sheets に従い、同じアカウントを編集者として共有
6. Slack App 側で Slash Command が有効になっていない
最後の落とし穴はこれ。
/clockin を打っても "Command not found"
Slack App の Slash Commands 設定で:
Command: /clockin
Request URL: https://xxxxx.run.app/slack/commands
Short Description: 出勤時刻を記録します
これらが投げ端のAppにしっかり連携されていることを確認しましょう
💡 まとめ: 「動かない」は基礎設定の投げ端チェックで解決
Slackボット x Cloud Runはシンプルであるがゆえに、紛尾も多いのが実情。
ランチアッププの前に、以上の落とし穴を一つずつ見直すだけで、何故か動かない問題は解決することが多いです。
次回は、SlackのEvent Subscriptionが動いたり止まったりする問題を解説します。
#Slackボット開発 #CloudRun #Flask #SlackAPI #GoogleSheetsAPI #MVP開発 #DX実験室