Post Top Ad

Your Ad Spot

sábado, 1 de agosto de 2020

Anuncio de resolución de problemas de Monolambdas con Express.js y Flask

Solución de problemas de API sin servidor

Si bien puede parecer que Express.js o Flask son enfoques más "monolíticos" sin servidor, en realidad es un patrón muy común para muchas aplicaciones diferentes. Y nos complace anunciar que ahora puede implementar sus microservicios Express.js y Flask con las mismas funciones de supervisión y depuración automáticas que los microservicios Framework Serverless Framework tradicionales.
Si bien Serverless Framework Pro anteriormente tenía herramientas automáticas de monitoreo y solución de problemas integradas de fábrica, carecíamos de soporte para microservicios monolambda. Los desarrolladores que usan Express.js, Flask, Lambda API u otros marcos de desarrollo no pudieron aprovechar muchas de las herramientas que ofrecemos para ayudar a revisar las invocaciones de funciones, ordenar las invocaciones por punto final de API y más. Eso cambia hoy.
Hay mucha información en el Blog sin servidor y en la documentación de nuestro panel de control sobre cómo puede aprovechar Framework Pro si aún no ha tenido la oportunidad de usarlo. Pero por ahora, echemos un vistazo a algunas de las funciones a las que ahora tiene acceso con las aplicaciones monolambda.

¿Qué hay de nuevo para Monolambdas?

Debido a que las aplicaciones monolambda generan lotes en la misma secuencia de registro de Amazon CloudWatch, la depuración de aplicaciones monolambda ha sido históricamente una gran molestia. Para encontrar la solicitud de API única que estaba buscando, tendría que buscar en cientos de registros no relacionados de otras solicitudes de API solo para encontrar la invocación y el punto final de API que estaba tratando de depurar. Con nuestras herramientas automáticas de monitoreo y solución de problemas de monolambda, eso ya no es un problema.
Puede revisar las solicitudes de API para todos los puntos finales en su aplicación monolambda:
Resumen de errores
Este punto de partida le brinda una vista rápida de las solicitudes exitosas y fallidas en sus puntos finales API. Si desea una mirada más profunda a puntos finales particulares, puede ordenarlos por la ruta API en cuestión:
Descripción general del punto final
¿La mejor parte de esto? Para Express.js, Flask y Lambda API, todas estas rutas API se ordenan automáticamente. No tiene que instrumentar un único punto final usted mismo. Para los marcos fuera de esta lista que desean la misma experiencia, puede aprovechar la funcionalidad setEndpoint del SDK sin servidor para obtener una experiencia similar.
Cuando encuentre la invocación que está buscando, obtendrá la misma información a la que está acostumbrado en la supervisión de Framework Pro Explorer:
Descripción general del punto final

Configuración de su Monolambda sin servidor existente

Prerrequisitos

Entonces, ¿cómo comenzar con estas nuevas características? Primero, actualice su versión de Framework a la última versión. Si lo instaló con NPM, puede usarlo npm update -g serverlessNecesitará v1.67.0 o superior del Framework y v3.6.1 o superior del complemento Framework Pro.
A continuación, para agregar la solución de problemas automatizada, deberá haber creado una cuenta de Framework Pro y agregar los valores orgappdentro de su serverless.ymlarchivo. Es posible que deba crear una nueva apppara su servicio.

Aplicaciones Express.js y Flask existentes

Si ya ha creado su propia aplicación Express.js o Flask y la ha implementado previamente con Serverless Framework, todo lo que necesita hacer ahora es serverless deployvolver a ejecutarla y probar algunos de sus puntos finales.
En Framework Pro Dashboard para ese servicio, debería ver todos sus registros y capacidades de solución de problemas para cada ruta que pruebe en su monolambda. Tenga en cuenta que las rutas solo comenzarán a aparecer después de que ejecute solicitudes en su contra.
El cambio de configuración de dos líneas y cero cambios en el código de su aplicación deberían desencadenar una nueva implementación con la instrumentación automática de monitoreo y resolución de problemas de Monolambda.

Crear una aplicación monolambda simple

Si es la primera vez que implementa una aplicación monolambda con Serverless Framework, puede seguir los pasos a continuación para una aplicación Express.js o Flask antes de implementar y probar la nueva funcionalidad.
Express.js
Suponiendo que ya ha instalado la última versión de Serverless Framework a nivel mundial, puede iniciar su nuevo proyecto Express.js instalando algunas dependencias.
npm install serverless-http --save
npm install express --save
Luego, puede crear un index.jsarchivo que contenga el código de su aplicación Express.js:
1// index.js
2const serverless = require('serverless-http')
3const express = require('express')
4const app = express()
5
6app.get('/hello/:name', function (req, res) {
7  const name = req.params.name
8  res.send(`Hello ${name}!`)
9})
10
11module.exports.handler = serverless(app)
A continuación, tendrás un serverless.ymlarchivo:
1org: myorg
2app: helloapp
3service: express-api
4
5provider:
6  name: aws
7  runtime: nodejs12.x
8
9functions:
10  app:
11    handler: index.handler
12    events:
13      - http: ANY /
14      - http: 'ANY {proxy+}'
Esto configurará un punto final proxy de Amazon API Gateway para la appfunción que permitirá que cualquier aplicación personalizada sea manejada por su aplicación Express.js. Puede hacer esto creando una sola función appcon un controlador que index.handlerapunte hacia la handlerfunción que acabamos de crear dentro del index.jsarchivo.
También deberá asegurarse de que los valores orgappestén incluidos en el archivo y hacer referencia a su cuenta de Framework Pro.
A partir de ahí, simplemente ejecute serverless deployy debería obtener un nuevo punto final para probar:
Nuevo punto final
A partir de ahí, simplemente cargue el punto final en su navegador y pruebe la hello/nameruta:
Nuevo punto final
Después de probar el punto final, debería verlo aparecer en el Panel de instrumentos de Framework Pro en el explorador para ese servicio:
Nuevo punto final
A partir de ahí, puede agregar nuevas rutas, probarlas y monitorear y solucionar problemas del resto de su aplicación.
Matraz
Probemos lo mismo con una simple aplicación Flask. Para comenzar, supondré que tiene instalado Python 3, junto con la versión actualizada de Serverless Framework de anteriores y Node / NPM.
Primero, ejecute echo Flask > requirements.txtpara crear un requirements.txtarchivo que pueda usar para instalar Flask y otras dependencias al implementar en AWS.
Luego, cree un app.pyarchivo que contenga sus rutas de Flask:
1# app.py
2
3from flask import Flask
4app = Flask(__name__)
5
6@app.route('/hello/<name>')
7def hello(name):
8    return 'Hello ' + name + '!'
A continuación, cree un serverless.ymlarchivo que pueda usar para implementar la aplicación. Tendrá una única función que se configurará wsgi_handler.handlercomo el controlador porque usaremos el serverless-wsgicomplemento para implementar nuestra aplicación Flask. También necesitará los mismos eventos HTTP que configuramos anteriormente.
1org: myorg
2app: helloapp
3service: flask-api
4
5provider:
6  name: aws
7  runtime: python3.7
8
9functions:
10  app:
11    handler: wsgi_handler.handler
12    events:
13      - http: ANY /
14      - http: 'ANY {proxy+}'
15
16custom:
17  wsgi:
18    app: app.app
19    pythonBin: python3 # Some systems with Python3 may require this
20    packRequirements: false
21  pythonRequirements:
22    dockerizePip: non-linux
23
24plugins:
25  - serverless-wsgi
26  - serverless-python-requirements
Si se compara con la aplicación Express.js, también se dará cuenta de que tenemos un adicional custompluginssección. Estos nos permiten configurar los complementos que necesitamos para implementar las dependencias de Python serverless-python-requirementsy con las aplicaciones monolambda de Python serverless-wsgi.
Asegúrese de actualizar los nombres apporgcon su propia configuración de Framework Pro .
A partir de ahí, necesitaremos instalar estos complementos con:
npm install serverless-wsgi --save 
npm install serverless-python-requirements --save
Después de instalar estos complementos, podemos implementar nuestra aplicación con serverless deployEs posible que también necesite instalar Docker para poder usarlo serverless-python-requirements.
Después de que su servicio se haya implementado, debería ver un nuevo punto final para usar:
Nuevo frasco de punto final
Luego, puede probar el punto final en su navegador y ver cómo funciona la hello/nameruta:
Nueva prueba de matraz de punto final
Luego, verá que el nuevo punto final aparece en el Panel de instrumentos de Framework Pro con la ruta que utilizó:
Frasco de explorador
Ahora, puede agregar nuevas rutas de Flask, probarlas todas y continuar monitoreando y solucionando problemas de sus aplicaciones.

¿Qué sigue?

Bueno, si recién está comenzando con Flask o Express.js o no está seguro de cómo hacerlo funcionar con Serverless Framework en AWS Lambda, puede consultar estas guías sobre cómo crear sus propias aplicaciones con ellos:
  • Implemente una API REST usando Serverless, Express y Node.js
  • Cree una API REST de Python con Serverless, Lambda y DynamoDB
Si desea revisar una aplicación de ejemplo más completa, puede consultar un "Servicio de encuestas" de ejemplo que contiene un puñado de entidades como clientes, encuestas y respuestas a encuestas. Luego toma estas entidades, las almacena en DynamoDB y las hace accesibles a través de diferentes rutas API. He creado el servicio con Express.js y Node.js y Python3 y Flask .

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas