AWS S3 File Copy - отслеживать, когда файл не перемещается в S3 Bucket. - PullRequest
0 голосов
/ 11 марта 2020

Мы перемещаем некоторые из наших файлов журналов из наших экземпляров в S3 для использования набором клиентских метрик, которые мы используем для обеспечения соблюдения клиентских соглашений об уровне обслуживания. Поэтому мы должны быть уверены, что файлы перемещаются в соответствующие сегменты S3.

Я видел в документации, где вы можете создавать уведомления на основе того, когда происходят определенные события S3 например, копирование файла, но у меня возникают проблемы с поиском чего-либо обратного - уведомления, которое срабатывает , когда событие не происходит .

В нашем сценарии эти файлы журналов агрегируются каждые 5 минут и перемещаются в соответствующие корзины, поэтому мы должны , если файл не был обнаружен как перемещенный в корзину в течение последних 15 минут, отправить уведомление уведомив их об этом, чтобы сообщить им, что им необходимо go провести расследование.

Мы хотели бы сделать это без написания каких-либо функций Lambda или другого пользовательского кода утилиты, но с использованием встроенной поддержки и встроенной функциональности для AWS.

1 Ответ

0 голосов
/ 16 марта 2020

Невозможно сделать то, что вы описываете без написания пользовательского кода.

Однако вы, вероятно, могли бы сделать это с небольшим битом кода. Поток будет:

  • Настройка Амазонское событие S3 для запуска AWS лямбда-функции, когда соответствующий объект создан
  • AWS Лямбда-функция может отправлять пользовательские метри c в Amazon CloudWatch, например File Received = 1
  • Затем, создать CloudWatch Аварийный сигнал , который срабатывает, когда SUM метри c за предыдущие 15 минут равен нулю
  • Важное замечание: Настройте Аварийный сигнал дополнительной настройки для Treat missing data as bad (beaching threshold)
  • Настройте будильник для отправки уведомления на Amazon SNS topi c, затем подпишитесь на этот topi c для получения уведомлений

Конфигурация «обработки недостающих данных как плохих» вызовет срабатывание будильника, даже если данные не поступают.

Лямбда-код будет таким простым:

import boto3    

def lambda_handler(event, context):

    # Push a custom metric
    cloudwatch_client = boto3.client('cloudwatch')

    cloudwatch_client.put_metric_data(
        Namespace='log_arrivals',
        MetricData=[
            {
                'MetricName': 'logs_arrived',
                'Value': 1
            }
        ]

    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...