TypeScriptFunction: Centralice sus errores

[vc_row el_class=”blog-info”][vc_column][vc_single_image source=”featured_image” img_size=”full” style=”vc_box_rounded”][vc_empty_space height=”40px”][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text el_class=”font-weight-bold”]

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.

[/vc_column_text][vc_empty_space height=”40px”][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][vc_row_inner][vc_column_inner width=”1/6″][/vc_column_inner][vc_column_inner width=”2/3″][vc_column_text]


¿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!

[/vc_column_text][/vc_column_inner][vc_column_inner width=”1/6″][/vc_column_inner][/vc_row_inner][/vc_column][/vc_row][vc_row el_class=”social-info”][vc_column width=”1/6″][/vc_column][vc_column width=”2/3″][vc_row_inner][vc_column_inner width=”1/2″][vc_column_text][social_share_button themes=’theme1′][/vc_column_text][/vc_column_inner][vc_column_inner el_class=”youtube-inner-col” width=”1/2″][vc_column_text][likebtn theme=”youtube” lang=”auto” show_like_label=”0″ white_label=”1″ alignment=”right”][/vc_column_text][/vc_column_inner][/vc_row_inner][vc_row_inner el_class=”social-info-inner”][vc_column_inner width=”1/4″][vc_single_image image=”921″][/vc_column_inner][vc_column_inner width=”3/4″][vc_column_text]

Diego Pacheco

Ingeniero en Sitemas, MBA (Babson College). Desarrollador PHP/Java/JavaScript. Fundador & CEO de EpicStudio. Entusiasta de las tecnologías web (JavaScript, Vue, Laravel, AWS, Docker) Viajes, Negocios, Surf y Growth.[/vc_column_text][asvc_list_item icon_fontawesome=”fa fa-calendar-o” icon_size=”14px”]Programar una reunión[/asvc_list_item][/vc_column_inner][/vc_row_inner][/vc_column][vc_column width=”1/6″][/vc_column][/vc_row][vc_row][vc_column][vc_column_text]

Recent Post

[/vc_column_text][lvca_posts_carousel posts_query=”size:3|order_by:rand|post_type:post” image_linkable=”true” image_size=”full” taxonomy_chosen=”post_tag” display_title=”true” display_post_date=”true” display_summary=”true” autoplay_speed=”3000″ animation_speed=”300″ display_columns=”3″ scroll_columns=”3″ gutter=”3″ tablet_display_columns=”2″ tablet_scroll_columns=”2″ tablet_gutter=”3″ tablet_width=”800″ mobile_display_columns=”1″ mobile_scroll_columns=”1″ mobile_gutter=”3″ mobile_width=”480″][vc_empty_space height=”20px”][/vc_column][/vc_row]