Я перевожу маленькое приложение узла / экспресс-функции в лямбда-функции, используя сервер.
Мое приложение действительно простое. Нет аутентификации. Всего 1 конечная точка, позволяющая получить и отправить. Проблема в том, что GET работает, но я получаю ошибку HTTP 403 при отправке запроса POST при отправке двоичного файла (файл docx)
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public')));
/* GET home page. */
app.get('/', function (req, res, next) {
res.render('index', {title: 'Whatever'});
});
/* POST receive file */
app.post('/', function (req, res, next) {
// Simplified to the minimum
return res.json({'msg': 'ok'});
});
module.exports.handler = serverless(app);
Мой файл serverless.yml выглядит так
service: my_service
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: eu-west-3
functions:
app:
handler: app.handler
events:
- http: GET /
- http: 'ANY {proxy+}'
post:
handler: app.handler
events:
- http:
path: /
method: post
cors: true
После запуска sls deploy создается Amazon API Gateway и функция развертывается, но не может использовать POST для отправки двоичных файлов в мое приложение.
Вероятно, это проблема API Gateway, но не удалось ее исправить.
EDIT
Первый ответ правильный, с небольшим изменением в файле serverless.yml. Это правильный:
service: my-service
provider:
name: aws
runtime: nodejs8.10
stage: dev
region: eu-west-3
functions:
app:
handler: app.handler
events:
- http: GET /
- http: POST /
- http: 'ANY {proxy+}'