我想要對在 Amazon Cognito 中使用使用者遷移 AWS Lambda 觸發器時遇到的錯誤進行疑難排解。
解決方案
以下是您在使用使用者遷移 Lambda 觸發程序時可能會遇到的常見錯誤。
“調用 InitiateAuth 操作時發生的錯誤(InvalidParameterException): USER_PASSWORD_AUTH 流程未啟用此客戶端”
當 Amazon Cognito 使用者集區的應用程式用戶端未設定為使用USER_PASSWORD_AUTH 或ADMIN_USER_PASSWORD_AUTH 流程時,就會發生此錯誤。若要解決此錯誤,請在新增使用者遷移 Lambda 觸發程序之前,在您的應用程序端激活USER_PASSWORD_AUTH 或 ADMIN_USER_PASSWORD_AUTH 流程。
要打開USER_PASSWORD_AUTH 或 ADMIN_USER_PASSWORD_AUTH 流,請在您的應用程序客戶端中選擇該身份驗證流程。使用這些流程,而不是預設的 USER_SRP_AUTH 流程。Amazon Cognito 會將密碼傳送到您的 Lambda 函數,以驗證您在其他目錄中的使用者身份驗證。
“調用 InitiateAuth 操作時發生錯誤(UserNotFoundException): 應用程序客戶端中<example\ _client\ _id>異常遷移的用戶”
當設定為使用者移轉 Lambda 觸發程序的 Lambda 函數沒有正確設定的授權原則時,就會發生此錯誤。在這種情況下,該政策不允許 Amazon Cognito 服務帳戶主體,即** cognito-idp.amazonaws.com** 調用 Lambda 函數。如需詳細資訊,請參閱為 Lambda 使用以資源為基礎的政策。
當您未將 Lambda 函數設定為 Amazon Cognito 使用者集區的使用者遷移 Lambda 觸發程序時,也會發生此錯誤。若要解決此錯誤,請務必將 Lambda 函數設定為使用者集區的使用者遷移 Lambda 觸發程序。
“調用 InitiateAuth 操作時發生錯誤(UserNotFoundException): 遷移期間出錯:無效的 finalUserStatus”
當您將 finalUserStatus 設定為 已確認以外的任何值時 ,就會發生此錯誤。若要解決此錯誤,請將** FinalUserStatus **變更為「已確認」,以便使用者在登入之前不需要執行其他動作。
當 Lambda 函數傳回給 Amazon Cognito 的參數值不是預期值時,就會發生 無效 messageAction 或 無效的 desiredDeliveryMediums 錯誤。若要解決這些錯誤,請將參數變更為預期值。有關請求和回應參數的資訊,請參閱遷移使用者 Lambda 觸發器參數。
“調用 InitiateAuth 操作時發生錯誤(UserNotFoundException): 屬性不符合模式: <example_attribute>: 屬性不存在於模式中”
當 Lambda 函數回應中包含的屬性不是 Amazon Cognito 使用者集區中的屬性時,就會發生此錯誤。若要解決此錯誤,請確定您傳回使用者集區結構描述中存在的屬性。
“使用者移轉期間的例外狀況”-或“使用者移轉失敗,並出現錯誤: <example error message>”
這些錯誤出現在託管的 UI 頁面上,並且可能由於任何先前提到的原因而發生。
由於這些錯誤訊息是通用的,因此可能很難識別出錯誤的特定原因。若要取得有關使用者使用託管 UI 遷移使用者時發生錯誤的詳細資訊,請執行以下 AWS Command Line Interface (AWS CLI) 命令:
$ aws cognito-idp initiate-auth --client-id <your-client-id>
--auth-flow USER_PASSWORD_AUTH --auth-parameters "USERNAME=<username>,PASSWORD=<password>"
**注意:替換<your-client-id>即使用您的用戶 ID。替換<username>即使用您的用戶名稱。替換<password>**即使用您的密碼。
**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
此命令會叫用使用者移轉 Lambda 函數。傳回的任何錯誤都會包含詳細訊息。
相關資訊
使用用戶遷移 Lambda 觸發程序將導入用戶
遷移使用者觸發器
範例: 使用現有密碼移轉用戶