Как бы я создал глобальный счетчик для функций AWS Lambda? - PullRequest
0 голосов
/ 07 мая 2018

Если бы я хотел запускать лямбда-функцию каждые 2 минуты, то это вызовет API с индексным номером. Как бы я сохранил индексный номер для лямбда-чтения для чтения при инициализации и увеличивал его на единицу каждый раз, когда лямбда-функция делает успешный вызов API?

Я думаю, что иметь динамо-стол только для прилавка - это излишне.

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Думая «из коробки», вы можете записывать сообщения в CloudWatch Logs. Затем вы можете создать метрический фильтр, чтобы получить фактическое значение.

С этим можно даже запускать события CloudWatch.

0 голосов
/ 08 мая 2018

Сделайте обратный вызов вашего лямбда-обработчика / сгенерируйте ошибку, если вызов API завершится неудачно. Пример для JS:

export.handler = function(event, context, callback) {
  apiCall().then(resp => callback(null, resp).catch(err => callback(err));
}

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

Lambda Counter

Если вам нужен программный доступ, используйте AWS CLI или AWS SDK. AWS CLI get-metric-data

0 голосов
/ 07 мая 2018

Я бы сказал, что использование чего-то другого, кроме DynamoDB, было бы излишним.

DynamoDB сделан именно для этой цели. И это практически бесплатно для вашего случая использования. И добавит только около или менее 10 мс к вашему времени выполнения. Очень незначительно по сравнению с холодными запусками, которые будет получать ваша лямбда.


Если вы действительно хотите сократить как стоимость DynamoDB, так и время выполнения Lambda, вы можете кэшировать счетчик внутри контейнера Lambda (вне вашего обработчика).

Предполагая, что нет одновременных вызовов (инициируемых только запланированными событиями), я бы делал что-то подобное для каждого вызова:

  1. Проверка значения счетчика в кэше.
  2. Если counter == 0, считать значение из DynamoDB. Если counter > 0, используйте это значение.
  3. Делай, что хочешь.
  4. Счетчик приращений в DynamoDB и кэшированное значение.
...