Centralice sus errores de AWS Lambda
TypeScriptFunction…
Nota: Debe implementar sus Lambdas usando CDK y nuestra construcción TypeScriptFunction de cdk-typescript-tooling para que esto funcione. Si no lo usa y no quiere empezar, ¡no se preocupe! Le alentamos a que eche un vistazo a cómo lo implementamos: https://github.com/xolvio/cdk-typescript-tooling/.
Es bastante sencillo. Siéntase libre de hacer algo similar en su base de código.
¿Por qué?
Tener múltiples funciones lambda independientes es excelente, pero tiene el precio de una supervisión difícil.
Nos gusta recibir notificaciones de las cosas que van mal, lo antes posible y de forma automatizada. Las nuevas funciones lambda deben conectarse al sistema con una configuración mínima.
¿Qué?
Nuestra TypeScriptFunction tiene la capacidad integrada de enviar registros de errores a un controlador lambda aprobado.
Primero, cree un manejador de registros:
import { CloudWatchLogsDecodedData, CloudWatchLogsHandler } from "aws-lambda"; import zlib from "zlib"; export const handler: CloudWatchLogsHandler = async (event, context) => { const compressedPayload = Buffer.from(event.awslogs.data, "base64"); const jsonPayload = zlib.gunzipSync(compressedPayload).toString("utf8"); const parsed: CloudWatchLogsDecodedData = JSON.parse(jsonPayload); console.log(parsed); };
Este es el más simple posible que solo registrará errores en una transmisión de CloudWatch agregando todos los errores de todas las funciones lambda.
Ahora, en su cdk, defina una TypeScriptFunction que implementará ese código. Asigne su identificador a una variable.
import { SubscriptionFilter, FilterPattern } from "@aws-cdk/aws-logs"; import * as LogsDestinations from "@aws-cdk/aws-logs-destinations"; //... const logHandle = new TypeScriptFunction(scope, "logHandler", { entry: require.resolve("@sales/logHandler/src/handler.ts"), });
Páselo a la función existente así:
new TypeScriptFunction(scope, "Purchase-Status-Endpoint", { entry: require.resolve("@sales/purchase-endpoint/src/handler.ts"), logFunction: logHandle, });
Ahora, cada vez que aparezca un error (console.error o excepción) en el Punto final de estado de compra, LogHandler lo pasará y lo mostrará.
Obviamente, la utilidad de eso aumenta con la cantidad de lambdas que tienes.
¡Rápido y sencillo!