yoshidashingo / langchain-book

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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関数にリクエストを送信したときのログを確認してください。

手順は以下のようになります。

  1. Slackの管理画面で、Lambdaの関数URLに対してもう一度リクエストを送る

  2. AWSマネジメントコンソールの、該当のLambda関数の画面で、「モニタリング」の「CloudWatchログを表示」を選択する

スクリーンショット 2024-02-18 7 47 43
  1. Cloud Watch Logsのロググループの画面で、最新のログストリームを選択する
スクリーンショット 2024-02-18 7 48 09

すると直近のログが表示されるはずなので、その内容をもとにエラーを解決していくことになります。

もしログの内容を共有いただければ、サポートさせていただきます。

よろしくお願いします。

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章の実装が完了できました。
作業中に設定がズレてしまうことがあり、エラーの際にログをよく見て考えることの重要さを実感しました。ご指導いただき、ありがとうございました。

解決してよかったです!