2017-03-09 63 views
4

我試圖在AWS中實現一個自動確認機制,由於Lambda響應,我得到一個錯誤。我無法在文檔中找到正確的返回類型。無法識別的Lambda輸出Cognito

LAMBDA:

exports.handler = (event, context, callback) => { 
    event.response.autoConfirmUser = true; 
    context.succeed(event.response); 
}; 

例外:

無法辨認的拉姆達輸出(服務: AWSCognitoIdentityProviderService;狀態碼:400;錯誤代碼: InvalidLambdaResponseException;請求ID: 5c7a2436-0515-11e7 -b971-41a89adf53ea)

回答

6

如t他在Cognito開發人員指南中使用PreSignUp trigger example,在觸發器結束時應使用context.done(null, event);context.succeed(event);

Cognito期望完整的事件源返回來自您的lambda觸發器作爲不同Cognit用戶池流程的一部分被調用的響應。

+0

謝謝。我不知道我是如何錯過文檔中的這一行的! – KnowHoper

+0

@Chetan在Java中等價於什麼? –

+0

@Chetan,Java中有這樣的例子嗎? – rd22

0

很簡單。

  1. 與此代碼創建lambda函數:例如:http://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html#aws-lambda-triggers-pre-registration-example

    exports.handler =函數(事件,上下文){// 此lambda函數返回一個標誌,以指示如果用戶應該是自動-confirmed。

    //執行任何必要的驗證。

    //將所有用戶池的最小用戶名長度限制爲5。 (event.userName.length < 5){var error = new Error('failed!'); context.done(error,event); }

    //訪問你的資源包含誰被邀請註冊

    //從請求比較電子郵件ID列表到允許列表 如果用戶的電子郵件列表(event.userPoolId ===「yourSpecialUserPool」){if(event.request.userAttributes.email in listOfEmailsInvited){ event.response.autoConfirmUser = true; } } //將結果返回給Cognito context.done(null,event); };

注:作用:LAMBDA基本執行

  • 創建從cognito控制檯觸發器和選擇功能的λ。
  • 測試 3.使用API​​和DONE創建用戶。