Ответ 1
Я нашел другое решение
s3 = boto3.resource('s3')
s3.Object('my_bucket','new_file_key').copy_from(CopySource='my_bucket/old_file_key')
s3.Object('my_bucket','old_file_key').delete()
Я пытаюсь переименовать файл в моем s3-ведре с помощью python boto3, я не мог четко понять аргументы. может кто-нибудь помочь мне здесь?
То, что я планирую, это скопировать объект в новый объект, а затем удалить фактический объект.
Здесь я нашел похожие вопросы, но мне нужно решение с помощью boto3.
Я нашел другое решение
s3 = boto3.resource('s3')
s3.Object('my_bucket','new_file_key').copy_from(CopySource='my_bucket/old_file_key')
s3.Object('my_bucket','old_file_key').delete()
Вы не можете переименовать объекты в S3, так как вы указали, вам нужно скопировать его на новое имя и затем удалить старый:
client.copy_object(Bucket="BucketName", CopySource="BucketName/OriginalName", Key="NewName")
client.delete_object(Bucket="BucketName", Key="OriginalName")
Следующие примеры из обновленной документации Boto3 для метода copy(), который также работает с copy_object() и теперь является необходимым синтаксисом:
copy_source = {'Bucket': 'source__bucket', 'Key': 'my_folder/my_file'}
s3.copy_object(CopySource = copy_source, Bucket = 'dest_bucket', Key = 'new_folder/my_file')
s3.delete_object(Bucket = 'source_bucket', Key = 'my_folder/my_file')
Примечание из документации, указанной выше:
CopySource (dict) - имя исходного сегмента, имя ключа исходного объекта и необязательный идентификатор версии исходного объекта. Формат словаря: {'Bucket': 'bucket', 'Key': 'key', 'VersionId': 'id'}. Обратите внимание, что ключ VersionId является необязательным и может быть опущен.