Фильтр журналов Cloudwatch запускает лямбду, а затем извлекает значения из данных журнала - PullRequest
0 голосов
/ 24 августа 2018

Пожалуйста, у меня есть вопрос из темы.Я хочу создать журнал AWS CloudWatch или событие, чтобы запускать лямбда-функцию из шаблона фильтра, а затем извлекать значения из этих данных журнала в качестве вывода в лямбда-функцию в python. Пример: Имя фильтра: значение abcd для извлечения: 01234 для лямбда-функции.из данных журнала

Данные журнала: abcd: 01234 Есть идеи?

1 Ответ

0 голосов
/ 25 августа 2018

Вот простой способ захвата событий из CloudWatch.Данные журнала находятся в сообщении.Вы можете обработать здесь или отправить его в Firehose и преобразовать там.В качестве альтернативы вы можете отправить CloudWatch напрямую в Firehose с подпиской, но я думаю, что это необходимо сделать с помощью CLI AWS.

import boto3
import gzip
import json
import base64

firehose = boto3.client('firehose',region_name='us-east-2')

def print_result(firehose_return):
    records_error = int(firehose_return['FailedPutCount'])
    records_sent = len(firehose_return['RequestResponses'])
    return 'Firehose sent %d records, %d error(s)' % (records_sent,records_error )

def lambda_handler(events, context):

    cw_encoded_logs_data = events['awslogs']['data']
    compressed_payload = base64.b64decode(cw_encoded_logs_data)
    cw_decoded_logs_data = gzip.decompress(compressed_payload)
    cw_all_events = json.loads(cw_decoded_logs_data)

    records = []

    for event in cw_all_events['logEvents']:
        log_event = {
            "Data": str(event['message']) + '\n'
            }
        records.insert(len(records),log_event)

        if len(records) > 499:
            firehose_return = firehose.put_record_batch(
                DeliveryStreamName = 'streamname   ',
                Records = records
            )
            print_result(firehose_return)
            records = []

    if len(records) > 0:
        firehose_return = firehose.put_record_batch(
            DeliveryStreamName = 'streamname',
            Records = records
)

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