#python #amazon-web-services #amazon-s3 #aws-lambda #boto3
#python #amazon-веб-сервисы #amazon-s3 #aws-лямбда #бото3 #aws-lambda #boto3
Вопрос:
Если нам нужно полностью заменить existing file
указанный путь к папке s3 на другой файл (with different filename)
, используя python (lambda)
В любой момент времени конкретный путь к папке в s3 содержал бы только один файл, который был бы полностью заменен другим при запуске кода python
Какую функцию boto можно было бы использовать для вышеуказанного. Спасибо!
Комментарии:
1. Что вы подразумеваете под «заменой файла другим именем файла»? Если у него другое имя файла, значит, это другой файл, так что же вы подразумеваете под «заменить»? Вы хотите просто удалить существующий файл при загрузке нового файла?
2. В этом случае вы бы использовали
delete_object()
иupload_file()
.3. То, что вы описываете, не является обновлением файла. Файл «обновляется», если загружен файл с тем же именем . То, что вы описываете, — это загрузка совершенно другого файла (потому что у него другое имя), поэтому ничего не «обновляется». Это все равно, что просить «обновить» автомобиль Ford до автомобиля Toyota, когда транзакция действительно включает продажу одного автомобиля и покупку другого.
Ответ №1:
Чтобы сделать это, вам просто нужно вызвать функцию upload_object, которая на самом деле является оболочкой для функции put_object.
Вызов функции будет выглядеть следующим образом.
import boto3
s3 = boto3.resource('s3')
s3.meta.client.upload_file('/tmp/hello.txt', 'mybucket', 'replace/this/file.txt')
Пока у вас не включено управление версиями объектов, оно заменит предыдущий объект, который существовал для этого ключа ранее.
.
Комментарии:
1. Спасибо за ваш ответ @Chris Williams, управление версиями объекта не включено, однако простой upload_file, похоже, не заменяет предыдущий объект, когда новое загружаемое имя файла отличается.
2. Вы на 100% уверены, что ключ тот же самый? И работает ли это для новых объектов?