Desejo configurar um filtro de assinatura do Amazon CloudWatch para invocar a 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 a função do Lambda. Os filtros de assinatura do CloudWatch Logs são codificados em base64 e compactados no formato GZIP.
Antes da criação da função do Lambda, calcule o volume de dados de log que serão gerados. Certifique-se de criar uma função que possa gerenciar a quantidade de volume. Se a função não tiver volume suficiente, o fluxo de logs sofrerá controle de utilização. Para obter mais informações, consulte Cotas do Lambda.
Observação: o streaming de grandes quantidades de dados do CloudWatch Logs pode resultar em altas cobranças de uso. É uma prática recomendada usar o AWS Budgets para monitorar gastos e usos. Para obter instruções, consulte Como posso usar o AWS Budgets para monitorar meus gastos e uso?
Resolução
Crie um filtro de assinatura do CloudWatch Logs que envie dados de log para a função do AWS Lambda.
Observação: caso receba erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.
1. Para fornecer ao CloudWatch Logs permissões para invocar a função do Lambda, execute o comando add-permission da AWS CLI que é semelhante ao a seguir:
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: substitua “helloworld” pelo nome da função do Lambda, “YourLogGroup” pelo seu grupo de logs e o número da conta de exemplo pela sua conta.
2. Crie um filtro de assinatura usando o comando put-subscription-filter da AWS CLI para enviar eventos de logs que contenham uma palavra-chave. No exemplo a seguir, a palavra-chave “ERROR” é usada para a função do Lambda:
Importante: substitua “YourLogGroup” pelo seu grupo de logs e o número da conta de exemplo pela sua conta.
aws logs put-subscription-filter \
--log-group-name YourLogGroup \
--filter-name demo \
--filter-pattern "ERROR" \
--destination-arn arn:aws:lambda:region:123456789123:function:helloworld
O grupo de logs do CloudWatch “YourLogGroup” invoca a função do Lambda quando recebe um evento de logs que contém a palavra-chave “ERROR”, sendo semelhante a este:
{
"awslogs": {
"data": "H4sIAAAAAAAAAHWPwQqCQBCGX0Xm7EFtK+smZBEUgXoLCdMhFtKV3akI8d0bLYmibvPPN3wz00CJxmQnTO41whwWQRIctmEcB6sQbFC3CjW3XW8kxpOpP+OC22d1Wml1qZkQGtoMsScxaczKN3plG8zlaHIta5KqWsozoTYw3/djzwhpLwivWFGHGpAFe7DL68JlBUk+l7KSN7tCOEJ4M3/qOI49vMHj+zCKdlFqLaU2ZHV2a4Ct/an0/ivdX8oYc1UVX860fQDQiMdxRQEAAA=="
}
}
Informações relacionadas
Sintaxe do padrão e do filtro