Quiero usar AWS ApiGateway para servir una swagger-ui de una API desde una función lambda usando express. Para esto, quiero usar el punto final GET /docs . Mi función Lambda swaggerUiLambdaHandler se ve así:
import express from 'express'; import serverless from 'serverless-http'; import swaggerUI from 'swagger-ui-express'; const options = { swaggerOptions: { url: 'https://petstore.swagger.io/v2/swagger.json', }, }; const app = express(); app.use('/v1/docs', swaggerUI.serve, swaggerUI.setup(undefined, options)); module.exports.handler = serverless(app); En la pila de cdk de la API, agregué los siguientes 2 puntos finales para servir los recursos index.html y .js/.css:
const docs = myApi.root.addResource('docs'); docs.addMethod('GET', new apigw.LambdaIntegration(swaggerUiLambdaHandler)); const docsProxy = docs.addResource('{proxy+}'); docsProxy.addMethod('GET', new apigw.LambdaIntegration(swaggerUiLambdaHandler));Sin embargo, al llamar al punto final con el navegador, todas las solicitudes de red tienen éxito, pero aparece un lienzo en blanco y el error
Uncaught SyntaxError: Unexpected token '<' ¿Tienes alguna idea? Creo que podría estar relacionado con el content-type devuelto por la puerta de enlace api, pero agradecería algo de ayuda.