subir putobject name archivos amazon-s3 boto

putobject - Amazon S3 boto: ¿Cómo cambias el nombre de un archivo en un cubo?



subir archivos a amazon s3 (4)

¿Cómo se cambia el nombre de una clave S3 en un cubo con boto?


Aquí hay un ejemplo de una función de Python que copiará un objeto S3 usando Boto 2:

import boto def copy_object(src_bucket_name, src_key_name, dst_bucket_name, dst_key_name, metadata=None, preserve_acl=True): """ Copy an existing object to another location. src_bucket_name Bucket containing the existing object. src_key_name Name of the existing object. dst_bucket_name Bucket to which the object is being copied. dst_key_name The name of the new object. metadata A dict containing new metadata that you want to associate with this object. If this is None the metadata of the original object will be copied to the new object. preserve_acl If True, the ACL from the original object will be copied to the new object. If False the new object will have the default ACL. """ s3 = boto.connect_s3() bucket = s3.lookup(src_bucket_name) # Lookup the existing object in S3 key = bucket.lookup(src_key_name) # Copy the key back on to itself, with new metadata return key.copy(dst_bucket_name, dst_key_name, metadata=metadata, preserve_acl=preserve_acl)


No hay un método directo para cambiar el nombre del archivo en s3. lo que tienes que hacer es copiar el archivo existente con un nuevo nombre (simplemente establece la clave de destino) y eliminar el anterior. Gracias


No puede cambiar el nombre de los archivos en Amazon S3. Puede copiarlos con un nuevo nombre, luego eliminar el original, pero no hay una función de cambio de nombre adecuada.


//Copy the object AmazonS3Client s3 = new AmazonS3Client("AWSAccesKey", "AWSSecretKey"); CopyObjectRequest copyRequest = new CopyObjectRequest() .WithSourceBucket("SourceBucket") .WithSourceKey("SourceKey") .WithDestinationBucket("DestinationBucket") .WithDestinationKey("DestinationKey") .WithCannedACL(S3CannedACL.PublicRead); s3.CopyObject(copyRequest); //Delete the original DeleteObjectRequest deleteRequest = new DeleteObjectRequest() .WithBucketName("SourceBucket") .WithKey("SourceKey"); s3.DeleteObject(deleteRequest);