Quero configurar um filtro de assinatura do Amazon CloudWatch para invocar minha função do AWS Lambda.
Breve descrição
Com o Amazon CloudWatch Logs, é possível usar um filtro de assinatura que envia dados de log para sua função do Lambda.
Observação: grandes quantidades de dados do CloudWatch Logs podem resultar em altas taxas de uso. É uma prática recomendada usar o AWS Budgets para monitorar gastos e uso.
Resolução
Crie um filtro de assinatura do CloudWatch Logs que envie dados de log para sua função do Lambda.
Observação: se você receber mensagens de erro ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Conclua as etapas a seguir:
-
Para conceder permissão ao CloudWatch Logs para invocar sua função do Lambda, execute o seguinte comando add-permission da AWS CLI:
aws lambda add-permission \
--function-name my-function \
--statement-id my-id \
--principal logs.amazonaws.com \
--action lambda:InvokeFunction \
--source-arn 'arn:aws:logs:region:123456789123:log-group:my-log-group:*' \
--source-account my-account-id
Observação: substitua my-function pelo nome da função e my-id pelo ID da declaração. Substitua region pela sua região da AWS, my-log-group pelo ARN do seu grupo de logs e my-account-id pelo ID da sua conta da AWS.
-
Para criar um filtro de assinatura para enviar eventos de log que contenham uma palavra-chave, execute o seguinte comando put-subscription-filter da AWS CLI:
aws logs put-subscription-filter \
--log-group-name my-log-group \
--filter-name my-filter \
--filter-pattern "ERROR" \
--destination-arn arn:aws:lambda:my-region:123456789123:function:my-function-name
Observação: substitua my-log-group pelo nome do seu grupo de logs, my-filter pelo nome do filtro e my-region pela sua região da AWS. Substitua 123456789123 pelo ID da sua conta e my-function-name pelo nome da sua função.
O grupo de logs anterior do CloudWatch Logs invoca a função do Lambda quando o grupo de logs recebe um evento de log que contém a palavra-chave ERROR, semelhante à seguinte:
{
"awslogs": {
"data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
}
}
Informações relacionadas
Filter pattern syntax for metric filters, subscription filters, filter log events, and Live Tail (Sintaxe de padrões de filtros para filtros de métricas, filtros de assinatura, filtros de eventos de logs e Live Tail)