Я пытаюсь заставить пользователя войти в пул пользователей Amazon Cognito с помощью AWS API Gateway / AWS Lambda в Node js.Я перепробовал много примеров из Интернета, но ни один из них не работает.Я могу нажать на URL и зайти в консольный журнал, где написано «start 1», но ничего больше.Я не уверен, что я делаю не так здесь.Вот мой код:
'use strict';
const middy = require('middy');
const { cors } = require('middy/middlewares');
const config = require('../config');
const AWS = require('aws-sdk');
const AmazonCognitoIdentity = require('amazon-cognito-identity-js');
const CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool;
var AuthenticationDetails = AmazonCognitoIdentity.AuthenticationDetails;
var CognitoUser = AmazonCognitoIdentity.CognitoUser;
const bodyParser = require("body-parser");
const request = require('request');
const jwkToPem = require('jwk-to-pem');
const jwt = require('jsonwebtoken');
global.fetch = require('node-fetch');
var poolData = config.poolData;
var userPool =
new AmazonCognitoIdentity.CognitoUserPool(poolData);
const login = async (event, context) => {
var body = JSON.parse(event.body);
var email = body.userName;
var password = body.password;
console.log(body);
var authenticationData = {
Username: email,
Password: password,
};
var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData);
var userData = {
Username: email,
Pool: userPool
};
console.log('start 0');
var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData);
console.log("start 1");
console.log(cognitoUser);
try {
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: (result) => {
var accessToken = result.getAccessToken().getJwtToken();
console.log(result);
console.log(accessToken);
var idToken = result.idToken.jwtToken;
console.log(idToken);
},
onFailure: (err) => {
console.log(err);
idToken = err;
return;
},
});
}
catch(error) {
console.error(error);
}
};
const signin = middy(login)
.use(cors()) // Adds CORS headers to responses
module.exports = { signin }
... и мой безсерверный файл yml выглядит следующим образом:
service: resto # NOTE: update this with your service name
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: ap-southeast-2
functions:
signup:
handler: api/signup.auth
memorySize: 128
description: auth service
events:
- http:
path: api
method: post
cors: true
signin:
handler: api/signin.signin
memorySize: 128
description: signin service
events:
- http:
path: signin
method: post
cors: true
plugins:
- serverless-offline
Регистрация работает нормально, но я не уверен, почему вход в систему делаетне работа.Спасибо!