Como posso configurar um filtro de assinatura do CloudWatch para invocar a função do Lambda?

3 minuto de leitura
0

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

AWS OFICIAL
AWS OFICIALAtualizada há um ano