2016-07-31 75 views
2

我想打電話給adminInitiateAuth如下:如何從NodeJS Lambda調用adminInitiateAuth?

var params = { 
     AuthFlow: 'ADMIN_NO_SRP_AUTH', 
     ClientId: 'xxxxxxxxx', 
     UserPoolId: 'eu-west-1_xxxxxx', 
     AuthParameters: { 
      email: email, 
      password: password 
     } 
    }; 

    var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'}); 
    cognitoidentityserviceprovider.adminInitiateAuth(params, function(err, data) { 
     if (err) { 
      console.log(err, err.stack); 
     } else { 
      console.log(data); 
     } 
    }); 

但我收到以下錯誤:

TypeError: cognitoidentityserviceprovider.adminInitiateAuth is not a function

任何想法,我做錯了什麼?其他功能,如註冊工作,當以相同的方式調用!

回答

5

我一直在尋找到這個問題,以及和似乎正在提供的lambda函數的AWS的NodeJS SDK是2.4.9版本,你可以通過運行檢查:

console.log('SDK Version is ' + AWS.VERSION) 

版本與adminInitiateAuth一起發佈的是2.4.11版。我認爲,亞馬遜將很快更新他們的拉姆達機器,但在此期間,你可以嘗試通過

npm install aws-sdk 

然後zipping up your lambda file with the node_modules folder手動添加添加新的SDK。

+0

作爲一個臨時修復,這個作品 - 謝謝!我已在官方論壇上發佈,以引起對此的關注:https://forums.aws.amazon.com/thread.jspa?messageID=734141򳎽 – RossP

0

如上所述,Lambda容器中的當前SDK版本早於此API。解決方案是將您需要的SDK版本捆綁到您的Lambda zip文件中。

對於可靠性很重要的應用程序,您應該在任何情況下明確捆綁所有依賴項。這將您的功能與Lambda更新容器中的API時引入的行爲更改或錯誤隔離開來。