Por exemplo, quero acionar um alarme do CloudWatch para o seguinte:
Number of messages sent
- Number of messages deleted
> = 6
O acima é para métricas do AWS SQS. E quero que essa métrica acione o AWS Lambda se esse alarme for acionado.
Existe alguma maneira de fazer isso? Caso contrário, existe alguma solução alternativa [Visando um paradigma sem servidor]
[Eu quero fazer isso, porque não há métrica que me diga o número de mensagens atualmente (disponíveis) na fila]. Então, se houver uma métrica que possa me dar isso, seria muito útil
Respostas:
Para o último objetivo geral, eu
ApproximateNumberOfMessagesVisible
ativaria o alarme na documentação do Cloudwatch no SQS, que é:Para a pergunta métrica computada mais genérica, eu usaria um lambda executando periodicamente, reunindo métricas do cloudwatch, fazendo as contas e voltando ao cloudwatch.
Aqui está um exemplo de lambda que reúne dados do Cloudwatch para enviar para a elasticsearch. Com os exemplos na documentação, você poderá enviar as métricas de volta do lambda.
Lembre-se de que chamar a API do cloudwatch para coletar e enviar métricas tem um custo quando você recebe mais de 1 milhão de solicitações por mês; há outros limites a serem observados para evitar a quebra de seu orçamento / fluxo de trabalho.
fonte
Approximate
nele. Por que aproximar quando pode dizer o número exato de mensagens disponíveis?Recentemente, a AWS anunciou o CloudWatch Metric Math, que deve ser adequado ao seu caso de uso.
Referências:-
fonte