Возможно ли редактировать файлы в сегментах s3?

#python #python-3.x #amazon-s3 #boto3

#python #python-3.x #amazon-s3 #boto3

Вопрос:

У меня есть сегмент s3, в котором много файлов. Я пытаюсь просмотреть их все, а затем применить функцию фильтра (регулярное выражение), чтобы удалить содержимое, которое мне не нужно в каждом файле. Формат всех файлов одинаков, поэтому фильтрация будет одинаковой.

Вот структура ключей сегментов s3:

 o_key=7111/year=2020/month=8/day=11/hour=16/minute=46/second=9/ee9.jsonl.gz
o_key=7111/year=2020/month=8/day=11/hour=16/minute=40/second=1/ee99999.jsonl.gz
  

Есть ли функция s3, которая позволяет изменять файлы без создания нового файла?

 s3_resource = boto3.resource('s3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY,
                             verify=False, config=config)
bckt = s3_resource.Bucket(BUCKET_NAME)

for x in bckt.objects.all():
    #if the content in a key's path file has this in it:
        #remove its content and save the file
  

Довольно прямолинейно, однако я новичок в s3 и boto3, поэтому любые идеи или предложения помогут.

Ответ №1:

В s3 нет «обновления объекта». Все, что вам нужно сделать, это: перебирать объекты корзины, читать содержимое, манипулировать содержимым и воссоздавать объект, используя тот же ключ объекта. Я не вижу здесь никакой дополнительной ценности с использованием третьей стороны. Boto3 здесь должно быть достаточно.

Ответ №2:

Не изначально, но вы могли бы использовать проект Github, подобный этому, чтобы помочь вам:https://github.com/tsub/s3-edit/blob/master/README.md

Это выполняется из командной строки, если вам нужно сохранить его в Python, вы можете использовать модуль subprocess для запуска вышеупомянутого репозитория на Python, или вы могли бы поискать аналогичный проект, созданный специально для Python, я не смог его найти.