Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2022-11-14 GMT+08:00

Mescla das partes em um objeto completo

Funções

Depois de carregar todas as partes para um carregamento de multiparte, você pode usar esta operação para concluir o carregamento de multiparte. Antes de executar essa operação, você não pode baixar os dados carregados. Ao mesclar partes, você precisa copiar as informações adicionais do cabeçalho da mensagem registradas durante a inicialização da tarefa de carregamento de multiparte para os metadados do objeto. O processo de processamento é o mesmo que o do objeto de carregamento comum com esses cabeçalhos de mensagem. No caso de mesclar partes simultaneamente, a política Last Write Win deve ser seguida, mas o tempo para iniciar Last Write é especificado como o tempo em que um carregamento de multiparte é iniciado.

Se um carregamento de multiparte não tiver sido abortado, as partes carregadas ocuparão sua cota de armazenamento. Depois que todas as partes no carregamento de multiparte forem mescladas em um objeto, somente o objeto ocupará sua cota de armazenamento. Se uma parte carregada em um carregamento de multiparte não for usada em carregamentos de multiparte de mescla, a parte será excluída para liberar a cota de armazenamento.

Você pode enviar uma solicitação para baixar todos ou alguns dados do multiparte gerado especificando um bucket.

Você pode enviar uma solicitação para excluir todas as partes carregadas em um carregamento de multiparte. Os dados excluídos não podem ser restaurados.

As partes mescladas não usam o valor MD5 do objeto inteiro como ETag. Sua ETag é calculada da seguinte forma: MD5(M1M2...MN)-N, onde Mn é o valor MD5 da parte n (N é o número total de partes). Conforme descrito em Solicitação de exemplo, existem três partes e cada parte tem um valor MD5. Os valores MD5 das três partes são recalculados para obter um novo valor MD5. Então -N é adicionado à direita do valor MD5 para obter o ETag das partes combinadas. Neste exemplo, -N é -3.

Se a resposta a uma solicitação de mescla de objetos expirar e o erro 500 ou 503 for retornado, você poderá primeiro obter os metadados do objeto da tarefa de carregamento de multiparte. Em seguida, verifique se o valor do cabeçalho x-obs-carregamentoId na resposta é o mesmo que o ID dessa tarefa de carregamento de multiparte. Se eles forem os mesmos, as partes do objeto foram mescladas com êxito no servidor e você não precisa tentar novamente. Para mais detalhes, consulte Consistência de operações simultâneas.

Controle de versões

Se um bucket tiver o controle de versão habilitado, um ID de versão exclusivo será gerado para um objeto criado a partir de um carregamento de multiparte nesse bucket e o ID de versão será retornado no cabeçalho de resposta x-obs-version-id. Se o versionamento for suspenso para um bucket, a versão do objeto obtida após a mescla será null. Para obter detalhes sobre os status de versionamento de um bucket, consulte Configuração do versionamento para um bucket.

Se 10 partes forem carregadas, mas apenas nove forem selecionadas para mescla, as partes que não forem mescladas serão automaticamente excluídas pelo sistema. As partes que não são mescladas não podem ser restauradas após serem excluídas. Antes de combinar as partes, adote a interface usada para listar as partes que foram carregadas para verificar todas as partes para garantir que nenhuma parte seja perdida.

Sintaxe da solicitação

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
POST /ObjectName?uploadId=uploadID HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
Date: date
Content-Length: length
Authorization: authorization
<CompleteMultipartUpload> 
    <Part> 
        <PartNumber>partNum</PartNumber> 
        <ETag>etag</ETag> 
    </Part> 
    <Part> 
        <PartNumber>partNum</PartNumber> 
        <ETag>etag</ETag> 
    </Part> 
    <Part> 
        <PartNumber>partNum</PartNumber> 
        <ETag>etag</ETag> 
    </Part> 
</CompleteMultipartUpload>

Parâmetros de solicitação

Essa solicitação usa parâmetros para especificar o ID de um carregamento de multiparte cujas partes serão mescladas. Tabela 1 descreve os parâmetros.

Tabela 1 Parâmetros de solicitação

Parâmetro

Descrição

Obrigatório

uploadId

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

Essa solicitação usa cabeçalhos comuns. Para mais detalhes, consulte Tabela 3.

Elementos de solicitação

Esta solicitação utiliza elementos para especificar a lista de partes a serem mescladas. Tabela 2 descreve os elementos.

Tabela 2 Elementos de solicitação

Elemento

Descrição

Obrigatório

CompleteMultipartUpload

Lista de partes a combinar

Tipo: XML

Sim

PartNumber

Número da parte

Tipo: integer

Sim

ETag

Valor de ETag retornado após o carregamento bem-sucedido de uma parte. É o identificador exclusivo do conteúdo da parte. Este parâmetro é utilizado para verificar a consistência dos dados quando as partes são mescladas.

Tipo: string

Sim

Sintaxe da resposta

1
2
3
4
5
6
7
8
9
HTTP/1.1 status_code
Date: date
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<CompleteMultipartUploadResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
    <Location>http://example-Bucket.obs.region.myhuaweicloud.com/example-Object</Location>
    <Bucket>bucketname</Bucket> 
    <Key>ObjectName</Key> 
    <ETag>ETag</ETag> 
</CompleteMultipartUploadResult>

Cabeçalhos de resposta

A resposta à solicitação usa cabeçalhos comuns. Para mais detalhes, consulte Tabela 1.

Além da resposta comum cabeçalhos, a seguinte mensagem cabeçalhos também podem ser utilizados. Para mais detalhes, consulte Tabela 3.

Tabela 3 Parâmetros adicionais de cabeçalho de resposta

Cabeçalho

Descrição

x-obs-version-id

Versão do objeto após as partes serem mescladas.

Tipo: string

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-side-encryption-customer-algorithm:AES256

Elementos de resposta

Esta resposta usa elementos para retornar o resultado da mescla de partes. Tabela 4 descreve os elementos.

Tabela 4 Elementos de resposta

Elemento

Descrição

Location

URL do objeto após as partes serem mescladas.

Tipo: string

Bucket

Caçamba em que as partes são combinadas

Tipo: string

EncodingType

Tipo de codificação de uma chave de objeto. 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

Key

Indica a chave do objeto gerado.

Tipo: string

ETag

O resultado calculado com base na ETag de cada parte é o identificador exclusivo do conteúdo do objeto.

Tipo: string

Respostas de erro

  1. Se não existir nenhum corpo da mensagem, o OBS retorna 400 Bad Request.
  2. Se o formato do corpo da mensagem estiver incorreto, o OBS retornará 400 Bad Request.
  3. Se as informações de parte no corpo da mensagem não forem classificadas por número de sequência de parte, o OBS devolve 400 Bad Request e o código de erro é InvalidPartOrder.
  4. Se a AK ou assinatura for inválida, o OBS retornará 403 Forbidden e o código de erro será AccessDenied.
  5. Se o bucket solicitado não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchBucket.
  6. Se o carregamento de multiparte solicitado não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchUpload.
  7. Se o usuário não for o iniciador da tarefa, o OBS retornará 403 Forbidden e o código de erro será AccessDenied.
  8. Se a lista de partes solicitada contém uma parte que não existe, o OBS retorna 400 Bad Request e o código de erro é InvalidPart.
  9. Se a Etag da parte contida na lista de partes solicitada estiver incorreta, o OBS retornará 400 Bad Request e o código de erro será InvalidPart.
  10. Se o tamanho de uma parte diferente da última parte for menor que 100 KB, o OBS retornará 400 Bad Request.
  11. Se o tamanho do objeto for maior que 48,8 TB após as partes serem mescladas, o OBS retornará o código de status 400 Bad Request.

Outros erros estão incluídos em Tabela 2.

Solicitação de exemplo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
POST /object02?uploadId=00000163D46218698DF407362295674C HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 05:23:46 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:dOfK9iILcKxo58tRp3fWeDoYzKA=
Content-Length: 422

<?xml version="1.0" encoding="utf-8"?>
<CompleteMultipartUpload> 
  <Part> 
    <PartNumber>1</PartNumber>  
    <ETag>a54357aff0632cce46d942af68356b38</ETag> 
  </Part>  
  <Part> 
    <PartNumber>2</PartNumber>  
    <ETag>0c78aef83f66abc1fa1e8477f296d394</ETag> 
  </Part>  
  <Part> 
    <PartNumber>3</PartNumber>  
    <ETag>acbd18db4cc2f85cedef654fccc4a4d8</ETag> 
  </Part>
</CompleteMultipartUpload>

Resposta de exemplo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D4625BE3075019BD02B8
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCSN8D1AfQcIvyGBZ9+Ee+jU6zv1iYdO4
Content-Type: application/xml
Date: WED, 01 Jul 2015 05:23:46 GMT
Content-Length: 326

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CompleteMultipartUploadResult xmlns="http://obs.ap-southeast-1.myhuaweicloud.com/doc/2015-06-30/">
  <Location>/examplebucket/object02</Location>
  <Bucket>examplebucket</Bucket>
  <Key>object02</Key>
  <ETag>"03f814825e5a691489b947a2e120b2d3-3"</ETag>
</CompleteMultipartUploadResult>