Estoy intentando llamar a adminInitiateAuth de la siguiente manera:

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

Pero recibo el siguiente error:

TypeError: cognitoidentityserviceprovider.adminInitiateAuth no es una función

¿Alguna idea de lo que estoy haciendo mal aquí? Otras funciones, como registrarse, funcionan cuando se llaman de la misma manera.

7
RossP 31 jul. 2016 a las 20:38

2 respuestas

La mejor respuesta

También he estado investigando esto y parece que el sdk de NodeJS AWS que se proporciona para las funciones de Lambda es la versión 2.4.9, puede verificar ejecutando:

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

La versión que se lanzó con adminInitiateAuth es la versión 2.4.11. Supongo que Amazon actualizará sus máquinas lambda pronto, pero mientras tanto, podría intentar agregar el nuevo sdk manualmente mediante

npm install aws-sdk

Y luego comprimir su archivo lambda con la carpeta node_modules.

5
smuff 1 ago. 2016 a las 15:48

Como se mencionó anteriormente, la versión actual del SDK en los contenedores Lambda es anterior a esta API. La solución es incluir la versión del SDK que necesita en su archivo zip de Lambda.

Para aplicaciones donde la confiabilidad es importante, debe agrupar explícitamente todas sus dependencias en cualquier caso. Esto aísla sus funciones de los cambios de comportamiento o errores introducidos cada vez que Lambda actualiza las API en el contenedor.

0
Jeff Learman 23 ago. 2016 a las 20:30