View a markdown version of this page

CopyObject (API de SOAP) - Amazon Simple Storage Service

CopyObject (API de SOAP)

nota

Las API de SOAP para Amazon S3 no están disponibles para nuevos clientes y se acercan al fin de la vida útil (EOL) el 31 de agosto de 2025. Le recomendamos que utilice la API de REST o los SDK de AWS.

Descripción

La operación CopyObject crea una copia de un objeto al especificar la clave y el bucket de un objeto de origen y la clave y el bucket de un destino.

Al copiar un objeto, puede conservar todos los metadatos (opción predeterminada) o especificar metadatos nuevos. Sin embargo, la ACL no se conserva y se establece en private para el usuario que realiza la solicitud. Para invalidar la configuración de ACL predeterminada, especifique una nueva ACL al generar una solicitud de copia. Para obtener más información, consulte Uso de ACL.

Todas las solicitudes de copia se deben autenticar. Además, debe tener acceso de lectura al objeto de origen y de escritura al bucket de destino. Para obtener más información, consulte Uso de la autenticación de acceso.

Para copiar un objeto solo en determinadas condiciones, por ejemplo, si la ETag coincide o si el objeto se modificó antes o después de una fecha específica, use los parámetros de solicitud CopySourceIfUnmodifiedSince, CopyIfUnmodifiedSince, CopySourceIfMatch o CopySourceIfNoneMatch.

nota

Puede que necesite configurar el tiempo de espera del socket de la pila de SOAP para copiar objetos grandes.

Sintaxis de la solicitud

<CopyObject xmlns="http://bucket_name.s3.amazonaws.com/2006-03-01"> <SourceBucket>source_bucket</SourceBucket> <SourceObject>source_object</SourceObject> <DestinationBucket>destination_bucket</DestinationBucket> <DestinationObject>destination_object</DestinationObject> <MetadataDirective>{REPLACE | COPY}</MetadataDirective> <Metadata> <Name>metadata_name</Name> <Value>metadata_value</Value> </Metadata> ... <AccessControlList> <Grant> <Grantee xsi:type="user_type"> <ID>user_id</ID> <DisplayName>display_name</DisplayName> </Grantee> <Permission>permission</Permission> </Grant> ... </AccessControlList> <CopySourceIfMatch>etag</CopySourceIfMatch> <CopySourceIfNoneMatch>etag</CopySourceIfNoneMatch> <CopySourceIfModifiedSince>date_time</CopySourceIfModifiedSince> <CopySourceIfUnmodifiedSince>date_time</CopySourceIfUnmodifiedSince> <AWSAccessKeyId>AWSAccessKeyId</AWSAccessKeyId> <Timestamp>TimeStamp</Timestamp> <Signature>Signature</Signature> </CopyObject>

Parámetros de la solicitud

Nombre Descripción Obligatorio
SourceBucket

El nombre del bucket de origen.

Tipo: cadena

Valor predeterminado: None

Restricciones: un bucket de origen válido.

SourceKey

El nombre de la clave del objeto de origen.

Tipo: cadena

Valor predeterminado: None

Restricciones: la clave de un objeto de origen válido al que tiene acceso de READ.

DestinationBucket

El nombre del bucket de de destino.

Tipo: cadena

Valor predeterminado: None

Restricciones: debe tener acceso de WRITE al bucket de destino.

DestinationKey

La clave del objeto de destino.

Tipo: cadena

Valor predeterminado: None

Restricciones: debe tener acceso de WRITE al bucket de destino.

MetadataDirective

Especifica si los metadatos se copian del objeto de origen o se sustituyen por los metadatos proporcionados en la solicitud.

Tipo: cadena

Predeterminado: COPY

Valores válidos: COPY | REPLACE

Restricciones: los valores distintos de COPY o REPLACE producirán un error inmediato. No se puede copiar un objeto a sí mismo a menos que se especifique el encabezado MetadataDirective y se establezca su valor en REPLACE.

No
Metadata

Especifica los pares nombre-valor de los metadatos que se van a establecer para el objeto. Si MetadataDirective se establece en COPY, se ignoran todos los metadatos.

Tipo: cadena

Valor predeterminado: None

Restricciones: ninguna.

No
AccessControlList

Concede acceso a los usuarios mediante direcciones de correo electrónico o un ID de usuario canónico.

Tipo: cadena

Valor predeterminado: None

Restricciones: ninguna

No
CopySourceIfMatch

Copia el objeto si su etiqueta de entidad (ETag) coincide con la etiqueta especificada; de lo contrario, devuelve un PreconditionFailed.

Tipo: cadena

Valor predeterminado: None

Restricciones: ninguna. Si la ETag no coincide, el objeto no se copia.

No
CopySourceIfNoneMatch

Copia el objeto si su etiqueta de entidad (ETag) es diferente de la ETag especificada; de lo contrario, devuelve un error.

Tipo: cadena

Valor predeterminado: None

Restricciones: ninguna.

No
CopySourceIfUnmodifiedSince

Copia el objeto si no se ha modificado desde el momento especificado; de lo contrario, devuelve PreconditionFailed.

Tipo: dateTime

Valor predeterminado: none

No
CopySourceIfModifiedSince

Copia el objeto si se ha modificado desde el momento especificado; de lo contrario devuelve un error.

Tipo: dateTime

Valor predeterminado: none

No

Sintaxis de la respuesta

<CopyObjectResponse xmlns="http://bucket_name.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"etag"</ETag> <LastModified>timestamp</LastModified> </CopyObjectResponse> </CopyObjectResponse>

Elementos de respuesta

A continuación, se muestra una lista de elementos de respuesta.

nota

La API de SOAP no devuelve espacios en blanco adicionales. Los espacios en blanco adicionales solo los devuelve la API de REST.

Nombre Descripción
Etag

Devuelve la etag del nuevo objeto. La ETag solo refleja los cambios en el contenido de un objeto, no en los metadatos.

Tipo: cadena

Antecesor: CopyObjectResult

LastModified

Devuelve la fecha en la que se modificó el objeto por última vez.

Tipo: cadena

Antecesor: CopyObjectResult

Para obtener información sobre los elementos de respuesta generales, consulte Uso de encabezados de respuesta a errores de REST.

Errores especiales

No hay errores especiales para esta operación. Para obtener información acerca de errores de Amazon S3 generales, consulte Lista de códigos de error.

Ejemplos

En este ejemplo se copia el objeto flotsam desde el bucket pacific al objeto jetsam del bucket atlantic, conservando sus metadatos.

Solicitud de muestra

<CopyObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <SourceBucket>pacific</SourceBucket> <SourceObject>flotsam</SourceObject> <DestinationBucket>atlantic</DestinationBucket> <DestinationObject>jetsam</DestinationObject> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2008-02-18T13:54:10.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbq7RrtSFmw=</Signature> </CopyObject>

Respuesta de ejemplo

<CopyObjectResponse xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2008-02-18T13:54:10.183Z</LastModified> </CopyObjectResponse> </CopyObjectResponse>

En este ejemplo, se copia el objeto “tweedledee” del bucket de wonderland al objeto “tweedledum” del bucket de wonderland, lo que sustituye sus metadatos.

Solicitud de muestra

<CopyObject xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <SourceBucket>wonderland</SourceBucket> <SourceObject>tweedledee</SourceObject> <DestinationBucket>wonderland</DestinationBucket> <DestinationObject>tweedledum</DestinationObject> <MetadataDirective >REPLACE</MetadataDirective > <Metadata> <Name>Content-Type</Name> <Value>text/plain</Value> </Metadata> <Metadata> <Name>relationship</Name> <Value>twins</Value> </Metadata> <AWSAccessKeyId>AKIAIOSFODNN7EXAMPLE</AWSAccessKeyId> <Timestamp>2008-02-18T13:54:10.183Z</Timestamp> <Signature>Iuyz3d3P0aTou39dzbq7RrtSFmw=</Signature> </CopyObject>

Respuesta de ejemplo

<CopyObjectResponse xmlns="http://doc.s3.amazonaws.com/2006-03-01"> <CopyObjectResponse> <ETag>"828ef3fdfa96f00ad9f27c383fc9ac7f"</ETag> <LastModified>2008-02-18T13:54:10.183Z</LastModified> </CopyObjectResponse> </CopyObjectResponse>

Activos relacionados