Я пытаюсь создать API на AWS Lambda и использую Serverless Framework для развертывания.
Я полный нуб, поэтому я не уверен, что поступаю правильно. Итак, вот старый любимый, привет мир (index.js):
const serverless = require('serverless-http');
const express = require('express');
const app = express();
const Promise = require('promise');
app.get('/', function (req, res) {
res.send('Hello World!')
})
Это отлично работает как есть. Но когда я добавлю следующее:
const serverless = require('serverless-http');
const express = require('express')
const app = express()
const Register = require('./controller/registryController');
app.get('/', function (req, res) {
res.send('Hello World!')
})
app.get('/createUserName', function (req, res) {
var prom = Register.createUser();
prom.then((message) => {
res.status(201).json(message);
})
.catch((message) => {
res.status(400).json(message);
});
})
module.exports.handler = serverless(app);
Я получаю:
«Не удается найти модуль» ./controller/registryController'"
Что странно, потому что файл прямо там, когда я смотрю в лямбду. Вот его содержание:
const dbConnMysql = require('./dbMngrMysql');
var methods = {
createUser: function() {
return new Promise((resolve, reject) => {
let connection = dbConnMysql.createConnection();
dbConnMysql.startConnection(connection)
.then((fulfilled) => {
let table = 'userNamePool';
return dbConnMysql.selectFrom(connection, table, null);
})
.then((fulfilled) => {
return dbConnMysql.closeConnection(connection).then(function() {
let result = fulfilled;
let response = {
"statusCode": 200,
"headers": {"my_header": "my_value"},
"body": JSON.stringify(result),
"isBase64Encoded": false
};
resolve(response);
});
})
.catch((error) => {
let response = {
"statusCode": 404,
"headers": {"my_header": "my_value"},
"body": JSON.stringify(error),
"isBase64Encoded": false
};
resolve(response);
});
});
}
};
module.exports = methods;
Вот структура проекта / каталог:
А вот мой serverless.yml для хорошей меры:
сервис: sample-api
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: yapyap
deploymentBucket: yadayada
role: blahblahblah
functions:
app:
handler: index.handler
events:
- http: ANY /
- http: 'ANY {proxy+}'
createUserName:
handler: index.handler
events:
- http: 'GET /createUserName'
Что я делаю не так? Что я могу сделать, чтобы это исправить?