Copiar un objeto en un bucket de directorio - Amazon Simple Storage Service

Copiar un objeto en un bucket de directorio

La operación de copia crea una copia de un objeto que ya esté almacenado en Amazon S3. Puede copiar objetos entre buckets de directorio y buckets de uso general. También puede copiar objetos dentro de un bucket y entre buckets del mismo tipo, por ejemplo, de un bucket de directorio a otro.

Puede crear una copia de un objeto de hasta 5 GB en una única operación atómica. Sin embargo, para copiar un objeto mayor de 5 GB, debe usar las operaciones de la API de carga multiparte. Para obtener más información, consulte Uso de las cargas multiparte con buckets de directorio.

Permisos

Para copiar objetos, debe tener los siguientes permisos:

  • Para copiar objetos de un bucket de directorio a otro bucket de directorio, debe disponer del permiso s3express:CreateSession.

  • Para copiar objetos de buckets de directorio a buckets de uso general, debe tener el permiso s3express:CreateSession y el permiso s3:PutObject para escribir la copia del objeto en el bucket de destino.

  • Para copiar objetos de buckets de uso general en buckets de directorio, debe tener el permiso s3express:CreateSession y el permiso s3:GetObject para leer el objeto de origen que se está copiando.

    Para obtener más información, consulte CopyObject en la Referencia de la API de Amazon Simple Storage Service.

Cifrado

Amazon S3 cifra automáticamente todos los objetos nuevos que se cargan a un bucket de S3. La configuración de cifrado predeterminada de un bucket de S3 siempre está activada y, como mínimo, se establece en el cifrado del servidor con claves administradas de Amazon S3 (SSE-S3).

Para los buckets de directorio, se admiten SSE-S3 y el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Cuando el bucket de destino es un bucket de directorio, se recomienda que el cifrado predeterminado del bucket de destino utilice la configuración de cifrado deseada y que no se invalide el cifrado predeterminado del bucket. A continuación, los objetos nuevos se cifran automáticamente con la configuración de cifrado deseada. Además, las claves de bucket de S3 no son compatibles, cuando se copian objetos cifrados con SSE-KMS de buckets de uso general a buckets de directorio, de buckets de directorio a buckets de uso general o entre buckets de directorio, mediante CopyObject. En ese caso, Amazon S3 realiza una llamada a AWS KMS cada vez que se realiza una solicitud de copia para un objeto cifrado con KMS. Para obtener más información sobre los comportamientos de invalidación del cifrado en los buckets de directorio, consulte Especificación del cifrado del servidor con AWS KMS para cargas de objetos nuevos.

Para buckets de uso general, puede utilizar SSE-S3 (predeterminado), el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), el cifrado del servidor de doble capa con claves de AWS KMS (DSSE-KMS) o el cifrado del servidor con claves proporcionadas por el cliente (SSE-C).

Si hace una solicitud de copia que especifica el uso de DSSE-KMS o SSE-C para un bucket de directorio (bucket de origen o destino), la respuesta devuelve un error.

Etiquetas

Los buckets de directorio no admiten etiquetas. Si copia un objeto que tiene etiquetas de un bucket de uso general a un bucket de directorio, recibirá una respuesta HTTP 501 (Not Implemented). Para obtener más información, consulte CopyObject en la Referencia de la API de Amazon Simple Storage Service.

ETags

Las etiquetas de entidad (ETag) para S3 Express One Zone son cadenas alfanuméricas aleatorias, no sumas de comprobación MD5. Para garantizar la integridad del objeto, utilice sumas de comprobación adicionales.

Sumas de comprobación adicionales

S3 Express One Zone le ofrece la opción de elegir el algoritmo de suma de comprobación que se utiliza para validar los datos durante la carga o descarga. Puede seleccionar uno de los siguientes algoritmos de comprobación de integridad de datos Secure Hash Algoritms (SHA) o Cyclic Redundancy Check (CRC): CRC32, CRC32C, SHA-1 y SHA-256. Las sumas de comprobación basadas en MD5 no son compatibles con la clase de almacenamiento S3 Express One Zone.

Para obtener más información, consulte Prácticas recomendadas adicionales para la suma de comprobación de S3.

Características admitidas

Para obtener información sobre las características de Amazon S3 compatibles con S3 Express One Zone, consulte Descripción de las diferencias de S3 Express One Zone.

nota

Las restricciones y limitaciones a la hora de copiar un objeto en un bucket de directorio con la consola son las siguientes:

  • La acción Copy se aplica a todos los objetos de las carpetas especificadas (prefijos). Es posible que afecte a los objetos agregados a estas carpetas mientras la acción esté en curso.

  • Los objetos cifrados con claves de cifrado proporcionadas por el cliente (SSE-C) no se pueden copiar usando la consola de S3. Para copiar objetos cifrados con SSE-C, utilice la AWS CLI, el SDK de AWS o la API REST de Amazon S3.

  • Los objetos copiados no retendrán la configuración de Bloqueo de objetos de los objetos originales.

  • Si el bucket del que está copiando objetos utiliza la configuración aplicada por el propietario del bucket en Propiedad de objetos de S3, las ACL de los objetos no se copiarán en el destino especificado.

  • Si quiere copiar objetos a un bucket que utilice la configuración aplicada por el propietario del bucket en Propiedad de objetos de S3, asegúrese de que el bucket de origen también utilice la configuración aplicada por el propietario del bucket, o bien elimine cualquier objeto que la ACL conceda a otras cuentas de AWS y grupos.

  • Los objetos copiados de un bucket de uso general a un bucket de directorio no conservarán las etiquetas de objeto, las ACL ni los valores de Etag. Los valores de las sumas de comprobación se pueden copiar, pero no son equivalentes a los de una Etag. El valor de la suma de comprobación puede cambiar en comparación con el momento en que se añadió.

  • Todos los objetos copiados a un bucket de directorio tendrán la configuración aplicada por el propietario del bucket para Propiedad de objetos de S3.

Cómo copiar un objeto de un bucket de uso general o de un bucket de directorio a un bucket de uso general
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. Elija el bucket desde el que desea copiar objetos:

    • Para copiar desde un bucket de uso general, elija la pestaña Buckets de uso general.

    • Para copiar desde un bucket de directorio, seleccione la pestaña Buckets de directorio.

  4. Elija el bucket de uso general o el bucket de directorio que contenga los objetos que desea copiar.

  5. Elija la pestaña Objetcts (Objetos). En la página Objetos, seleccione la casilla de verificación situada a la izquierda de los nombres de los objetos que desea copiar.

  6. En el menú Actions (Acciones), elija Copy (Copiar).

    Aparece la página Copiar.

  7. En Destino, seleccione Bucket de directorio para el tipo de destino. Para especificar la ruta de destino, seleccione Examinar S3, desplácese hasta el destino y seleccione el botón de opción situado a la izquierda del destino. Seleccione Elegir destino en la esquina inferior derecha.

    También puede escribir la ruta de destino.

  8. En Configuración de copia adicional, elija si desea Copiar la configuración de origen, No especificar la configuración o Especificar la configuración. Copiar la configuración de origen es la opción predeterminada. Si solo desea copiar el objeto sin los atributos de configuración de origen, elija No especificar la configuración. Elija Especificar la configuración para especificar la configuración del cifrado del servidor, las sumas de comprobación y los metadatos.

  9. En la esquina inferior derecha, elija Copiar. Amazon S3 copia el objeto en el destino.

nota

Las restricciones y limitaciones a la hora de copiar un objeto en un bucket de uso general con la consola son las siguientes:

  • La acción Copy se aplica a todos los objetos de las carpetas especificadas (prefijos). Es posible que afecte a los objetos agregados a estas carpetas mientras la acción esté en curso.

  • Los objetos cifrados con claves de cifrado proporcionadas por el cliente (SSE-C) no se pueden copiar usando la consola de S3. Para copiar objetos cifrados con SSE-C, utilice la AWS CLI, el SDK de AWS o la API REST de Amazon S3.

  • Los objetos copiados no retendrán la configuración de Bloqueo de objetos de los objetos originales.

  • Si el bucket del que está copiando objetos utiliza la configuración aplicada por el propietario del bucket en Propiedad de objetos de S3, las ACL de los objetos no se copiarán en el destino especificado.

  • Si quiere copiar objetos a un bucket que utilice la configuración aplicada por el propietario del bucket en Propiedad de objetos de S3, asegúrese de que el bucket de origen también utilice la configuración aplicada por el propietario del bucket, o bien elimine cualquier objeto que la ACL conceda a otras cuentas de AWS y grupos.

Para copiar un objeto de un bucket de directorio a un bucket de uso general
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, elija Instancias.

  3. Seleccione la pestaña Buckets de directorio.

  4. Elija el bucket de directorio que contiene los objetos que desea copiar.

  5. Elija la pestaña Objetcts (Objetos). En la página Objetos, seleccione la casilla de verificación situada a la izquierda de los nombres de los objetos que desea copiar.

  6. En el menú Actions (Acciones), elija Copy (Copiar).

  7. En Destino, seleccione Bucket de uso general para el tipo de destino. Para especificar la ruta de destino, elija Examinar S3, desplácese hasta el destino y seleccione el botón de opción situado a la izquierda del destino. Seleccione Elegir destino en la esquina inferior derecha.

    También puede escribir la ruta de destino.

  8. En Configuración de copia adicional, elija si desea Copiar la configuración de origen, No especificar la configuración o Especificar la configuración. Copiar la configuración de origen es la opción predeterminada. Si solo desea copiar el objeto sin los atributos de configuración de origen, elija No especificar la configuración. Elija Especificar la configuración para especificar la configuración de la clase de almacenamiento, las ACL, las etiquetas de objetos, los metadatos, el cifrado del servidor y las sumas de comprobación adicionales.

  9. En la esquina inferior derecha, elija Copiar. Amazon S3 copia el objeto en el destino.

SDK for Java 2.x
public static void copyBucketObject (S3Client s3, String sourceBucket, String objectKey, String targetBucket) { CopyObjectRequest copyReq = CopyObjectRequest.builder() .sourceBucket(sourceBucket) .sourceKey(objectKey) .destinationBucket(targetBucket) .destinationKey(objectKey) .build(); String temp = ""; try { CopyObjectResponse copyRes = s3.copyObject(copyReq); System.out.println("Successfully copied " + objectKey +" from bucket " + sourceBucket +" into bucket "+targetBucket); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

En el siguiente ejemplo de copy-object se muestra cómo puede usar la AWS CLI para copiar un objeto de un bucket a otro. Puede copiar objetos entre tipos de buckets. Para ejecutar este comando, sustituya los marcadores de posición de entrada del usuario con su propia información.

aws s3api copy-object --copy-source SOURCE_BUCKET/SOURCE_KEY_NAME --key TARGET_KEY_NAME --bucket TARGET_BUCKET_NAME

Para obtener más información, consulte copy-object en la Referencia de los c‎omandos de AWS CLI.