2017-11-25 35 views
0

Webサービスを介していくつかの外部オートメーションに結びついているラムダ関数があります。タスクが完了するまでに約45秒かかります。Amazon Lex Lambda Fullfilmentで30秒後にタイムアウトする

私は既にラムダコールの時間制限を2分に更新しています。テストしているときにうまくいきます。

エラーが発生しました:無効なボット構成:私はアマゾンレックスのテキストボットを使用していたときに

はしかし、私は、次のメッセージが表示されますラムダ要求が許容時間(30秒)内に完了しませんでした。

Lex Botの設定を増やしてラムダスクリプトを1分以上にする方法を知っていますか?

おかげ

答えて

1

AWSレックスが424スローされますことが規定されているように、この制限は変更することはできません現時点では - 場合DependencyFailedExceptionを:そのようなAWSラムダまたはとして、依存関係の

ワンAmazon Pollyは例外を投げた。たとえば、

  • Amazon LexにLambda関数を呼び出すための十分な権限がない場合。
  • ラムダ関数の実行に30秒以上かかる場合。
  • フルフィルメントラムダ関数が、スロット値を削除せずに代行ダイアログアクションを返す場合。

出典:AWS Lex docs.

0

あなたはここで達成しようとしているものに、より詳しく説明することはできますか?哲学的には、ボットは応答性があり、したがってLexはラムダコールにそのような時間制限を当てはめます。エンドユーザーがボットの更新をプローブする方法でボットをモデル化することをお勧めします(これは、ここでは応答のためにnedユーザーからのポーリングのようなものです)。ラムダでは、リクエスト処理は非同期で行われるべきです。ラムダは、その要求を取得するとき例:

  • あなたが要求のためにUUIDを作成し、非同期要求を処理することができます(SQS上の要求を入れた別のラムダピックとプロセスRのようなもの)。
  • "要求IDです。"というエンドユーザーにUUIDを返します。このジョブのステータスを数秒確認してください。 "
  • エンドユーザーは、「whats the status」という要求の結果を確認し続けます。そのような発話に対しては、ラムダが応答を確認するための別の意図を持つことができます。一方、ステップ1で実行されている処理の応答は、S3にポストされるか、または(そのデータの識別子としてUUIDを使用して)データベースに格納されます。この現在のラムダは、結果を取得して返すためにS3またはデータベースを調べることができます。
関連する問題