#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, я не смог его найти.