Возврат HTML из лямбда-функции с помощью экспресс - PullRequest
0 голосов
/ 29 октября 2018

У меня есть AWS Lambda, созданная для запуска экспресс-приложения. У экспресс-приложения есть один маршрут, который поддерживает запрос get и возвращает простую HTML-страницу. Я запускаю это с awsServerlessExpress, но вместо того, чтобы возвращать только HTML, возвращается JSON.

Вот что возвращается:

{"statusCode":200,"body":"\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n
Testing!
\r\n
\r\n
This is a test

\r\n
\r\n\r\n\r\n","headers":{"x-powered-by":"Express","accept-ranges":"bytes","cache-control":"public, max-age=0","last-modified":"Sun, 28 Oct 2018 23:48:18 GMT","etag":"W/\"b3-166bd1405d0\"","content-type":"text/html; charset=UTF-8","content-length":"179","date":"Mon, 29 Oct 2018 03:57:27 GMT","connection":"close"},"isBase64Encoded":false}

Как мне заставить его просто вернуть HTML?

Вот мой app.js

const express = require('express');
const app = express();
const router = express.Router();

app.use(express.static(__dirname + "/client"));


app.get('/', function(req, res) {
    res.set('Content-Type', 'text/html');
    res.sendFile(__dirname + '/client/index.html');
});

app.use('/', router);

module.exports = app;

Вот мой index.js

'use strict'

const binaryMimeTypes = [
  'application/javascript',
  'application/json',
  'application/octet-stream',
  'application/xml',
  'font/eot',
  'font/opentype',
  'font/otf',
  'image/jpeg',
  'image/png',
  'image/svg+xml',
  'text/comma-separated-values',
  'text/css',
  'text/html',
  'text/javascript',
  'text/plain',
  'text/text',
  'text/xml',
  'multipart/form-data'
]

const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const server = awsServerlessExpress.createServer(app)

exports.handler = (event, context) => { awsServerlessExpress.proxy(server, event, context) }

В AWS я создал новую лямбду с API-шлюзом в качестве триггера. Вот как выглядит мой API-шлюз:

enter image description here

1 Ответ

0 голосов
/ 01 ноября 2018

Вам необходимо включить интеграцию лямбда-прокси в API Gateway. Установите флажок Use Lambda Proxy integration в настройках Integration Request.

aws-serverless-express использует лямбда-прокси для сопоставления запроса и ответа.

...