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.
Parámetro |
Descripción |
Obligatorio |
---|---|---|
uploads |
Indica una carga de varias partes. Type: string |
Sí |
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.
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.
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.
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> |