¿Cómo puedo configurar un filtro de suscripción de CloudWatch para invocar mi función de Lambda?

3 minutos de lectura
0

Quiero configurar un filtro de suscripción de Amazon CloudWatch para invocar mi función de AWS Lambda.

Descripción breve

Con Registros de Amazon CloudWatch, puede utilizar un filtro de suscripción que envíe los datos de registro a su función de Lambda. Los filtros de suscripción de los registros de CloudWatch están codificados en base64 y comprimidos con el formato GZIP.

Antes de crear la función de Lambda, calcule el volumen de datos de registro que se generarán. Asegúrese de crear una función que pueda gestionar el volumen. Si la función no tiene suficiente volumen, se reduce el flujo de registro. Para obtener más información, consulte los cupos de Lambda.

Nota: La transmisión de grandes cantidades de datos de registros de CloudWatch puede generar cargos de uso elevados. Se recomienda utilizar AWS Budgets para realizar un seguimiento de los gastos y el uso. Para obtener las instrucciones, consulte ¿Cómo puedo usar AWS Budgets para hacer un seguimiento de lo que gasto y uso?

Resolución

Cree un filtro de suscripción para los registros de CloudWatch que envíe los datos de registro a su función de AWS Lambda.

Nota: Si se producen errores al ejecutar comandos de la Interfaz de la línea de comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de la AWS CLI.

1.    A fin de conceder permiso a los registros de CloudWatch para invocar su función de Lambda, ejecute el comando add-permission de AWS CLI, similar a lo siguiente:

aws lambda add-permission \
    --function-name "helloworld" \
    --statement-id "helloworld" \
    --principal "logs.amazonaws.com" \
    --action "lambda:InvokeFunction" \
    --source-arn "arn:aws:logs:region:123456789123:log-group:YourLogGroup:*" \
    --source-account "123456789012"

Importante: Sustituya “helloworld” con el nombre de su función de Lambda, “YourLogGroup” con su grupo de registro y el número de cuenta de ejemplo con su cuenta.

2.    Cree un filtro de suscripción mediante el comando put-subscription-filter de AWS CLI para enviar eventos de registro que contengan una palabra clave. En el siguiente ejemplo, se utiliza la palabra clave “ERROR” para la función de Lambda:

Importante: sustituya “YourLogGroup” con su grupo de registro y el número de cuenta de ejemplo con su cuenta.

aws logs put-subscription-filter \
    --log-group-name YourLogGroup \
    --filter-name demo \
    --filter-pattern "ERROR" \
    --destination-arn arn:aws:lambda:region:123456789123:function:helloworld

El grupo de registro de CloudWatch “YourLogGroup” invoca la función de Lambda cuando recibe un evento de registro que contiene la palabra clave “ERROR”, similar a lo siguiente:

{
  "awslogs": {
    "data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
  }
}

Información relacionada

Sintaxis de filtros y patrones

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año