Выполнить лямбда-функцию на основе порога - PullRequest
1 голос
/ 03 октября 2019

Я создал функцию Lambda, которая будет запускаться через подписку на шаблон журнала CloudWatch, и функция, в свою очередь, будет передавать журналы через веб-хук (см. https://gist.github.com/tomfa/f4e090cbaff0189eba17c0fc301c63db).

Теперь яэта лямбда-функция нужна для ИСПОЛНЕНИЯ только в том случае, если функция вызывается «x» раз в «y» минутах.

Возможно ли отключить / включить лямбду через SNS. Другая идея состоит в том, чтобы 1. Создать CloudWatch Eventsпри изменении состояния 2. Подпишите это на SNS, которая активирует лямбду, если состояние переходит от OK к ALARM, отключает лямбду, если состояние возвращается к OK

Ответы [ 2 ]

1 голос
/ 03 октября 2019

Вы можете использовать CloudWatch Events, чтобы отправить сообщение в тему Amazon SNS по расписанию. убедитесь, что вы находитесь в правильном регионе, так как события CloudWatch доступны не в каждом регионе.

Как настроить Cloudwatch:

Используйте CloudWatch и получите метрики о лямбда-вызове и ошибке, и вы можете найти успешный вызов и ошибку, пороговое значение. теперь вы можете использовать AWS SDK

https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-data.html

export.handler = function(event, context, callback) {
  apiCall().then(resp => callback(null, resp).catch(err => callback(err));
}
0 голосов
/ 03 октября 2019

Вы можете создать собственную метрику CloudWatch на основе вашего поискового фильтра из журналов CloudWatch

Примеры этого можно найти в руководстве пользователя Amazon CloudWatch Logs

  1. Количество событий журнала
aws logs put-metric-filter \
  --log-group-name MyApp/access.log \
  --filter-name EventCount \
  --filter-pattern "" \
  --metric-transformations \
  metricName=MyAppEventCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0
Количество вхождений
aws logs put-metric-filter \
  --log-group-name MyApp/message.log \
  --filter-name MyAppErrorCount \
  --filter-pattern 'Error' \
  --metric-transformations \
      metricName=ErrorCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0

Затем вы можете войти и создать CloudWatch Alarm, который сработает на основе x этих событий, зарегистрированных в течение y промежутка времени. CloudWatch Alarm может отправить сообщение в тему SNS, которая запускает вашу функцию Lambda

...