7章デプロイで、endpoint:URLは表示されても、AWSコンソールに表示されず、SlackアプリでもYour URL didn't respondとなる
HiromichiMatsui opened this issue · comments
エラーの説明
P.187でserverless deployを実行した結果、endpoint:の後にURLが表示されました。
ところが、AWSコンソールには表示されず、SlackアプリのEvent Subscriptions画面のRequest URLに入力しましたが、
Your URL didn't respond.となりました。
再度トライするため、.serverless Directoryを削除して、再度serverless deployを実行しましたところ、以下の画面となりました。
どのようなことを調べればよいでしょうか。
スクリーンショット
7章デプロイの画面.pdf
ご質問ありがとうございます。
再度トライするため、.serverless Directoryを削除して、再度serverless deployを実行しましたところ、以下の画面となりました。
こちらは、すでにデプロイされている状態から変更がなかったため、デプロイがスキップされたという状況です。
.serverlessディレクトリを削除しても、デプロイしたLambda関数は削除されません。
デプロイしたLambda関数を削除したい場合は serverless remove
コマンドを実行してください。
ところが、AWSコンソールには表示されず
AWSのマネジメントコンソールに関数URLが表示されなかった場合、何かそのあたりでうまくいっていない可能性が高そうです。
関数URLが表示されなかった様子の画面キャプチャを共有いただければ、サポートさせていただきます。
よろしくお願いします。
ありがとうございます。AWSのマネジメントコンソールに関数URLが表示されました。
そこでSlackアプリの「Event Subscriptions]のRequest URLに入力しましたが、
”Your URL didn't respond with the value of the challenge parameter.”となり、
Retryしていますが、変化しません。
画面を添付します。
SlackアプリがURL認識しない.pdf
すいません。間違いに気が付きました。修正してトライをします。ダメであれば、ご連絡します。
間違いを修正してみましたが、同じエラーでした。
AWSのマネジメントコンソールに関数URLが表示されました。
そこでSlackアプリの「Event Subscriptions]のRequest URLにコピー入力しましたが、
”Your URL didn't respond with the value of the challenge parameter.”となり、
何度もRetryしていますが、同じエラーが出ます。
画面を添付いたします。
7章Slackアプリ画面.pdf
状況共有ありがとうございます。
エラーの際は基本的にログを見て対応することになります。
SlackからLambda関数にリクエストを送信したときのログを確認してください。
手順は以下のようになります。
-
Slackの管理画面で、Lambdaの関数URLに対してもう一度リクエストを送る
-
AWSマネジメントコンソールの、該当のLambda関数の画面で、「モニタリング」の「CloudWatchログを表示」を選択する
- Cloud Watch Logsのロググループの画面で、最新のログストリームを選択する
すると直近のログが表示されるはずなので、その内容をもとにエラーを解決していくことになります。
もしログの内容を共有いただければ、サポートさせていただきます。
よろしくお願いします。
Cloud Watch Logsの最新ログストリームのログ画面を添付します。
よろしくお願いいたします。
Lambdaログ画面.pdf
共有ありがとうございます。
Lambda関数のログにエラーが発生したことが書かれています。
そのため、このエラーによってSlackに応答が返らなかった、という状況だと分かります。
エラーメッセージには以下のように書かれています。
No modeuls named `slack_bolt`
このエラーメッセージから、slack_boltというパッケージのimportでエラーになっていることが分かります。
本書ではserverless-python-requirementsによって、requirements.txtに書いてあるパッケージがLambda関数の環境にインストールされるようになっています。
本書の通り進めていると、pip freeze > requirements.txt
というコマンドで、requirements.txtを作成します。
最初に共有いただいた画面キャプチャを見ると、requirements.txtではなく、requiremets.txtというファイルが存在します。(nがぬけています)
このファイル名の違いによってうまくパッケージがLambda関数の環境にインストールされていない、という状況の可能性が高いです。
ファイル名に注意して、pip freeze > requirements.txt
コマンドを実行しなおしてみてください。
その後 serverless deploy
しなおして、Slackからの接続を試してください。
よろしくお願いします。
ありがとうございます!
SlackアプリのRequest URLはverifyになり、Save changeをしました。
Slackアプリにメンションしました。
Lambdaのモニタリングのダッシュボードに反応はありました。
ところが、Slackアプリのメンションに対して、スレッドの返信が来ません。
画面を共有します。
LambdaとSlackの画面.pdf
まずはSlack管理画面でのRequest URLの検証が通ったようでよかったです!
エラーの際は、ログを見ることが非常に重要です。
もう一度ログを確認してみてください。
ログの内容を共有いただければ、サポートさせていただきます。
よろしくお願いします。
Slackアプリの設定をチェックし直したところ設定ミスがあり、もう一度、本の通りに修正した結果、Slackアプリにメンションして、ChatGPTからの返答が来ました。
AWS Lambdaのログも、正常でした。これで、7章の実装が完了できました。
作業中に設定がズレてしまうことがあり、エラーの際にログをよく見て考えることの重要さを実感しました。ご指導いただき、ありがとうございました。
解決してよかったです!