Разархивируйте файл с S3, запишите в файл CSV и нажмите на S3 - PullRequest
1 голос
/ 06 марта 2019

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

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

Я использую Python для своей лямбды, и вот как мой код выглядит сейчас:

def lambda_handler(event, context):
s3 = boto3.client('s3', use_ssl = False)

s3.upload_fileobj(
    Fileobj = gzip.GzipFile(
        None,
        'rb',
        fileobj = BytesIO(
            s3.get_object(Bucket='bucketName', Key='key')['Body'].read())),
            Bucket ='bucketName',
            Key ='key')

1 Ответ

0 голосов
/ 06 марта 2019

Вам не нужно беспокоиться о запросе последнего объекта в S3.Просто используйте S3 Event , который запускает вашу функцию Lambda.

Это означает, что всякий раз, когда вы вызываете Lambda, он будет вызываться с последним вставленным объектом на S3, а следовательно, самым последним.

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