Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2023-07-11 GMT+08:00

Carga de una parte de Object - Copy

Funciones

Después de crear un trabajo de carga de varias piezas, puede especificar su ID de carga y cargar una pieza en el trabajo en OBS. Alternativamente, puedes hacer una llamada a la API para agregar una parte (parte de un objeto o todo el objeto).

Esta operación admite la encriptación del lado del servidor.

No se puede determinar si una solicitud se ejecuta correctamente solo con status_code en el encabezado HTTP devuelto. Si se devuelve 200 en status_code, el servidor ha recibido la solicitud y comienza a procesar la solicitud. El cuerpo de la respuesta muestra si la solicitud se ejecuta correctamente. La solicitud se ejecuta correctamente solo cuando el cuerpo contiene ETag; de lo contrario, la solicitud no se puede ejecutar.

Copie el objeto de origen y guárdelo como part1. Si ya existe una part1 antes de la copia, la part1 original se sobrescribirá por la part1 recién copiada. Una vez que la copia se realiza correctamente, sólo se muestra la última part1. Los datos antiguos de la part1 se eliminarán. Por lo tanto, asegúrese de que la pieza de destino no existe o no tiene valor cuando se utiliza la operación de copia de pieza. De lo contrario, los datos pueden ser eliminados por error. El objeto de origen en el proceso de copia no cambia.

Objetos de Archive de OBS

Si los objetos de origen son objetos Archive, compruebe el estado de restauración de los objetos. Estos objetos sólo se pueden copiar después de que se hayan restaurado. Si el objeto de origen no se restaura o se está restaurando, la copia falla y se devuelve el error 403 Forbidden. El fallo se describe de la siguiente manera:

ErrorCode: InvalidObjectState

ErrorMessage: Operation is not valid for the source object's storage class

Sintaxis de solicitud

PUT /ObjectName?partNumber=partNum&uploadId=UploadID HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
Date: date
x-obs-copy-source: sourceobject
x-obs-copy-source-range:bytes=start-end
Authorization: authorization
Content-Length: length

Parámetros de solicitud

Para copiar una pieza, debe especificar el número de pieza de la pieza de destino y el número de tarea de carga de varias piezas. Tabla 1 describe los parámetros.

Tabla 1 Parámetros de solicitud

Parámetro

Descripción

Obligatorio

partNumber

Indica el ID de un artículo que se va a cargar.

Tipo: integer

uploadId

Indica un ID de carga de varias partes.

Tipo: string

Encabezados de solicitud

Además de los encabezados de mensaje comunes, la solicitud utiliza dos encabezados extendidos. Tabla 3 describe el encabezado de mensaje común.

Tabla 2 Encabezados de solicitud

Encabezado

Descripción

Obligatorio

x-obs-copy-source

Indica el objeto de origen que se va a copiar.

Tipo: string

x-obs-copy-source-range

Indica el rango de bytes (start - end) que se van a copiar del objeto de origen. start indica el byte inicial de la pieza que se va a copiar y end indica el byte final.

Tipo: integer

No

x-obs-server-side-encryption-customer-algorithm

Indicates an algorithm used to encrypt a destination part. La cabecera se utiliza en modo SSE-C.

Tipo: string

Ejemplo: x-obs-server-side-encryption-customer-algorithm:AES256

Restricciones: Este encabezado debe usarse junto con x-obs-server-side-encryption-customer-key y x-obs-server-side-encryption-customer-key-MD5.

Si cualquier proceso es anormal: Este encabezado es necesario cuando se utiliza SSE-C. El algoritmo de encriptación debe ser el mismo que el algoritmo utilizado para iniciar tareas de carga multiparte.

x-obs-server-side-encryption-customer-key

Indica una clave utilizada para cifrar un artículo de destino. La cabecera se utiliza en modo SSE-C. Esta clave se utiliza para cifrar objetos.

Tipo: string

Ejemplo: x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw=

Restricciones: Este encabezado es una clave de 256 bits codificada en Base64 y debe usarse junto con x-obs-server-side-encryption-customer-algorithm y x-obs-server-side-encryption-customer-key-MD5.

Si selecciona No, este encabezado es necesario cuando se utiliza SSE-C. La clave debe ser la misma que se utiliza para iniciar tareas de carga de varias partes.

x-obs-server-side-encryption-customer-key-MD5

Indica el valor MD5 de una clave utilizada para cifrar una pieza de destino. La cabecera se utiliza en modo SSE-C. El valor MD5 se utiliza para comprobar si se produce algún error durante la transmisión de la clave.

Tipo: string

Ejemplo: x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

Restricciones: Este encabezado es una string codificada en Base64 de 128 bits y debe usarse junto con x-obs-server-side-encryption-customer-algorithm y x-obs-server-side-encryption-customer-key.

Si cualquier proceso es anormal: Este encabezado es necesario cuando se utiliza SSE-C. El valor MD5 debe ser el mismo que el utilizado para iniciar tareas de carga de varias partes.

x-obs-copy-source-server-side-encryption-customer-algorithm

Indica un algoritmo utilizado por un objeto de origen. La cabecera se utiliza en modo SSE-C.

Tipo: string

Ejemplo: x-obs-copy-source-server-side-encryption-customer-algorithm:AES256

Restricciones: Este encabezado debe usarse junto con x-obs-copy-source-server-side-encryption-customer-key y x-obs-copy-source-server-side-encryption-customer-key-MD5.

Si cualquier proceso es anormal: Este encabezado es necesario cuando se utiliza SSE-C para copiar un objeto de origen.

x-obs-copy-source-server-side-encryption-customer-key

Indica el algoritmo utilizado para descifrar el objeto de origen. La cabecera se utiliza en modo SSE-C.

Tipo: string

Ejemplo: x-obs-copy-source-server-side-encryption-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw=

Restricciones: Este encabezado es una clave de 256 bits codificada en Base64 y debe usarse junto con x-obs-copy-source-server-side-encryption-customer-algorithm y x-obs-copy-source- servidor-encryption-cliente-clave-MD5.

Si selecciona No, este encabezado es necesario cuando se utiliza SSE-C para copiar un objeto de origen.

x-obs-copy-source-server-side-encryption-customer-key-MD5

Indica el valor MD5 de la clave utilizada para el objeto de origen. La cabecera se utiliza en modo SSE-C. El valor MD5 se utiliza para comprobar si se produce algún error durante la transmisión de la clave.

Tipo: string

Ejemplo: x-obs-copy-source-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

Restricciones: Este encabezado es una string codificada en Base64 de 128 bits y debe usarse junto con x-obs-copy-source-server-side-encryption-customer-algorithm y x-obs-copy-source- servidor-encryption-cliente-clave-MD5.

Si selecciona No, este encabezado es necesario cuando se utiliza SSE-C para copiar un objeto de origen.

Elementos de solicitud.

Esta solicitud no implica ningún elemento.

Sintaxis de respuesta

HTTP/1.1 status_code
Date: date

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<CopyPartResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
> 
    <LastModified>modifiedDate</LastModified>  
    <ETag>etag</ETag> 
</CopyPartResult>

Encabezados de respuesta

La respuesta a la solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 1.

Tabla 3 Cabeceras de respuesta adicionales

Encabezado

Descripción

x-obs-server-side-encryption

Este encabezado se incluye en una respuesta si se utiliza SSE-KMS.

Tipo: string

Ejemplo: x-obs-server-side-encryption:kms

x-obs-server-side-encryption-kms-key-id

Indica el ID de clave principal. Este encabezado se incluye en una respuesta si se utiliza SSE-KMS.

Tipo: string

Formato: regionID:domainID:key/key_id

regionID es el ID de la región a la que pertenece la clave. domainID es el ID de cuenta del tenant al que pertenece la clave. key_id es el ID de clave utilizado en esta encriptación.

Ejemplo: x-obs-server-side-encryption-kms-key-id:region:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0

x-obs-server-side-encryption-customer-algorithm

Indica un algoritmo de encriptación. Este encabezado se incluye en una respuesta si se utiliza SSE-C.

Tipo: string

Ejemplo: x-obs-server-side-encryption-customer-algorithm:AES256

x-obs-server-side-encryption-customer-key-MD5

Indica el valor MD5 de una clave utilizada para cifrar objetos. Este encabezado se incluye en una respuesta si se utiliza SSE-C.

Tipo: string

Ejemplo: x-obs-server-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

Elementos de respuesta

Esta respuesta contiene elementos del resultado de una copia de pieza. Tabla 4 describe los elementos.

Tabla 4 Elementos de respuesta

Elemento

Descripción

LastModified

Indica la última vez que se modificó un objeto.

Tipo: string

ETag

Valor ETag de la parte objetivo. Es el identificador único del contenido de la pieza y se utiliza para verificar la coherencia de los datos al fusionar piezas.

Tipo: string

Respuestas de error

  1. Si el AK o la firma no son válidos, OBS devuelve 403 Forbidden y el código de error es "AccessDenied".
  2. Compruebe si existe el bucket de origen o el bucket de destino. Si el bucket de origen o el bucket de destino no existe, OBS devuelve 404 Not Found y el código de error es "NoSuchBucket".
  3. Si el objeto de origen no existe, OBS devuelve 404 Not Found y el código de error es "NoSuchKey".
  4. Si el usuario no tiene el permiso de lectura para el objeto especificado, OBS devuelve 403 Forbidden y el código de error es "AccessDenied".
  5. Si el usuario no tiene el permiso de escritura para el bucket de destino, OBS devuelve 403 Forbidden y el código de error es "AccessDenied".
  6. Si la tarea especificada no existe, OBS devuelve 404 Not Found y el código de error es "NoSuchUpload".
  7. Si el usuario no es el iniciador de la tarea de carga de múltiples partes, OBS devuelve 403 Forbidden y el código de error es de AccessDenied.
  8. Cuando el tamaño de un artículo copiado supera los 5 GB, OBS devuelve 400 Bad Request.
  9. Si el número de secuencia de pieza no está dentro del rango de 1 a 10000, OBS devuelve el código de error 400 Bad Request.

Otros errores se incluyen en Tabla 2.

Modelo de solicitud

PUT /tobject02?partNumber=2&uploadId=00000163D40171ED8DF4050919BD02B8 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 05:16:32 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:dSnpnNpawDSsLg/xXxaqFzrAmMw=
x-obs-copy-source: /destbucket/object01

Modelo de respuesta

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D40ABBD20405D30B0542
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTIJpD2efLy5o8sTTComwBb2He0j11Ne
Content-Type: application/xml
Date: WED, 01 Jul 2015 05:16:32 GMT
Transfer-Encoding: chunked

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CopyPartResult xmlns="http://obs.ap-southeast-1.myhuaweicloud.com/doc/2015-06-30/">
  <LastModified>2015-07-01T05:16:32.344Z</LastModified>
  <ETag>"3b46eaf02d3b6b1206078bb86a7b7013"</ETag>
</CopyPartResult>