Boto3 / S3: Renombrar un objeto usando copiar objeto


Estoy tratando de cambiar el nombre de un archivo en mi bucket s3 usando python boto3, no pude entender claramente los argumentos. ¿alguien puede ayudarme?

Lo que estoy planeando es copiar el objeto a un nuevo objeto, y luego eliminar el objeto real.

He encontrado preguntas similares aquí, pero necesito una solución usando boto3.

Author: Flimm, 2015-09-10

3 answers

Encontré otra solución

s3 = boto3.resource('s3')
s3.Object('my_bucket','my_file_new').copy_from(CopySource='my_bucket/my_file_old')
s3.Object('my_bucket','my_file_old').delete()
 48
Author: MikA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-10 14:05:44

No puede cambiar el nombre de los objetos en S3, por lo que, como ha indicado, debe copiarlo a un nuevo nombre y luego eliminar el antiguo:

client.copy_object(Bucket="BucketName", CopySource="BucketName/OriginalName", Key="NewName")
client.delete_object(Bucket="BucketName", Key="OriginalName")
 30
Author: Boto User,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-08 14:03:09

Siguiendo ejemplos de la documentación actualizada de Boto3 para el método copy(), que también funciona con copy_object () y parece ser la sintaxis requerida ahora:

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')

Nota de la documentación vinculada anteriormente:

CopySource (dict) The El nombre del bucket de origen, el nombre de la clave del objeto de origen y el ID de versión opcional del objeto de origen. El formato del diccionario es: {'Bucket': 'bucket', 'Key': 'key', 'VersionID': 'id'}. Tenga en cuenta que la clave VersionID es opcional y puede omitirse.

 3
Author: jpgard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-24 23:07:41