Aquí hay un código de ejemplo de copia de una clave S3. Hay muchas razones por las que puede querer hacer esto, una de las cuales es actualizar los metadatos clave. Y si bien esta parece ser la solución ampliamente aceptada para eso, hay un gran problema. El problema es cuando hago el ejemplo a continuación, en realidad pierdo mi Content-Type, que vuelve a ser 'application/octet-stream' (no es muy útil si se trata de publicar imágenes web).boto.s3: copy() en un objeto clave pierde metadatos 'Content-Type'
# Get bucket
conn = S3Connection(self._aws_key, self._aws_secret)
bucket = conn.get_bucket(self._aws_bucket)
# Create key
k = Key(bucket)
k.key = key
# Copy old key
k.metadata.update({ meta_key: meta_value })
k2 = k.copy(k.bucket.name, k.name, k.metadata, preserve_acl=True)
k = k2
¿Alguna idea? Gracias.
'copy' sólo se devuelve una copia superficial de un objeto. Intenta usar 'deepcopy'. –
@Joel: boto no proporciona una copia profunda. –