我想要解決在 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 執行階段