Completo de una carga de varias partes
Funciones
Después de cargar todas las partes para una carga de varias partes, puede utilizar esta operación para completarla. Antes de realizar esta operación, no puede descargar los datos cargados. Al fusionar partes, debe copiar la información adicional de encabezado de mensaje registrada durante la inicialización de la tarea de carga de varias partes en los metadatos del objeto. El proceso de tratamiento es el mismo que el del objeto de carga común con estos encabezados de mensaje. En el caso de fusionar partes simultáneamente, se debe seguir la política Last Write Win, pero el tiempo para iniciar la última escritura se especifica como el tiempo en que se inicia la carga de varias partes de una pieza.
Si no se ha cancelado una carga de varias partes, las partes cargadas ocupan su cuota de almacenamiento. Una vez que todas las partes de la carga de varias partes se fusionan con un objeto, solo el objeto ocupa su cuota de almacenamiento. Si una pieza cargada en una carga de varias piezas no se utiliza en ninguna carga de varias piezas de fusión, la pieza se eliminará para lanzar la cuota de almacenamiento.
Puede enviar una solicitud para descargar todos o algunos datos de la multiparte generada especificando un rango.
Puede enviar una solicitud para eliminar todas las piezas cargadas en una carga de varias piezas. Los datos eliminados no pueden restablecerse.
Las piezas combinadas no utilizan el valor MD5 de todo el objeto como ETag. Su ETag se calcula de la siguiente manera: MD5(M1M2...MN)-N, donde Mn es el valor MD5 de la parte n (N es el número total de partes). Como se describe en el Modelo de solicitud, hay tres partes y cada parte tiene un valor MD5. Los valores MD5 de las tres partes se recalculan para obtener un nuevo valor MD5. A continuación, se agrega -N a la derecha del valor MD5 para obtener la ETag de las partes combinadas. En este ejemplo, -N es -3.
Si la respuesta a una solicitud de fusión de objetos se agota y se devuelve el error 500 o 503, puede obtener primero los metadatos de objeto de la tarea de carga de múltiples partes. A continuación, compruebe si el valor del encabezado x-obs-uploadId en la respuesta es el mismo que el ID de esta tarea de carga de varias partes. Si son iguales, las partes de objeto se han combinado correctamente en el servidor y no es necesario volver a intentarlo. Para obtener más información, véase Consistencia de las operaciones simultáneas.
WORM
Si un bucket tiene WORM habilitado, la protección WORM se aplicará automáticamente al objeto generado una vez completada la carga de varias partes. Si especifica encabezados de WORM y una fecha de caducidad de retención al iniciar una carga de varias partes, la protección para el objeto ensamblado finaliza en la fecha especificada. Si no especifica encabezados de WORM durante la iniciación, pero ha configurado la política de retención a nivel de bucket predeterminada, esta política predeterminada se aplica automáticamente y la protección se inicia cuando se completa la carga de varias partes. Una vez completada la carga de varias partes, todavía puede configurar políticas de retención de WORM a nivel de objeto para el objeto ensamblado.
Control de versiones
Si un bucket tiene activado el control de versiones, se genera un ID de versión único para un objeto creado a partir de una carga de varias partes en este bucket y el ID de versión se devuelve en el encabezado de respuesta x-obs-version-id. Si el control de versiones se suspende para un bucket, la versión del objeto obtenida después de la combinación es null. Para obtener más información sobre los estados de control de versiones de un bucket, consulte Configuración del control de versiones para un bucket.
Si se cargan 10 piezas pero solo se seleccionan nueve piezas para combinar, las piezas que no se fusionan se eliminarán automáticamente por el sistema. Las piezas que no se fusionan no se pueden restaurar después de eliminarlas. Antes de combinar las piezas, adopte la interfaz utilizada para enumerar las piezas que se han cargado para comprobar todas las piezas para asegurarse de que no se pierda ninguna pieza.
Sintaxis de solicitud
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
POST /ObjectName?uploadId=uploadID HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Date: date Content-Length: length Authorization: authorization <CompleteMultipartUpload> <Part> <PartNumber>partNum</PartNumber> <ETag>etag</ETag> </Part> <Part> <PartNumber>partNum</PartNumber> <ETag>etag</ETag> </Part> <Part> <PartNumber>partNum</PartNumber> <ETag>etag</ETag> </Part> </CompleteMultipartUpload> |
Parámetros de solicitud
Esta solicitud utiliza parámetros para especificar el ID de una carga de varias partes cuyas partes se fusionarán. Tabla 1 describe los parámetros.
Parámetro |
Descripción |
Obligatorio |
---|---|---|
uploadId |
Indica una carga de varias partes. Tipo: string |
Sí |
encoding-type |
Codifica la clave en la respuesta según el tipo especificado. Si la clave contiene caracteres de control que no son compatibles con el estándar XML 1.0, puede establecer el tipo de codificación para codificar la clave en respuesta. Tipo: string Opción de valor: url |
No |
Encabezados de solicitud
Esta solicitud utiliza encabezados comunes. Para obtener más información, véase Tabla 3.
Elementos de solicitud
Esta solicitud utiliza elementos para especificar la lista de piezas que se van a fusionar. Tabla 2 describe los elementos.
Elemento |
Descripción |
Obligatorio |
---|---|---|
CompleteMultipartUpload |
Lista de piezas que deben combinarse Tipo: XML |
Sí |
PartNumber |
Número de pieza Tipo: integer |
Sí |
ETag |
Valor ETag devuelto tras la carga correcta de una pieza. Es el identificador único del contenido de la pieza. Este parámetro se utiliza para verificar la coherencia de los datos cuando se fusionan piezas. Tipo: string |
Sí |
Sintaxis de respuesta
1 2 3 4 5 6 7 8 9 |
HTTP/1.1 status_code Date: date <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <CompleteMultipartUploadResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/"> <Location>http://example-Bucket.obs.region.myhuaweicloud.com/example-Object</Location> <Bucket>bucketname</Bucket> <Key>ObjectName</Key> <ETag>ETag</ETag> </CompleteMultipartUploadResult> |
Encabezados de respuesta
La respuesta a la solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 1.
Además de los encabezados de respuesta comunes, los encabezados de mensaje enumerados en Tabla 3 puede ser usado.
Encabezado |
Descripción |
---|---|
x-obs-version-id |
Versión del objeto después de fusionar las piezas. Tipo: string |
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 |
Elementos de respuesta
Esta respuesta utiliza los elementos para devolver el resultado de la fusión de piezas. Tabla 4 describe los elementos.
Elemento |
Descripción |
---|---|
Location |
Ruta de acceso del objeto después de fusionar las piezas. Tipo: string |
Bucket |
Bucket en el que se fusionan las piezas. Tipo: string |
EncodingType |
Tipo de codificación de una clave de objeto. Si la clave contiene caracteres de control que no son compatibles con el estándar XML 1.0, puede establecer el tipo de codificación para codificar la clave en respuesta. Tipo: string Opción de valor: url |
Key |
Indica la clave del objeto generado. Tipo: string |
ETag |
El resultado calculado en base a la ETag de cada parte es el identificador único del contenido del objeto. Tipo: string |
Respuestas de error
- Si no existe ningún cuerpo del mensaje, OBS devuelve 400 Bad Request.
- Si el formato del cuerpo del mensaje es incorrecto, OBS devuelve 400 Bad Request.
- Si la información de pieza en el cuerpo del mensaje no se ordena por número de secuencia de pieza, OBS devuelve 400 Bad Request y el código de error es InvalidPartOrder.
- Si la AK o la firma no son válidas, OBS devuelve 403 Forbidden y el código de error es AccessDenied.
- Si no se encuentra el bucket solicitado, OBS devuelve 404 Not Found y el código de error es NoSuchBucket.
- Si la carga multiparte solicitada no existe, OBS devuelve 404 Not Found y el código de error NoSuchUpload.
- Si el usuario no es el iniciador de la tarea, OBS devuelve 403 Forbidden y el código de error es AccessDenied.
- Si la lista de artículos de solicitud contiene un artículo que no existe, OBS devuelve 400 Bad Request y el código de error es "InvalidPart".
- Si la ETag del artículo contenida en la lista de solicitudes es incorrecta, OBS devuelve 400 Bad Request con un código de error de InvalidPart.
- Si el tamaño de una parte distinta de la última parte es inferior a 100 KB, OBS devuelve 400 Bad Request.
- Si el tamaño del objeto es mayor que 48.8 TB después de fusionar las piezas, OBS devuelve el código de estado 400 Bad Request.
Otros errores se incluyen en Tabla 2.
Modelo de solicitud
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
POST /object02?uploadId=00000163D46218698DF407362295674C HTTP/1.1 User-Agent: curl/7.29.0 Host: examplebucket.obs.region.myhuaweicloud.com Accept: */* Date: WED, 01 Jul 2015 05:23:46 GMT Authorization: OBS H4IPJX0TQTHTHEBQQCEC:dOfK9iILcKxo58tRp3fWeDoYzKA= Content-Length: 422 <?xml version="1.0" encoding="utf-8"?> <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>a54357aff0632cce46d942af68356b38</ETag> </Part> <Part> <PartNumber>2</PartNumber> <ETag>0c78aef83f66abc1fa1e8477f296d394</ETag> </Part> <Part> <PartNumber>3</PartNumber> <ETag>acbd18db4cc2f85cedef654fccc4a4d8</ETag> </Part> </CompleteMultipartUpload> |
Modelo de respuesta
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
HTTP/1.1 200 OK Server: OBS x-obs-request-id: 8DF400000163D4625BE3075019BD02B8 x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSN8D1AfQcIvyGBZ9+Ee+jU6zv1iYdO4 Content-Type: application/xml Date: WED, 01 Jul 2015 05:23:46 GMT Content-Length: 326 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <CompleteMultipartUploadResult xmlns="http://obs.ap-southeast-1.myhuaweicloud.com/doc/2015-06-30/"> <Location>/examplebucket/object02</Location> <Bucket>examplebucket</Bucket> <Key>object02</Key> <ETag>"03f814825e5a691489b947a2e120b2d3-3"</ETag> </CompleteMultipartUploadResult> |