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

Inicialización de una tarea de varias partes

Funciones

Antes de usar esta operación, realice una llamada 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 identificador 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.

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.

Type: string

encoding-type

Encodes the Key in the response based on the specified type. If the Key contain control characters that are not supported by the XML 1.0 standard, you can set encoding-type to encode the Key in response.

Type: string

Optional value: 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 inicializar una tarea de 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 ACL.

Type: 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 inicializar una tarea de carga de varias partes, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta a leer el objeto y obtener los metadatos del objeto.

Type: string

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

No

x-obs-grant-read-acp

Al inicializar una tarea de carga de varias partes, puede utilizar este encabezado para autorizar 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 inicializar una tarea de carga de varias partes, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para escribir el objeto ACL.

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 inicializar una tarea de carga de varias partes, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para leer el objeto, obtener los metadatos del objeto, obtener la ACL del objeto y escribir la ACL del objeto.

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 tarea de 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

OBS proporciona tres clases de almacenamiento: Standard (STANDARD), Infrequent Access (WARM), and Archive (COLD). Por lo tanto, los valores para este elemento pueden ser STANDARD, WARM y COLD. La ortografía de estos valores distingue entre mayúsculas y minúsculas.

Ejemplo: x-obs-storage-class: STANDARD

No

x-obs-persistent-headers

When initializing a multipart upload task, you can add the x-obs-persistent-headers header in an HTTP request to specify one or more user-defined response headers. After all parts in the multipart upload are merged, user-defined response headers will be returned in the response header when you retrieve the object or query the object metadata.

Type: string

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

Note: Items, such as key1 and key2, are user-defined headers. If they contain non-ASCII or unrecognizable characters, they can be encoded using URL or Base64. The server processes these headers as character strings, but does not decode them. Items, such as value1 and value2 are the values of the corresponding headers. base64_encode indicates that the value is encoded using Base64. A user-defined header and its Base64-encoded value are connected using a colon (:) to form a key-value pair. All key-value pairs are separated with a comma (,) and are placed in the x-obs-persistent-headers header. The server then decodes the uploaded value.

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

After all parts in the multipart upload are merged, headers key1:value1 and key2:value2 will be returned, respectively, when you download the object and obtain the object metadata.

Constraints:

1. User-defined response headers specified in this way cannot be prefixed with x-obs-, that is, you can use key1, instead of x-obs-key1, as the prefix.

2. The standard HTTP header, for example, host/content-md5/origin/range/Content-Disposition, cannot be used.

3. The total length of the header and user-defined metadata cannot exceed 8 KB.

4. If the same keys are transferred, separate values with commas (,) and place these values in the same key for return.

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

No hay ningún valor predeterminado.

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. Esta cabecera es necesaria cuando se usa SSE-KMS.

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

Indica el ID de clave principal. Este encabezado se utiliza en modo SSE-KMS. Si el cliente no proporciona la clave principal, se utilizará la clave principal predeterminada.

Tipo: string

Se admiten los dos formatos siguientes:

1. regionID:domainID:key/key_id

2. 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 creado en DEW.

Ejemplo:

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

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

No

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

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

No. Esta cabecera es necesaria cuando se usa SSE-C.

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

La clave utilizada para cifrar objetos. 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.

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

Indica el valor MD5 de una clave utilizada para cifrar objetos. 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.

x-obs-expires

Indica el tiempo de caducidad de un objeto, en días. Un objeto se eliminará automáticamente una vez que caduque (calculado a partir de la última hora de modificación del objeto).

Tipo: integer

Ejemplo: x-obs-expires:3

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 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 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

Encoding type of the key of an object that is uploaded in the multipart mode. If encoding-type is specified in the request, the Key in the response is encoded.

Type: 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. Si el bucket no existe, 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.

Solicitud de muestra 1

Inicializa una tarea de varias partes.

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=

Respuesta de muestra 1

 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>

Solicitud de muestra 2

La ACL se lleva cuando se inicializa la tarea de varias partes.

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=

Respuesta de muestra 2

 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+dtB51p+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>