2016-07-31 10 views
2

Ich versuche adminInitiateAuth zu nennen wie folgt:Wie rufst du adminInitiateAuth von NodeJS Lambda an?

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); 
     } 
    }); 

Aber ich die folgende Fehlermeldung erhalten:

TypeError: cognitoidentityserviceprovider.adminInitiateAuth is not a function

Alle Ideen, was ich hier falsch mache? Andere Funktionen wie SignUp funktionieren auf gleiche Weise!

Antwort

5

Ich habe auch in diese suchen und es scheint, dass die NodeJS AWS sdk, die für die Lambda-Funktionen zur Verfügung gestellt wird, Version 2.4.9, können Sie, indem Sie überprüfen:

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

Die Version das mit adminInitiateAuth veröffentlicht wurde, ist Version 2.4.11. Ich gehe davon aus, dass Amazon ihre Lambda-Maschinen bald aktualisiert werden, aber in der Zwischenzeit können Sie versuchen, die neue sdk Hinzufügen manuell hinzufügen von

npm install aws-sdk 

und dann zipping up your lambda file with the node_modules folder.

+0

als vorübergehende Lösung, das funktioniert - danke! Ich habe in den offiziellen Foren gepostet, um hierauf aufmerksam zu machen: https://forums.aws.amazon.com/thread.jspa?messageID=734141򳎽 – RossP

0

Wie bereits erwähnt, ist die aktuelle SDK-Version in Lambda-Containern älter als diese API. Die Lösung besteht darin, die benötigte SDK-Version in Ihrer Lambda Zip-Datei zu bündeln.

Für Anwendungen, bei denen Zuverlässigkeit wichtig ist, sollten Sie auf jeden Fall alle Abhängigkeiten explizit bündeln. Dies isoliert Ihre Funktionen von Verhaltensänderungen oder Bugs, die eingeführt werden, wenn Lambda die APIs im Container aktualisiert.