Tengo un archivo contenido en una clave en mi cubo S3. Quiero crear una nueva clave, que contendrá el mismo archivo. ¿Es posible prescindir de descargar ese archivo? Estoy buscando una solución en Python (y preferiblemente biblioteca de boto).Cómo clonar una clave en Amazon S3 usando Python (y boto)?
Respuesta
S3 permite la copia objeto por objeto. La operación de CopyObject crea una copia de un objeto cuando se especifica la clave y el cubo de un objeto de origen y la clave y el cubo de un destino de destino. No estoy seguro si boto tiene una implementación compacta.
Al navegar por el código fuente de Boto encontré que el objeto Key tiene un método de "copia". Gracias por su sugerencia acerca de la operación de CopyObject.
Dónde cubo es el cubo de destino:
bucket.copy_key(new_key,source_bucket,source_key)
Esto realmente lee la clave y la coloca en el nuevo depósito, que no es lo que desea. Lo siento. –
No creo que esto sea exacto. Esta es la mejor respuesta IMO. El método 'copy_key' pasa el encabezado' x-amz-copy-source' en una solicitud PUT, que le dice a S3 que copie directamente de región a región, sin descargar a su máquina. – sergiopereira
Aquí están los documentos: http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.copy_key – creimers
Aunque nadie preguntó, pensé que podría ser relevante para mostrar cómo hacer esto con simples3
:
>>> b.copy("my_bucket/file.txt", "file_copy.txt", acl="public")
No estoy seguro de lo Boto lo hace aquí, pero vale la pena señalar que los permisos (ACL) serán no copiados por S3, se restablecerán a "privado" si no se especifica nada más. Para copiar la ACL, primero debe solicitarla.
En segundo lugar este comentario con respecto a los permisos (después de encontrar un error) 'dest_bucket .copy_key (key.name, src_bucket_name, key.name, preserve_acl = True) ' – nsof
Tenga en cuenta que el método 'copiar' en el objeto clave tiene un parámetro "preserve_acl" (falso de forma predeterminada) que copiará la ACL de la fuente al objeto de destino.
from boto.s3.key import Key
#Get source key from bucket by name
source_key = source_bucket.get_key(source_key_name)
#Copy source key to a new bucket with a new key name (can be the same as source)
#Note: source_key is Key
source_key.copy(dest_bucket_name,dest_key_name)
#The signature of boto's Key class:
def copy(self, dst_bucket, dst_key, metadata=None,
reduced_redundancy=False, preserve_acl=False,
encrypt_key=False, validate_dst_bucket=True)
#set preserve_acl=True to copy the acl from the source key
- 1. Amazon S3 boto: ¿cómo crear una carpeta?
- 2. Amazon S3 boto - cómo eliminar la carpeta?
- 3. Django Boto S3 Acceso
- 4. TypeError cargando el archivo de imagen a Amazon S3 en Django usando BOTO Library
- 5. Cómo generar una url temporal para subir archivos a Amazon S3 con la biblioteca de boto?
- 6. Amazon S3 boto: ¿Cómo se cambia el nombre de un archivo en un depósito?
- 7. Carga en Amazon S3 sin acceso y clave secreta
- 8. Amazon S3 y Checksum
- 9. Cómo cambiar los metadatos en un objeto en Amazon S3
- 10. git y Amazon s3
- 11. ¿Cómo puedo usar boto para transmitir un archivo de Amazon S3 a Rackspace Cloudfiles?
- 12. Concurrencia en Amazon S3
- 13. cómo eliminar una versión S3 de un cubo usando boto y pitón
- 14. Subiendo a Amazon S3 usando cURL/libcurl
- 15. Cómo definir permisos en Amazon S3
- 16. zcat en amazon s3
- 17. Arquitectura de Amazon S3
- 18. Paperclip y Amazon S3 ¿cómo hacer rutas?
- 19. Lectura de mensajes sin procesar desde Amazon SQS usando boto
- 20. Cómo leer video remoto en Amazon S3 usando ffmpeg
- 21. ¿Cómo puedo copiar clonar/duplicar una carpeta en S3?
- 22. ¿Cómo obtengo el tamaño del archivo/clave en el boto S3?
- 23. Crear una carpeta mediante s3cmd (Amazon S3)
- 24. Transferir archivos entre Amazon EC2 y S3
- 25. Permisos de Amazon S3
- 26. Encabezados personalizados en Amazon S3
- 27. python s3 usando boto, dice 'atributo error:' str 'objeto no tiene atributo' conexión '
- 28. SignatureDoesNotMatch - Amazon S3 API
- 29. Firma/Vencimiento/ID de clave de acceso que aparece en URL Params. Django/Boto/S3
- 30. Iniciar sesión en Amazon S3
Ayuda en el ejemplar método en el boto.s3.key módulo: 'copia (auto, dst_bucket, dst_key, metadatos = Ninguno, reduced_redundancy = False, preserve_acl = False, ENCRYPT_KEY = False)' método de boto. s3.key.Key instance Copie esta clave en otro depósito. –