Carga de objetos - POST
Funciones
Subir un objeto significa agregar un objeto a un bucket. Para realizar esta operación, debe tener el permiso de escritura para el bucket.
El nombre de cada objeto de un bucket debe ser único.
Si el control de versiones no está habilitado, si un objeto que se va a cargar tiene el mismo nombre que un objeto existente en el bucket, el objeto recién cargado sobrescribirá al existente. Para proteger los datos de daños durante la transmisión, puede agregar el parámetro Content-MD5 en el campo de formulario. Después de recibir la solicitud, OBS realizará una comprobación de consistencia MD5. Si los dos valores MD5 son inconsistentes, el sistema devuelve un mensaje de error. También puede especificar el valor del parámetro x-obs-acl para configurar una política de control de acceso para el objeto.
También puede cargar un objeto utilizando el método POST.
Para una sola carga, el tamaño del objeto que se va a cargar varía [0, 5 GB]. Para cargar un archivo de más de 5 GB, consulte Operaciones en carga multiparte.
Esta operación admite la encriptación del lado del servidor.
Diferencias entre los métodos PUT y POST
Los parámetros se pasan a través de la cabecera de petición si el método PUT se usa para cargar objetos; si el método POST se usa para cargar objetos, los parámetros se pasan a través del campo de formulario en el cuerpo del mensaje.
Con el método PUT, debe especificar el nombre de objeto en la URL, pero el nombre de objeto no es necesario con el método POST, que utiliza el nombre de dominio de bucket como URL. Las líneas de solicitud de los dos métodos son las siguientes:
PUT /ObjectName HTTP/1.1
POST / HTTP/1.1
Para obtener más información sobre la carga de PUT, consulte Carga de objetos - PUT.
Control de versiones
Si el control de versiones está habilitado para un bucket, el sistema genera automáticamente un ID de versión único para el objeto solicitado en este bucket y devuelve el ID de versión en el encabezado de respuesta x-obs-version-id. Si se suspende el control de versiones de un bucket, el ID de versión del objeto solicitado en este bucket 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.
Sintaxis 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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
POST / HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com User-Agent: browser_data Accept: file_types Accept-Language: Regions Accept-Encoding: encoding Accept-Charset: character_set Keep-Alive: 300 Connection: keep-alive Content-Type: multipart/form-data; boundary=9431149156168 Content-Length: length --9431149156168 Content-Disposition: form-data; name="key" acl --9431149156168 Content-Disposition: form-data; name="success_action_redirect" success_redirect --9431149156168 Content-Disposition: form-data; name="content-Type" content_type --9431149156168 Content-Disposition: form-data; name="x-obs-meta-uuid" uuid --9431149156168 Content-Disposition: form-data; name="x-obs-meta-tag" metadata --9431149156168 Content-Disposition: form-data; name="AccessKeyId" access-key-id --9431149156168 Content-Disposition: form-data; name="policy" encoded_policy --9431149156168 Content-Disposition: form-data; name="signature" signature= --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename" Content-Type: image/jpeg file_content --9431149156168 Content-Disposition: form-data; name="submit" Upload to OBS --9431149156168-- |
Parámetros de solicitud
Esta solicitud no contiene ningún parámetro.
Encabezados de solicitud
Esta solicitud utiliza encabezados comunes. Para más detalles, consulte Tabla 3.
Si desea obtener información de configuración de CORS, debe usar los encabezados en Tabla 1.
Encabezado |
Descripción |
Obligatorio |
---|---|---|
Origin |
Origen de la solicitud entre dominios especificada por la solicitud previa. En general, es un nombre de dominio. Tipo: string |
Sí |
Access-Control-Request-Headers |
Indica los encabezados HTTP de una solicitud. La solicitud puede utilizar varios encabezados HTTP. Tipo: string |
No |
Si aún se muestra un mensaje de error después de que CORS haya sido configurado, rectifique el error consultando ¿Por qué se reporta un error incluso si CORS ha sido configurado?
Elementos de solicitud.
Esta solicitud utiliza elementos de formulario. Tabla 2 describe los elementos del formulario.
Parámetro |
Descripción |
Obligatorio |
---|---|---|
file |
Indica el contenido del objeto que se va a cargar. Tipo: contenido binario o texto Restricción: este parámetro debe ser el último parámetro de un formulario. De lo contrario, los parámetros después de este parámetro serán descartados. Además, cada solicitud contiene solo un parámetro de archivo. |
Sí |
key |
Indica el nombre del objeto que se va a crear. Tipo: string |
Sí |
AccessKeyId |
Indica la clave de acceso (AK) del solicitante. Tipo: string Restricción: Este parámetro es obligatorio si hay una política de parámetros policy o signature en la solicitud. |
Sí cuando se cumple la restricción. |
policy |
Indica la política de seguridad en la solicitud. Para obtener más información sobre el formato de política, consulte el formato de política en Autenticación de la firma transportada en la tabla cargada a través de un navegador. Tipo: string Restricción: Este parámetro es obligatorio si el bucket proporciona el AccessKeyId (o signature). |
Sí cuando se cumple la restricción. |
signature |
Indica una string de firma calculada sobre la base de "StringToSign". Tipo: string Restricción: Este parámetro es obligatorio si el bucket proporciona el AccessKeyId (o policy). |
Sí cuando se cumple la restricción. |
token |
Especifica el AK, la firma y la política de seguridad del iniciador de solicitud. La prioridad de un token es mayor que la de un AK especificado, la firma de solicitud y la política de seguridad del iniciador de solicitud. Tipo: string Ejemplo: HTML: <input type= "text" name="token" value="ak:signature:policy" /> |
No |
x-obs-acl |
Al crear un bucket, puede agregar este encabezado para establecer la política de control de permisos para el bucket. Las políticas comunes predefinidas son las siguientes: private, public-read, public-read-write, public-read-delivered, y public-read-write-delivered (para obtener más información sobre las políticas, consulte la configuración de ACL mediante campos de encabezado en ACL). Tipo: string Un ejemplo es el siguiente: Política: {"acl": "public-read" } HTML: <input type="text" name="acl" value="public-read" /> |
No |
x-obs-grant-read |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para leer objetos y obtener metadatos de objeto. Tipo: string Un ejemplo es el siguiente: En POLICY: {'grant-read': 'id=domainId1' }, En HTML: <input type="text" name="grant-read" value="id=domainId1" /> |
No |
x-obs-grant-read-acp |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para obtener la ACL del objeto. Tipo: string Un ejemplo es el siguiente: En POLICY: {"grant-read-acp": "id=domainId1" }, En HTML: <input type="text" name="grant-read-acp" value="id=domainId1" /> |
No |
x-obs-grant-write-acp |
Al crear un objeto, puede utilizar este encabezado para autorizar a todos los usuarios de una cuenta el permiso para escribir el objeto ACL. Tipo: string Un ejemplo es el siguiente: En POLICY: {"grant-write-acp": "id=domainId1" }, En HTML: <input type="text" name="grant-write-acp" value="id=domainId1" /> |
No |
x-obs-grant-full-control |
Al crear un objeto, 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 Un ejemplo es el siguiente: In POLICY: {"grant-full-control": "id=domainId1" }, En HTML: <input type="text" name="grant-full-control" value="id=domainId1" /> |
No |
x-obs-storage-class |
Al crear un objeto, puede utilizar 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. Los valores distinguen entre mayúsculas y minúsculas. Un ejemplo es el siguiente: En POLICY: {"storage-class": "STANDARD" }, En HTML: <input type="text" name="x-obs-storage-class" value="STANDARD" /> |
No |
Cache-Control, Content-Type, Content-Disposition, Content-Encoding Expires |
Encabezados HTTP estándar. OBS registra esos encabezados. Si descarga el objeto o envía la solicitud HEAD Object, se devuelven esos valores de parámetro. Tipo: string Un ejemplo es el siguiente: En POLICY: ["starts-with", "$Content-Type", "text/"], En HTML: <input type="text" name="content-type" value="text/plain" /> |
No |
success_action_redirect |
Indica la dirección (URL) a la que se redirige una solicitud respondida correctamente.
Tipo: string Un ejemplo es el siguiente: En POLICY: {"success_action_redirect": "http://123458.com"}, En HTML: <input type="text" name="success_action_redirect" value="http://123458.com"/> |
No |
x-obs-meta-* |
Indica metadatos definidos por el usuario. Al crear un objeto, puede usar este encabezado o un encabezado que comience con x-obs-meta- para definir metadatos de objeto en una solicitud HTTP. Los metadatos definidos por el usuario se devolverán en el encabezado de respuesta cuando recupere o consulte los metadatos del objeto. Para obtener más información, consulte Gestión de metadatos de objetos. Tipo: string Un ejemplo es el siguiente: En POLICY: {" x-obs-meta-test ": " test metadata " }, En HTML: <input type="text" name=" x-obs-meta-test " value=" test metadatos " /> |
No |
x-obs-persistent-headers |
Al crear un objeto, puede agregar el encabezado x-obs-persistent-headers en una solicitud HTTP para especificar uno o más encabezados de respuesta definidos por el usuario. 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 la cabecera x-obs-persistent-headers. A continuación, el servidor decodifica el valor cargado. Ejemplos: Política: {"x-obs-persistent-headers": "key1:dmFsdWUx,key2:dmFsdWUy" }, HTML: <input type="text" name="x-obs-persistent-headers" value="key1:dmFsdWUx,key2:dmFsdWUy" /> El encabezado devuelto para descargar el objeto u obtener los metadatos del objeto es key1:value1 o key2:value2 respectivamente. Restricciones: 1. Los encabezados de respuesta definidos por el usuario especificados de esta manera no pueden tener el prefijo x-obs-, es decir, puede usar key1, en lugar de x-obs-key1, como prefijo. 2. No se puede usar el encabezado HTTP estándar, por ejemplo, host/content-md5/origin/range/Content-Disposition. 3. La longitud total del encabezado y los metadatos definidos por el usuario no puede superar los 8 KB. 4. Si se transfieren las mismas claves, separe los valores con comas (,) y coloque estos valores en la misma clave para el retorno. |
No |
success_action_status |
Indica el código de estado devuelto después de recibir correctamente la solicitud. Los valores posibles son 200, 201 y 204.
Tipo: string Un ejemplo es el siguiente: En POLICY: ["starts-with","$success_action_status", ""], En HTML: <input type="text" name="success_action_status" value="200" /> |
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. 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 |
Identificación de la 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 2.x-obs-server-side-encryption-kms-key-id:4f1cd4de-ab64-4807-920a-47fc42e7f0d0 |
No |
x-obs-server-side-encryption-customer-algorithm |
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 |
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 cualquier proceso es anormal: 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. |
No. Esta cabecera es necesaria cuando se usa 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 |
Sintaxis de respuesta
1 2 3 4 5 |
HTTP/1.1 status_code Content-Type: application/xml Location: location Date: date ETag: etag |
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, también se pueden usar los siguientes encabezados de mensaje. Para más detalles, consulte Tabla 3.
Encabezado |
Descripción |
---|---|
x-obs-version-id |
ID de versión del objeto. Si el control de versiones está habilitado para el bucket, se devolverá el número de versión del objeto. Se devolverá una string null si el bucket que contiene el objeto tiene suspendido el control de versiones. Tipo: string |
Access-Control-Allow-Origin |
Indica que el origen se incluye en la respuesta si el origen de la solicitud cumple los requisitos de configuración de CORS cuando CORS está configurado para los bucket. Tipo: string |
Access-Control-Allow-Headers |
Indica que los encabezados se incluyen en la respuesta si los encabezados de la solicitud cumplen los requisitos de configuración de CORS cuando CORS está configurado para los bucket. Tipo: string |
Access-Control-Max-Age |
Indica MaxAgeSeconds en la configuración CORS del servidor cuando CORS está configurado para bucket. Tipo: integer |
Access-Control-Allow-Methods |
Indica que los métodos de la regla se incluyen en la respuesta si Access-Control-Request-Method en la solicitud cumple los requisitos de configuración de CORS cuando CORS está configurado para los bucket. Tipo: string Los valores posibles son GET, PUT, HEAD, POST y DELETE. |
Access-Control-Expose-Headers |
Indica ExposeHeader en la configuración de CORS de un servidor cuando CORS está configurado para los bucket. 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 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 no implica elementos.
Respuestas de error
No se devuelven respuestas de error especiales. Para obtener más información sobre las respuestas de error, consulte Tabla 2.
Solicitud de muestra 1
Subir POST común
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
POST / HTTP/1.1 Date: WED, 01 Jul 2015 04:15:23 GMT Host: examplebucket.obs.region.myhuaweicloud.com Content-Type: multipart/form-data; boundary=7db143f50da2 Content-Length: 2424 Origin: www.example.com Access-Control-Request-Headers:acc_header_1 --7db143f50da2 Content-Disposition: form-data; name="key" object01 --7db143f50da2 Content-Disposition: form-data; name="acl" public-read --7db143f50da2 Content-Disposition: form-data; name="content-type" text/plain --7db143f50da2 Content-Disposition: form-data; name="expires" WED, 01 Jul 2015 04:16:15 GMT --7db143f50da2 Content-Disposition: form-data; name="AccessKeyId" 14RZT432N80TGDF2Y2G2 --7db143f50da2 Content-Disposition: form-data; name="policy" ew0KICAiZXhwaXJhdGlvbiI6ICIyMDE1LTA3LTAxVDEyOjAwOjAwLjAwMFoiLA0KICAiY29uZGl0aW9ucyI6IFsNCiAgICB7ImJ1Y2tldCI6ICJleG1hcGxlYnVja2V0IiB9LA0KICAgIHsiYWNsIjogInB1YmxpYy1yZWFkIiB9LA0KICAgIHsiRXhwaXJlcyI6ICIxMDAwIiB9LA0KICAgIFsiZXEiLCAiJGtleSIsICJvYmplY3QwMSJdLA0KICAgIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJ0ZXh0LyJdLA0KICBdDQp9DQo= --7db143f50da2 Content-Disposition: form-data; name="signature" Vk6rwO0Nq09BLhvNSIYwSJTRQ+k= --7db143f50da2 Content-Disposition: form-data; name="file"; filename="C:\Testtools\UpLoadFiles\object\1024Bytes.txt" Content-Type: text/plain 01234567890 --7db143f50da2 Content-Disposition: form-data; name="submit" Upload --7db143f50da2-- |
Respuesta de muestra 1
Después de configurar CORS para un bucket, la respuesta contiene la información de Access-Control-*.
1 2 3 4 5 6 7 8 9 10 11 12 |
HTTP/1.1 204 No Content x-obs-request-id: 90E2BA00C26C00000133B442A90063FD x-obs-id-2: OTBFMkJBMDBDMjZDMDAwMDAxMzNCNDQyQTkwMDYzRkRBQUFBQUFBQWJiYmJiYmJi Access-Control-Allow-Origin: www.example.com Access-Control-Allow-Methods: POST,GET,HEAD,PUT Access-Control-Allow-Headers: acc_header_01 Access-Control-Max-Age: 100 Access-Control-Expose-Headers: exp_header_01 Content-Type: text/xml Location: http://examplebucket.obs.region.myhuaweicloud.com/object01 Date: WED, 01 Jul 2015 04:15:23 GMT ETag: "ab7abb0da4bca5323ab6119bb5dcd296" |
Solicitud de muestra 2
Subir un objeto con los campos de encabezado x-obs-acl, clase de almacenamiento y redirección incluidos en el mensaje de solicitud.
Antes de codificar, el contenido de la política es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
{ "expiration":"2018-07-17T04:54:35Z", "conditions":[ { "content-type":"text/plain" }, { "x-obs-storage-class":"WARM" }, { "success_action_redirect":"http://www.example.com" }, { "x-obs-acl":"public-read" }, [ "starts-with", "$bucket", "" ], [ "starts-with", "$key", "" ] ] } |
Muestra 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 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
POST / HTTP/1.1 Host: examplebucket.obs.region.myhuaweicloud.comAccept-Encoding: identity Content-Length: 947 Content-Type: multipart/form-data; boundary=9431149156168 User-Agent: OBS/Test --9431149156168 Content-Disposition: form-data; name="x-obs-acl" public-read --9431149156168 Content-Disposition: form-data; name="AccessKeyId" H4IPJX0TQTHTHEBQQCEC --9431149156168 Content-Disposition: form-data; name="key" my-obs-object-key-demo --9431149156168 Content-Disposition: form-data; name="signature" WNwv8P1ZiWdqPQqjXeLmAfzPDAI= --9431149156168 Content-Disposition: form-data; name="policy" eyJleHBpcmF0aW9uIjoiMjAxOC0wNy0xN1QwODozNDoyM1oiLCAiY29uZGl0aW9ucyI6W3siY29udGVudC10eXBlIjoidGV4dC9wbGFpbiJ9LHsieC1vYnMtYWNsIjoicHVibGljLXJlYWQifSxbInN0YXJ0cy13aXRoIiwgIiRidWNrZXQiLCAiIl0sWyJzdGFydHMtd2l0aCIsICIka2V5IiwgIiJdXX0= --9431149156168 Content-Disposition: form-data; name="content-type" text/plain --9431149156168 Content-Disposition: form-data; name="file"; filename="myfile" Content-Type: text/plain c2c6cd0f-898e-11e8-aab6-e567c91fb541 52b8e8a0-8481-4696-96f3-910635215a78 --9431149156168-- |
Respuesta de muestra 2
1 2 3 4 5 6 7 |
HTTP/1.1 204 No Content Server: OBS Location: http://examplebucket.obs.region.myhuaweicloud.com/my-obs-object-key-demo ETag: "17a83fc8d431273405bd266114b7e034" x-obs-request-id: 5DEB00000164A728A7C7F4E032214CFA x-obs-id-2: 32AAAUJAIAABAAAQAAEAABAAAQAAEAABCSwj2PcBE0YcoLHUDO7GSj+rVByzjflA Date: Tue, 17 Jul 2018 07:33:36 GMT |