Поиск по сайту:

Как использовать события CloudWatch для автоматизации AWS


CloudWatch обычно используется для обработки журналов и мониторинга ваших ресурсов AWS, но он также имеет мощные инструменты для автоматизации из вашей учетной записи. Мы покажем, как настроить и работать с CloudWatch Events.

Что такое события CloudWatch?

CloudWatch Events — это сервис от AWS, который в основном сопоставляет причину и следствие, используя действия, происходящие в вашей учетной записи. Он может маршрутизировать события API, такие как остановка экземпляра EC2 или загрузка объекта в корзину S3, и отправлять их в другие службы, такие как функции Lambda или очереди обмена сообщениями.

Используя простые правила, вы можете сопоставлять события на основе службы, из которой они поступили. События — это объекты JSON, отправляемые в CloudWatch в связи с действиями, происходящими в вашей учетной записи. Например, событие завершения работы экземпляра EC2 может выглядеть следующим образом:

{
  "version": "0",
  "id": "6a7e8feb-b491-4cf7-a9f1-bf3703467718",
  "detail-type": "EC2 Instance State-change Notification",
  "source": "aws.ec2",
  "account": "111122223333",
  "time": "2017-12-22T18:43:48Z",
  "region": "us-west-1",
  "resources": [
    "arn:aws:ec2:us-west-1:123456789012:instance/ i-1234567890abcdef0"
  ],
  "detail": {
    "instance-id": " i-1234567890abcdef0",
    "state": "terminated"
  }
}

Вы можете прослушивать эти события и отправлять их другим службам, называемым целями. Это могут быть функции Lambda, созданные для обработки этой полезной нагрузки, тема SNS, очередь SQS или другие действия, такие как задачи ECS и CodePipeline. Благодаря возможности перенаправления на Lambda вы можете запрограммировать любые функции, которые вам нужны, что делает эту функцию очень полезной для автоматизации учетной записи.

Например, если вы хотите запускать задачу ECS, такую как обработка фотографий или видео, всякий раз, когда объект загружается в корзину S3, вы можете легко добиться этого с помощью CloudWatch Events. Просто установите источник события в соответствии с операциями PutObject и отправьте событие задаче ECS для обработки.

Многие другие инструменты AWS также будут использовать события CloudWatch, поэтому у вас уже могут быть настроены некоторые правила. Если вы используете CodePipeline, он использует событие CloudWatch для отслеживания изменений в исходном репозитории и запускает в ответ конвейер CI/CD.

События не обязательно должны инициироваться действием в вашей учетной записи. Кроме того, вы можете настроить запуск события с фиксированным интервалом времени, по сути действуя как cron AWS. Вы можете использовать это, чтобы запланировать автоматический запуск функций Lambda.

Настройка правила события

В консоли CloudWatch нажмите «Правила» на боковой панели и создайте новое правило.

Если вы не хотите, чтобы это событие запускалось автоматически, установите для параметра «Источник события» значение «Шаблон события». Здесь вы можете выбрать имя службы для фильтрации различных типов событий.

Для S3 вы можете выбрать «Операции на уровне объекта» и выбрать конкретный тип операции, например PutObject. Вы также можете выбрать конкретное ведро (или ведра) по имени.

Справа вы можете выбрать цель. По умолчанию используется «лямбда-функция», вам просто нужно выбрать функцию, созданную для обработки события.

Для Lambda событие передается как переменная event. Вы можете использовать это для доступа к сведениям об операции PutObject , например к ссылке на сам объект, которую вы можете использовать для доступа к нему.

Если вы просто тестируете события CloudWatch, вы можете использовать функцию, подобную следующей, чтобы просто регистрировать переданное ей событие. Вы найдете журналы функции Lambda на вкладке «Мониторинг» для функции.

'use strict';

exports.handler = (event, context, callback) => {
  console.log('LogCloudWatchEvent');
  console.log('Received event:', JSON.stringify(event, null, 2));
  callback(null, 'Finished');
};

Вы, конечно, не ограничены функциями Lambda. Для более интенсивных вычислений вы можете перенаправить событие в задачу ECS, которая может использовать всю мощь Fargate и EC2 для запуска контейнерных приложений.

Также доступны другие варианты, обычно связанные с маршрутизацией события куда-то еще, например в поток Kinesis, тему SNS или очередь SQS.

Правилами можно управлять из консоли CloudWatch, включая вкладку мониторинга, на которой отображаются показатели частоты вызова правила.