如何疑難排解與 Amazon Cognito 中的 Lambda 觸發器相關的錯誤?

2 分的閱讀內容
0

我想要解決在 Amazon Cognito 中將 AWS Lambda 函數設定為觸發器時遇到的錯誤。

解決方案

以下是在 Amazon Cognito 中使用 Lambda 觸發器時,疑難排解的常見錯誤。

“由於錯誤訪問 IEDException,預註冊調用失敗。”

**注意:**觸發器類型會在錯誤訊息中提及。例如,作為預註冊觸發程序附加到使用者集區的 Lambda 函數會回應上述錯誤。

錯誤的原因

當您從 Amazon Cognito 主控台將 Lambda 函數新增為使用者集區的觸發程序時,Amazon Cognito 會執行下列動作:

  • 將所需的權限新增至函數的資源策略。此資源政策允許 Amazon Cognito 在特定事件觸發類型的情況下叫用該函數。
  • 顯示下列訊息: “調用 Lambda 函數的許可-您授予亞馬遜 Cognito 權限,以代表您調用此 Lambda 函數。亞馬遜 Cognito 將向函數添加一個基於資源的政策聲明。”

當您刪除新增為觸發程序的函數時,也會發生這個錯誤。如果您刪除 Lambda 觸發器,則必須更新使用者集區中對應的觸發器。例如,當您刪除後期驗證觸發器時,必須將對應使用者集區中的** Post 驗證觸發器設定為 無**。

解決錯誤

在 Amazon Cognito 主控台外部建立觸發器時,必須在將觸發器指派給使用者集區時明確新增許可。若要新增許可,請使用 AWS 開發套件、AWS 命令列界面 (AWS CLI) 或亞馬遜雲形。

當您新增許可時,Amazon Cognito 只會代表您的使用者集區和帳戶叫用函數。若要從 Lambda 主控台新增許可,請遵循對 Lambda 使用以資源為基礎的政策中的步驟進行。您也可以使用添加權限操作。

以下是以 Lambda 資源為基礎的政策範例,可讓 Amazon Cognito 叫用函數。使用者集區處於「AWS: 來源」 狀況,而且帳戶處於「AWS: 來源帳戶」 條件中。

注意:用您自己的值取代範例\ _lambda\ _ 函數\ _arn範例\ _ 帳戶\ _ 數字範例\ _ 使用者\ _ 池\ _arn

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "lambda-allow-cognito",
      "Effect": "Allow",
      "Principal": {
        "Service": "cognito-idp.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "example_lambda_function_arn",
      "Condition": {
        "StringEquals": {
          "AWS:SourceAccount": "example_account_number"
        },
        "ArnLike": {
          "AWS:SourceArn": "example_user_pool_arn"
        }
      }
    }
  ]
}

“身份驗證錯誤,請聯繫應用程序所有者。”

錯誤的原因

發生此錯誤的原因有兩個:

  • 除了自訂寄件者 Lambda 觸發程序外,Amazon Cognito 會同步叫用 Lambda 函數。該功能必須在 5 秒內響應。如果函數沒有回應,那麼亞馬遜 Cognito 會重試呼叫。嘗試三次失敗後,函數逾時。您無法變更 5 秒逾時值。
  • 如果 Amazon Cognito 在 5 秒內未收到觸發器的回應,則在嘗試三次失敗之後,Amazon Cognito 會傳回錯誤。

解決錯誤

如果函數逾時,請套用最佳實務來使用 Lambda 函數以最佳化函數。您可以讓與使用者集區關聯的 Lambda 函數以非同步方式呼叫第二個 Lambda 函數。透過此設定,這些功能可以在不逾時的情況下執行所有必要的動作。

“預註冊失敗,模塊 lambda\ _ 函數中的錯誤語法錯誤。”

錯誤的原因

當您的 Lambda 函數中有任何語法錯誤時,Amazon Cognito 會傳回此錯誤。

解決錯誤

重新檢查函數代碼,並更正任何語法錯誤。

"預註冊失敗,錯誤處理程序 'lambda_handler';模塊上缺失; lambda_function。"

錯誤的原因

該函數的運行時設置包括一個處理程序參數。如果 HandlerInfo 設定的資訊或語法不正確,則該函式無法執行並導致此錯誤。

解決錯誤

在函數組態中設定處理常式參數,以告知 Lambda 執行階段要叫用哪個處理常式方法。

當您在 Python 中配置函數時,處理程序設置值是文件名和處理程序模塊名稱以點分隔。例如,主要處理常式呼叫 main.py 中定義的處理常式方法。

如需處理常式語法的詳細資訊,請參閱修改執行階段環境

相關資訊

重要考量

自訂 AWS 執行階段

AWS 官方
AWS 官方已更新 1 年前