уже сохраненные сжатые данные S3 в ElasticSearch Aws - PullRequest
0 голосов
/ 28 октября 2019

Я провел некоторое исследование о том, как перенести сжатые данные S3 в Elasticsearch. На веб-сайте Aws есть информация, где вы можете создать лямбду, которая разархивирует файл и повторно загрузит его, а затем переместит в ES. Сейчас, поскольку у меня не слишком большой набор данных, я загружаю данные на локальный компьютер и отправляю их в ElasticSearch в правильном формате. Оба метода кажутся неэффективными, и мне интересно, есть ли способ разархивировать файл, затем переместить его в Elasticsearch без загрузки или повторной загрузки данных.

Прямо сейчас это мой код:

s3 = boto3.resource('s3')
s3.Bucket(bucket).download_file(key, 'download_path')
ip_pattern = re.compile('(\d+\.\d+\.\d+\.\d+)')
time_pattern = re.compile('\[(\d+\/\w\w\w\/\d\d\d\d:\d\d:\d\d:\d\d\s\+\d\d\d\d)\]')
message_pattern = re.compile('\"(.+)\"')

with gzip.open('download_path') as files:
    data = ""

    document = {}
    for line in files:
        line = line.decode("utf-8") # decode byte to str

        ip = ip_pattern.search(line).group(0)
        timestamp = time_pattern.search(line).group(0)
        message = message_pattern.search(line).group(0)

        document = { "ip": ip, "timestamp": timestamp, "message": message }

Если нет лучшего способа, я буду использовать приведенный выше код.

1 Ответ

0 голосов
/ 28 октября 2019

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

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

или

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

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

Распакуйте zip-файлы из S3

...