Inicialização de uma tarefa de multiparte
Funções
Antes de usar essa operação, faça uma chamada de operação de API para criar uma tarefa de carregamento de multiparte. O sistema retornará um ID de upload globalmente exclusivo como o identificador de carregamento de multiparte. Esse identificador pode ser usado em solicitações subsequentes, incluindo UploadPart, CompleteMultipartUpload e ListParts. Criar uma tarefa de carregamento de multiparte não afeta o objeto que tem o mesmo nome que o objeto a ser carregado em multiparte. Você pode criar mais de uma tarefa de carregamento de multiparte para um objeto. Essa solicitação de operação pode conter cabeçalhos x-obs-acl, x-obs-meta-*, Content-Type, and Content-Encoding. Os cabeçalhos são registrados nos metadados de carregamento de multiparte.
Esta operação suporta encriptação do lado do servidor.
Sintaxe da solicitação
1 2 3 4 |
POST /ObjectName?uploads HTTP/1.1 Host: bucketname.obs.region.myhuaweicloud.com Date: date Authorization: authorization |
Parâmetros de solicitação
Essa solicitação usa parâmetros para especificar um carregamento de multiparte. Tabela 1 descreve os parâmetros.
Parâmetro |
Descrição |
Obrigatório |
---|---|---|
uploads |
Indica um carregamento de multiparte. Tipo: string |
Sim |
encoding-type |
Codifica a chave na resposta com base no tipo especificado. Se a chave contiver caracteres de controle que não são suportados pelo padrão XML 1.0, você poderá definir o tipo de codificação para codificar a chave em resposta. Tipo: string Valor opcional: url |
Não |
Cabeçalhos de solicitação
A solicitação pode usar cabeçalhos adicionais, conforme mostrado em Tabela 2.
Cabeçalho |
Descrição |
Obrigatório |
---|---|---|
x-obs-acl |
Ao inicializar uma tarefa de carregamento de multiparte, você pode adicionar esse cabeçalho de mensagem para definir a política de controle de permissão para o objeto. As políticas comuns predefinidas são as seguintes: private, public-read, e public-read-write. Para obter detalhes sobre cada política, consulte a configuração ACL usando campos de cabeçalho na ACL. Tipo: string Nota: Este cabeçalho é uma política predefinida expressa numa cadeia de caracteres. Exemplo: x-obs-acl: public-read-write |
Não |
x-obs-grant-read |
Ao inicializar uma tarefa de carregamento de multiparte, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a ler o objeto e obter os metadados do objeto. Tipo: string Exemplo: x-obs-grant-read: ID=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-grant-read-acp |
Ao inicializar uma tarefa de carregamento de multiparte, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para obter a ACL do objeto. Tipo: string Exemplo: x-obs-grant-read-acp: ID=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-grant-write-acp |
Ao inicializar uma tarefa de carregamento de multiparte, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para gravar a ACL do objeto. Tipo: string Exemplo: x-obs-grant-write-acp: ID=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-grant-full-control |
Ao inicializar uma tarefa de carregamento de multiparte, você pode usar esse cabeçalho para autorizar todos os usuários em uma conta a permissão para ler o objeto, obter os metadados do objeto, obter a ACL do objeto e gravar a ACL do objeto. Tipo: string Exemplo: x-obs-grant-full-control: ID=domainID Se várias contas forem autorizadas, separe-as com vírgulas (,). |
Não |
x-obs-storage-class |
Ao iniciar uma tarefa de carregamento de multiparte, você pode adicionar esse cabeçalho para especificar a classe de armazenamento do objeto. Se você não usar esse cabeçalho, a classe de armazenamento de objeto será a classe de armazenamento padrão do bucket. Tipo: string O OBS fornece três classes de armazenamento: Padrão (STANDARD), Acesso Infrequente (WARM) e Arquivo (COLD). Portanto, os valores para este elemento podem ser STANDARD, WARM, e COLD. O feitiço desses valores é sensível a maiúsculas e minúsculas. Exemplo: x-obs-storage-class: STANDARD |
Não |
x-obs-persistent-headers |
Ao inicializar uma tarefa de upload de várias partes, você pode adicionar o cabeçalho x-obs-persistent-headers em uma solicitação HTTP para especificar um ou mais cabeçalhos de resposta definidos pelo usuário. Depois que todas as partes do upload de várias partes forem mescladas, os cabeçalhos de resposta definidos pelo usuário serão retornados no cabeçalho de resposta quando você recuperar o objeto ou consultar os metadados do objeto. Tipo: string Formato: x-obs-persistent-headers: key1:base64_encode(value1),key2:base64_encode(value2)... Nota:: Itens, como key1 e key2, são cabeçalhos definidos pelo usuário. Se eles contiverem caracteres não-ASCII ou irreconhecíveis, eles podem ser codificados usando URL ou Base64. O servidor processa esses cabeçalhos como strings de caracteres, mas não os decodifica. Itens, como value1 e value2 são os valores dos cabeçalhos correspondentes. base64_encode indica que o valor é codificado usando Base64. Um cabeçalho definido pelo usuário e seu valor codificado em Base64 são conectados usando um (:) de dois pontos para formar um par chave-valor. Todos os pares chave-valor são separados com uma vírgula (,) e são colocados no cabeçalho x-obs-persistent-headers. O servidor então decodifica o valor carregado. Examplo: x-obs-persistent-headers: key1:dmFsdWUx,key2:dmFsdWU Depois que todas as partes do upload de várias partes forem mescladas, os cabeçalhos key1:value1 e key2:value2 serão retornados, respectivamente, quando você baixar o objeto e obter os metadados do objeto. Restrições: 1. Cabeçalhos de resposta definidos pelo usuário especificados dessa maneira não podem ser prefixados com x-obs-, ou seja, você pode usar key1, em vez de x-obs-key1, como o prefixo. 2. O cabeçalho de HTTP padrão, por exemplo, host/content-md5/origin/range/Content-Disposition, não pode ser usado. 3. O comprimento total do cabeçalho e dos metadados definidos pelo usuário não pode exceder 8 KB. 4. Se as mesmas chaves forem transferidas, separe os valores com vírgulas (,) e coloque esses valores na mesma chave para retornar. |
Não |
x-obs-website-redirect-location |
Se um bucket estiver configurado com a função de hospedagem de sites estáticos, ele redirecionará as solicitações desse objeto para outro objeto no mesmo bucket ou para um URL externo. O OBS armazena o valor desse cabeçalho nos metadados do objeto. Tipo: string Não há valor padrão. Restrição: O valor deve ser prefixado por uma barra (/), http://, ou https://. O comprimento do valor não pode exceder 2 KB. |
Não |
x-obs-server-side-encryption |
Indica que SSE-KMS é usado. Tipo: string Exemplo: x-obs-server-side-encryption:kms |
Não. Esse cabeçalho é necessário quando o SSE-KMS é usado. |
x-obs-server-side-encryption-kms-key-id |
Indica a ID da chave mestra. Este cabeçalho é usado no modo SSE-KMS. Se o cliente não fornecer a chave mestra, a chave mestra padrão será usada. Tipo: string Os dois formatos a seguir são suportados: 1. regionID:domainID:key/key_id 2. key_id regionID é o ID da região à qual a chave pertence. domainID é o ID da conta do locatário ao qual a chave pertence. key_id é o ID da chave criado em DEW. Exemplo: 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 |
Não |
x-obs-server-side-encryption-customer-algorithm |
Indica um algoritmo de encriptação. O cabeçalho é usado no modo SSE-C. Tipo: string Exemplo: x-obs-server-encryption-customer-algorithm:AES256 Restrições: Este cabeçalho deve ser usado em conjunto com x-obs-server-side-encryption-customer-key e x-obs-server-side-encryption-customer-key-MD5. |
Não. Este cabeçalho é necessário quando SSE-C é usado. |
x-obs-server-side-encryption-customer-key |
A chave usada para criptografar objetos. O cabeçalho é usado no modo SSE-C. Essa chave é usada para criptografar objetos. Tipo: string Exemplo: x-obs-server-encryption-side-customer-key:K7QkYpBkM5+hcs27fsNkUnNVaobncnLht/rCB2o/9Cw= Restrições: Esse cabeçalho é uma chave de 256 bits codificada em Base64 e deve ser usado em conjunto com x-obs-server-side-encryption-customer-algorithm e x-obs-server-side-encryption-customer-key-MD5. |
Se você selecionar No, este cabeçalho será necessário quando SSE-C for usado. |
x-obs-server-side-encryption-customer-key-MD5 |
Indica o valor MD5 de uma chave usada para criptografar objetos. O cabeçalho é usado no modo SSE-C. O valor MD5 é usado para verificar se ocorre algum erro durante a transmissão da chave. Tipo: string Exemplo: x-obs-server-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== Restrições: Esse cabeçalho é uma string codificada em Base64 de 128 bits e deve ser usada em conjunto com x-obs-server-side-encryption-customer-algorithm e x-obs-server-side-encryption-customer-key. |
Se algum processo é anormal: Este cabeçalho é necessário quando SSE-C é usado. |
x-obs-expires |
Indica o tempo de expiração de um objeto, em dias. Um objeto será automaticamente excluído quando expirar (calculado a partir do tempo da última modificação do objeto). Tipo: inteiro Exemplo: x-obs-expires:3 |
Não |
Para obter detalhes sobre outros cabeçalhos de mensagens comuns, consulte Tabela 3.
Elementos de solicitação
Este pedido não envolve elementos.
Sintaxe da resposta
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> |
Cabeçalhos de resposta
A resposta à solicitação usa cabeçalhos comuns. Para mais detalhes, consulte Tabela 1.
Cabeçalho |
Descrição |
---|---|
x-obs-server-side-encryption |
Este cabeçalho é incluído em uma resposta se SSE-KMS for usado. Tipo: string Exemplo: x-obs-server-side-encryption:kms |
x-obs-server-side-encryption-kms-key-id |
Indica a ID da chave mestra. Este cabeçalho é incluído em uma resposta se SSE-KMS for usado. Tipo: string Formato:regionID:domainID:key/key_id regionID é o ID da região à qual a chave pertence. domainID é o ID da conta do locatário ao qual a chave pertence. key_id é o ID da chave usado nessa criptografia. Exemplo: x-obs-server-side-encryption-kms-key-id:region:domainiddomainiddomainiddoma0001:key/4f1cd4de-ab64-4807-920a-47fc42e7f0d0 |
x-obs-server-side-encryption-customer-algorithm |
Indica um algoritmo de encriptação. Este cabeçalho é incluído em uma resposta se SSE-C é usado. Tipo: string Exemplo: x-obs-server-encryption-customer-algorithm:AES256 |
x-obs-server-side-encryption-customer-key-MD5 |
Indica o valor MD5 de uma chave usada para criptografar objetos. Este cabeçalho é incluído em uma resposta se SSE-C é usado. Tipo: string Exemplo: x-obs-server-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ== |
Elementos de resposta
Essa resposta contém elementos para indicar o ID de upload e a chave (nome) do objeto (balde) para o qual o carregamento de multiparte foi iniciado. As informações devolvidas são utilizadas nas operações subsequentes. Tabela 4 descreve os elementos.
Elemento |
Descrição |
---|---|
InitiateMultipartUploadResult |
Contêiner de uma tarefa de carregamento de multiparte. Tipo: XML |
Bucket |
Indica o nome do bucket no qual o carregamento de multiparte foi iniciado. Tipo: string |
Key |
Indica a chave de objeto em um carregamento de multiparte. Tipo: string |
UploadId |
Indica a ID para o carregamento de multiparte iniciado. Esse ID é usado para a operação subseqüente. 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 |
Respostas de erro
1. Se a AK ou assinatura for inválida, o OBS retornará 403 Forbidden e o código de erro será AccessDenied.
2. Se o bucket não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchBucket.
3. Verifique se o usuário tem a permissão de gravação para o bucket especificado. Se não, OBS retorna 403 Forbidden e o código de erro é AccessDenied.
Outros erros estão incluídos em Tabela 2.
Solicitação de exemplo 1
Inicializar uma tarefa de multiparte.
1 2 3 4 |
POST /objectkey?uploads HTTP/1.1 Host: examplebucket.obs.region.myhuaweicloud.com Date: WED, 01 Jul 2015 05:14:52 GMT Authorization: OBS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc= |
Resposta de exemplo 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> |
Solicitação de exemplo 2
A ACL é transportada quando a tarefa de várias partes é inicializada.
1 2 3 4 5 |
POST /objectkey?uploads HTTP/1.1 Host: examplebucket.obs.region.myhuaweicloud.com Date: WED, 01 Jul 2015 05:15:43 GMT x-obs-grant-write-acp:ID=52f24s3593as5730ea4f722483579ai7,ID=a93fcas852f24s3596ea8366794f7224 Authorization: OBS AKIAIOSFODNN7EXAMPLE:VGhpcyBtZXNzYWdlIHNpZ25lZGGieSRlbHZpbmc= |
Resposta de exemplo 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> |