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 2024-09-18 GMT+08:00

Inicio de una carga multiparte

Funciones

Antes de usar esta operación, realice una invocación de operación de API para crear una tarea de carga de varias partes. El sistema devolverá un ID de carga global único como el ID de carga de varias partes. Este identificador se puede utilizar en las solicitudes posteriores, como UploadPart, CompleteMultipartUpload y ListParts. Crear una tarea de carga de varias partes no afecta al objeto que tiene el mismo nombre que el objeto que se va a cargar en varias partes. Puede crear más de una tarea de carga de varias partes para un objeto. Esta solicitud de operación puede contener encabezados x-obs-acl, x-obs-meta-*, Content-Type y Content-Encoding. Los encabezados se registran en los metadatos de carga de varias partes.

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

WORM

Si un bucket tiene WORM habilitado, puede configurar políticas de retención a nivel de objeto al iniciar cargas de varias partes. Puede especificar los encabezados x-obs-object-lock-mode y x-obs-object-lock-retain-until-date cuando inicie una carga de varias partes para proteger el objeto ensamblado. Si no especifica estos dos encabezados pero ha configurado una política WORM predeterminada a nivel de bucket, esta política predeterminada se aplica automáticamente al objeto recién ensamblado. También puede configurar o actualizar una política de retención de WORM después de ensamblar el objeto.

A diferencia de las cargas con PUT y POST, una carga multiparte solo requiere que la fecha especificada en el encabezado x-obs-object-lock-retain-until-date no sea posterior al tiempo de inicio, pero no tiene que ser posterior al tiempo de finalización de la carga multiparte. Cuando se aplica la política WORM de nivel de bucket predeterminada, la protección comienza cuando se ensamblan las piezas de objeto y finaliza una vez que expira el período de protección de nivel de bucket predeterminado. Antes de ensamblar las partes de objeto cargadas, la carga de varias partes puede cancelarse y no se verá afectada por la configuración de WORM.

Sintaxis de solicitud

1
2
3
POST /ObjectName?uploads  HTTP/1.1  
Host: bucketname.obs.region.myhuaweicloud.com Date: date
Authorization: authorization

Parámetros de solicitud

Esta solicitud utiliza parámetros para especificar una carga de varias partes. Tabla 1 describe los parámetros.

Tabla 1 Parámetros de solicitud

Parámetro

Descripción

Obligatorio

uploads

Indica una carga de varias partes.

Tipo: string

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

La solicitud puede usar los encabezados adicionales, como se muestra en Tabla 2.

Tabla 2 Encabezados de solicitud

Encabezado

Descripción

Obligatorio

x-obs-acl

Al iniciar una carga de varias partes, puede agregar este encabezado de mensaje para establecer la política de control de permisos para el objeto. Las políticas comunes predefinidas son las siguientes: private, public-read y public-read-write. Para obtener más información sobre cada política, consulte la configuración de ACL mediante campos de encabezado en ACLs.

Tipo: string

Nota: Este encabezado es una política predefinida expresada en una string de caracteres.

Ejemplo: x-obs-acl: public-read-write

No

x-obs-grant-read

Al iniciar una carga de varias partes, puede utilizar este encabezado para conceder a todos los usuarios de una cuenta los permisos para leer el objeto y obtener los metadatos del objeto.

Tipo: string

Ejemplo: x-obs-grant-read: ID=domainID. Si hay varias cuentas autorizadas, sepárelas con comas (,).

No

x-obs-grant-read-acp

Al iniciar una carga de varias partes, puede utilizar este encabezado para conceder a todos los usuarios de una cuenta el permiso para obtener la ACL del objeto.

Tipo: string

Ejemplo: x-obs-grant-read-acp: ID=domainID Si hay varias cuentas autorizadas, sepárelas con comas (,).

No

x-obs-grant-write-acp

Al iniciar una carga de varias partes, puede utilizar este encabezado para conceder a todos los usuarios de una cuenta el permiso para escribir la ACL del objeto.

Tipo: string

Ejemplo: x-obs-grant-write-acp: ID=domainID. Si hay varias cuentas autorizadas, sepárelas con comas (,).

No

x-obs-grant-full-control

Al iniciar una carga de varias partes, puede utilizar este encabezado para conceder a todos los usuarios de una cuenta los permisos para leer el objeto, obtener los metadatos del objeto y ACL, y escribir el objeto ACL.

Tipo: string

Ejemplo: x-obs-grant-full-control: ID=domainID. Si hay varias cuentas autorizadas, sepárelas con comas (,).

No

x-obs-storage-class

Al iniciar una carga de varias partes, puede agregar este encabezado para especificar la clase de almacenamiento para el objeto. Si no utiliza este encabezado, la clase de almacenamiento de objetos es la clase de almacenamiento predeterminada del bucket.

Tipo: string

Opciones de clase de almacenamiento: STANDARD (Standard), WARM (Infrequent Access), COLD (Archive). Los valores distinguen entre mayúsculas y minúsculas.

Ejemplo: x-obs-storage-class: STANDARD

No

x-obs-persistent-headers

Al iniciar una carga multiparte, puede agregar el encabezado x-obs-persistent-headers en una solicitud de HTTP para especificar uno o más encabezados de respuesta definidos por el usuario. Después de fusionar todas las partes de la carga de varias partes, los encabezados de respuesta definidos por el usuario se devolverán en el encabezado de respuesta cuando recupere el objeto o consulte los metadatos del objeto.

Tipo: string

Formato: x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)...

Nota: Los elementos, como key1 y key2, son encabezados definidos por el usuario. Si contienen caracteres no ASCII o irreconocibles, se pueden codificar mediante URL o Base64. El servidor procesa estos encabezados como cadenas de caracteres, pero no los decodifica. Los elementos, tales como value1 y value2, son los valores de las cabeceras correspondientes. base64_encode indica que el valor se codifica usando Base64. Un encabezado definido por el usuario y su valor codificado en Base64 se conectan usando dos puntos (:) para formar un par clave-valor. Todos los pares clave-valor se separan con una coma (,) y se colocan en el encabezado x-obs-persistent-headers. A continuación, el servidor decodifica el valor cargado.

Ejemplo: x-obs-persistent-headers: key1:dmFsdWUx,key2:dmFsdWU

Después de fusionar todas las partes de la carga multiparte, los encabezados key1:value1 y key2:value2 se devolverán, respectivamente, cuando descargue el objeto y obtenga los metadatos del objeto.

Restricciones:

  1. Los encabezados de respuesta personalizados de esta manera no pueden tener el prefijo x-obs-. Por ejemplo, debes usar key1 en lugar de x-obs-key1 en lugar de hacerlo.
  2. Los encabezados de HTTP estándar, como host, content-md5, origin, range y Content-Disposition no se pueden especificar como los encabezados personalizados.
  3. La longitud total de este encabezado y los metadatos personalizados no puede superar los 8 KB.
  4. Si se pasan las mismas claves, los valores se separan con comas (,) y luego se devuelven en una clave.
  5. Si el valor decodificado contiene caracteres no US-ASCII o irreconocibles, el servidor procesa el valor como una cadena y lo encapsula usando ?UTF-8?B?<(str)>?= pero no decodifica el valor. Por ejemplo, el valor key1:abbc se devolverá como key1: =?UTF-8?B?abbc?=.
  6. Los valores no pueden contener espacios, signos iguales (=), comas (,), punto y coma (;), dos puntos (:) o puntos (.). Si estos caracteres son necesarios, utilice la codificación URL o Base64.

No

x-obs-website-redirect-location

Si un bucket está configurado con la función de alojamiento de sitios web estático, redirigirá las solicitudes para este objeto a otro objeto en el mismo bucket o a una URL externa. OBS almacena el valor de este encabezado en los metadatos del objeto.

Tipo: string

Valor predeterminado: ninguno

Restricción: el valor debe tener el prefijo de una barra diagonal (/), http://, o https://. La longitud del valor no puede superar los 2 KB.

No

x-obs-server-side-encryption

Indica que se utiliza SSE-KMS.

Tipo: string

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

No. Este encabezado es necesario cuando se utiliza SSE-KMS.

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

Indica la clave principal cuando se utiliza SSE-KMS. Si no se proporciona este encabezado, se utilizará la clave principal predeterminada. Si no existe una clave principal por defecto, OBS creará una y la usará por defecto.

Tipo: string

Se admiten los dos formatos siguientes:

- regionID:domainID:key/key_id

- 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 la clave creada en DEW.

Ejemplos:

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

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

No

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

Indica el algoritmo de encriptación 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.

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

Indica la clave para cifrar objetos 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.

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

Indica el valor MD5 de la clave de encriptación 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.

x-obs-expires

Especifica cuándo caduca un objeto. Se mide en días. Una vez que el objeto caduca, se elimina automáticamente. (El cálculo comienza a partir de la última modificación del objeto).

Tipo: integer

Ejemplo: x-obs-expires:3

No

x-obs-object-lock-mode

Modo de WORM que se aplicará al objeto. Actualmente, solo se admite COMPLIANCE. Este encabezado debe usarse junto con x-obs-object-lock-retain-until-date.

Tipo: string

Ejemplo: x-obs-object-lock-mode:COMPLIANCE

No, pero es necesario cuando x-obs-object-lock-retain-until-date está presente.

x-obs-object-lock-retain-until-date

Indica el tiempo de caducidad de la retención de Object Lock. El valor debe ser una hora UTC que cumpla con la norma ISO 8601, por ejemplo 2015-07-01T04:11:15Z. Este encabezado debe usarse junto con x-obs-object-lock-mode.

Tipo: string

Ejemplo: x-obs-object-lock-retain-until-date:2015-07-01T04:11:15Z

No, pero es necesario cuando x-obs-object-lock-mode está presente.

x-obs-meta-*

Al iniciar una carga de varias partes, puede usar un encabezado que comience con x-obs-meta- en la solicitud HTTP para definir metadatos de objeto para una gestión fácil. Los metadatos definidos por el usuario se devolverán en la respuesta cuando recupere el objeto o consulte los metadatos del objeto. Para obtener más información, consulte Metadatos de objetos definidos por el usuario.

Tipo: string

Ejemplo: x-obs-meta-test: test metadata

No

Para obtener más información sobre otros encabezados de mensaje comunes, consulte Tabla 3.

Elementos de solicitud

Esta solicitud no implica ningún elemento.

Sintaxis de respuesta

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
HTTP/1.1 status_code
Date: date
Content-Length: length
Connection: status

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<InitiateMultipartUploadResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
    <Bucket>BucketName</Bucket>  
    <Key>ObjectName</Key>  
    <UploadId>uploadID</UploadId> 
</InitiateMultipartUploadResult> 

Encabezados de respuesta

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

Tabla 3 Encabezados 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 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 para indicar el ID de carga y la clave (nombre) del objeto (bucket) para el que se inició la carga multiparte. La información devuelta se utiliza en las operaciones posteriores. Tabla 4 describe los elementos.

Tabla 4 Elementos de respuesta

Elemento

Descripción

InitiateMultipartUploadResult

Contenedor de una tarea de carga de varias partes.

Tipo: XML

Bucket

Indica el nombre del bucket en el que se inició la carga de varias partes.

Tipo: string

Key

Indica la clave de objeto en una carga de varias partes.

Tipo: string

UploadId

Indica el ID para la carga multiparte iniciada. Este ID se utiliza para la operación posterior.

Tipo: string

EncodingType

Tipo de codificación de la clave de un objeto que se carga en el modo multiparte. Si se especifica encoding-type en la solicitud, se codifica la clave de la respuesta.

Tipo: string

Respuestas de error

1. Si la AK o la firma no son válidas, OBS devuelve 403 Forbidden y el código de error es AccessDenied.

2. Si no se encuentra el bucket, OBS devuelve 404 Not Found y el código de error es NoSuchBucket.

3. Compruebe si el usuario tiene el permiso de escritura para el bucket especificado. Si no, OBS devuelve 403 Forbidden y el código de error es AccessDenied.

Otros errores se incluyen en Tabla 2.

Ejemplo de solicitud: Inicio de una carga multiparte

1
2
3
POST /objectkey?uploads  HTTP/1.1 
Host: examplebucket.obs.region.myhuaweicloud.comDate: WED, 01 Jul 2015 05:14:52 GMT 
Authorization: OBS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc=

Ejemplo de respuesta: Inicio de una carga de varias partes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
HTTP/1.1 200 OK 
Server: OBS
x-obs-id-2: Weag1LuByRx9e6j5Onimru9pO4ZVKnJ2Qz7/C1NPcfTWAtRPfTaOFg== 
x-obs-request-id: 996c76696e6727732072657175657374 
Date: WED, 01 Jul 2015 05:14:52 GMT
Content-Length: 303

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<InitiateMultipartUploadResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
  <Bucket>bucketname</Bucket>  
  <Key>objectkey</Key>  
  <UploadId>DCD2FC98B4F70000013DF578ACA318E7</UploadId> 
</InitiateMultipartUploadResult>

Ejemplo de solicitud: Inicio de una carga multiparte (con la ACL configurada)

1
2
3
4
POST /objectkey?uploads  HTTP/1.1 
Host: examplebucket.obs.region.myhuaweicloud.comDate: WED, 01 Jul 2015 05:15:43 GMT
x-obs-grant-write-acp:ID=52f24s3593as5730ea4f722483579ai7,ID=a93fcas852f24s3596ea8366794f7224
Authorization: OBS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc=

Ejemplo de respuesta: inicio de una carga de varias partes (con la ACL configurada)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
HTTP/1.1 200 OK 
Server: OBS
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTnv+daB51p+IVhAvWN7s5rSKhcWqDFs 
x-obs-request-id: BB78000001648457112DF37FDFADD7AD 
Date: WED, 01 Jul 2015 05:15:43 GMT
Content-Length: 303

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<InitiateMultipartUploadResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
  <Bucket>bucketname</Bucket>  
  <Key>objectkey</Key>  
  <UploadId>000001648453845DBB78F2340DD460D8</UploadId> 
</InitiateMultipartUploadResult>