Copia de piezas
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, puede hacer una invocación 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 realiza correctamente solo en función del status_code en el encabezado HTTP devuelto. Si se devuelve 200 para status_code, el servidor ha recibido la solicitud y ha comenzado a procesarla. La copia solo tiene éxito cuando el cuerpo de la respuesta contiene ETag.
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, solo 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.
Obejots de Archive
Si los objetos de origen están en la clase de almacenamiento de Archive, asegúrese de que se han restaurado antes de copiarlos. 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: La operación no es válida para la clase de almacenamiento del objeto de origen
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 tareas de carga de varias piezas. Tabla 1 describe los parámetros.
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.
Encabezado |
Descripción |
Obligatorio |
---|---|---|
x-obs-copy-source |
Indica el objeto de origen que se va a copiar. Tipo: string |
Sí |
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 |
Indica el algoritmo de encriptación para la copia de pieza cuando se utiliza SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-algorithm:AES256 Restricción: Este encabezado debe usarse junto con x-obs-server-side-encryption-customer-key y x-obs-server-side-encryption-customer-key-MD5. |
No. Este encabezado se requiere cuando se utiliza SSE-C. El algoritmo de encriptación debe ser el mismo que el utilizado para iniciar tareas de carga de varias partes. |
x-obs-server-side-encryption-customer-key |
Indica la clave para cifrar la copia de pieza cuando se utiliza SSE-C. Tipo: string Ejemplo: x-obs-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= Restricción: 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. |
No. Este encabezado se requiere 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 la clave para cifrar la copia de pieza cuando se utiliza 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== Restricción: Este encabezado es un valor MD5 de 128 bits codificado en Base64 y debe usarse junto con x-obs-server-side-encryption-customer-algorithm y x-obs-server-side-encryption-customer-key. |
No. Este encabezado se requiere 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 el algoritmo para el objeto de origen cuando se utiliza SSE-C. Tipo: string Ejemplo: x-obs-copy-source-server-side-encryption-customer-algorithm:AES256 Restricción: 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. |
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 |
Indica la clave para descifrar el objeto de origen cuando se utiliza SSE-C. Tipo: string Ejemplo: x-obs-copy-source-server-side-encryption-customer-key:K7QkYpBkM5+hca27fsNkUnNVaobncnLht/rCB2o/9Cw= Restricción: 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-server-side-encryption-customer-key-MD5. |
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 para el objeto de origen cuando se utiliza 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== Restricción: Este encabezado es un valor MD5 de 128 bits codificado en Base64 y debe usarse junto con x-obs-copy-source-server-side-encryption-customer-algorithm y x-obs-copy-source-server-side-encryption-customer-key. |
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.
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 indica el ID de la región a la que pertenece la clave. domainID indica el ID del tenant al que pertenece la clave. key_id indica 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.
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
- Si la AK o la firma no son válidas, OBS devuelve 403 Forbidden y el código de error es AccessDenied.
- 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.
- Si el objeto de origen no existe, OBS devuelve 404 Not Found y el código de error es NoSuchKey.
- 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.
- 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.
- Si la tarea especificada no existe, OBS devuelve 404 Not Found y el código de error es NoSuchUpload.
- Si el usuario no es el iniciador de la tarea de carga de varias partes, OBS devuelve 403 Forbidden y el código de error es AccessDenied.
- Cuando el tamaño de un artículo copiado supera los 5 GB, OBS devuelve 400 Bad Request.
- Si un número de pieza no se encuentra 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> |