2017-11-25 348 views
0

我有一個lambda函數,它通過webservice綁定到一些外部自動化。大約需要45秒才能完成任務。亞馬遜Lex在Lambda Fullfilment中以30秒的時間排出

我已經將lambda調用的時間限制更新爲2分鐘,並且在測試時它工作正常。

然而,當我使用的文字機器人在亞馬遜萊克斯我得到以下信息:發生

錯誤:無效博特配置:LAMBDA請求不容許的時間(30秒)內完成。

任何人都知道如何增加Lex Bot配置讓我的lambda腳本長達至少1分鐘?因爲它是定義AWS萊克斯將拋出

感謝

回答

1

目前這個限制不能被修改的424 - DependencyFailedException如果:

其中的相關性,比如AWS LAMBDA或亞馬遜波利,拋出一個例外。例如,

  • 如果Amazon Lex沒有足夠的權限來調用Lambda函數。
  • 如果Lambda函數的執行時間超過30秒。
  • 如果履行Lambda函數返回委託對話框操作而不刪除任何槽值。

來源:AWS Lex docs.

0

你能更多地討論你正試圖在這裏實現什麼?從邏輯上講,機器人應該是有迴應性的,因此Lex可以理解,在lambda調用中放置這樣一個時間限制。我建議以最終用戶探測殭屍程序進行更新的方式建立機器人模型(這類似於來自ned用戶的針對此處查看的響應的輪詢)。在lambda中,請求處理應該異步發生。例如,當拉姆達得到一個請求,那麼:

  • 您可以創建適用於請求的UUID和異步處理請求(穿上了SQS請求其另一個lambda鎬和方法R類似的東西)。
  • 將UUID返回給最終用戶說「是請求ID,請檢查此作業的狀態幾秒鐘。」。
  • 最終用戶將繼續檢查請求的結果,說明「最新的狀態」。對於這樣的話語,你可以有另一個意圖,它會觸發lambda檢查響應。同時,在步驟1中執行的處理的響應可以發佈到S3或放入數據庫(使用UUID作爲該數據的標識符)。這個當前的lambda可以探測S3或數據庫來獲得結果並返回它。