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-07 GMT+08:00

Carregamento de uma parte de um objeto - copiar

Funções

Depois de criar uma tarefa de carregamento de várias partes, você pode especificar sua ID de carregamento e fazer carregamento de uma parte para a tarefa no OBS. Como alternativa, você pode fazer uma chamada de API para adicionar uma parte (parte de um objeto ou todo o objeto).

Esta operação suporta encriptação do lado do servidor.

Não é possível determinar se uma solicitação foi executada com êxito usando apenas status_code no cabeçalho HTTP retornado. Se 200 em status_code for retornado, o servidor recebeu a solicitação e começa a processar a solicitação. O corpo na resposta mostra se a solicitação foi executada com sucesso. A solicitação é executada com sucesso somente quando o corpo contém ETag; caso contrário, a solicitação não será executada.

Copie o objeto de origem e salve-o como part1. Se um part1 já existir antes da cópia, o part1 original será substituído pelo part1 recém-copiado. Após a cópia ser bem-sucedida, somente a última part1 é exibida. Os dados antigos da part1 serão apagados. Portanto, assegure-se de que a peça de destino não exista ou não tenha valor ao usar a operação de cópia de peça. Caso contrário, os dados podem ser apagados por engano. O objeto de origem no processo de cópia não é alterado.

Objetos de Arquivo do OBS

Se os objetos de origem forem objetos Arquivo, verifique o status de restauração dos objetos. Você pode copiar esses objetos somente depois que eles forem restaurados. Se o objeto de origem não for restaurado ou estiver sendo restaurado, a cópia falhará e o erro 403 Forbidden será retornado. A falha é descrita da seguinte forma:

ErrorCode: InvalidObjectState

ErrorMessage: A operação não é válida para a classe de armazenamento do objeto de origem

Sintaxe da solicitação

PUT /ObjectName?partNumber=partNum&carregamentoId=UploadID HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
Date: date
x-obs-copy-source: sourceobject
x-obs-copy-source-range:bytes=start-end
Authorization: authorization
Content-Length: length

Parâmetros de solicitação

Para copiar um componente, você precisa especificar o número de peça do componente de destino e o número da tarefa de carregamento de várias partes. Tabela 1 descreve os parâmetros.

Tabela 1 Parâmetros de solicitação

Parâmetro

Descrição

Obrigatório

partNumber

Indica o ID de uma peça a ser carregada.

Tipo: integer

Sim

carregamentoId

Indica um ID de carregamento de várias partes.

Tipo: string

Sim

Cabeçalhos de solicitação

Além dos cabeçalhos de mensagens comuns, a solicitação usa dois cabeçalhos estendidos. Tabela 3 descreve o cabeçalho da mensagem comum.

Tabela 2 Cabeçalhos de solicitação

Cabeçalho

Descrição

Obrigatório

x-obs-copy-source

Indica o objeto de origem a ser copiado.

Tipo: string

Sim

x-obs-copy-source-range

Indica o bucket de bytes (início - fim) a serem copiados do objeto de origem. start indica o byte inicial da peça a ser copiada e end indica o byte final.

Tipo: integer

Não

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

Indica um algoritmo usado para criptografar uma parte de destino. 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 and x-obs-server-side-encryption-customer-key-MD5.

Se algum processo é anormal: Este cabeçalho é necessário quando SSE-C é usado. O algoritmo de encriptação deve ser o mesmo que o algoritmo usado para iniciar tarefas de carregamento de várias partes.

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

Indica uma chave usada para criptografar uma peça de destino. 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 and x-obs-server-side-encryption-customer-key-MD5.

Se você selecionar No, este cabeçalho será necessário quando SSE-C for usado. A chave deve ser a mesma usada para iniciar tarefas de carregamento de várias partes.

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

Indica o valor MD5 de uma chave usada para criptografar uma parte de destino. 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 and x-obs-server-side-encryption-customer-key.

Se algum processo é anormal: Este cabeçalho é necessário quando SSE-C é usado. O valor MD5 deve ser o mesmo usado para iniciar tarefas de carregamento de várias partes.

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

Indica um algoritmo usado por um objeto de origem. O cabeçalho é usado no modo SSE-C.

Tipo: string

Exemplo: x-obs-copy-source-server-encryption-side-customer-algorithm:AES256

Restrições: Este cabeçalho deve ser usado em conjunto com x-obs-copy-source-server-side-encryption-customer-key e x-obs-copy-source-server-side-encryption-customer-key-MD5.

Se algum processo é anormal: Este cabeçalho é necessário quando SSE-C é usado para copiar um objeto de origem.

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

Indica o algoritmo usado para descriptografar o objeto de origem. O cabeçalho é usado no modo SSE-C.

Tipo: string

Exemplo: x-obs-copy-source-server-side-encryption-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-copy-source-server-side-encryption-customer-algorithm e x-obs-copy-source-server-side-encryption-customer-key-MD5.

Se você selecionar No, este cabeçalho será necessário quando SSE-C for usado para copiar um objeto de origem.

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

Indica o valor MD5 da chave usada para o objeto de origem. 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-copy-source-server-side-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-copy-source-server-side-encryption-customer-algorithm e x-obs-copy-source-server-side-encryption-customer-key-MD5.

Se você selecionar No, este cabeçalho será necessário quando SSE-C for usado para copiar um objeto de origem.

Elementos de solicitação

Este pedido não envolve elementos.

Sintaxe da resposta

HTTP/1.1 status_code
Date: date

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<CopyPartResult xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
> 
    <LastModified>modifiedDate</LastModified>  
    <ETag>etag</ETag> 
</CopyPartResult>

Cabeçalhos de resposta

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

Tabela 3 Cabeçalhos de resposta adicionais

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 encriptação.

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

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-side-encryption-customer-key-MD5:4XvB3tbNTN+tIEVa0/fGaQ==

Elementos de resposta

Esta resposta contém elementos de um resultado de cópia de peça. Tabela 4 descreve os elementos.

Tabela 4 Elementos de resposta

Elemento

Descrição

LastModified

Indica a última vez que um objeto foi modificado.

Tipo: string

ETag

Valor de ETag da peça de destino. É o identificador exclusivo do conteúdo da peça e é usado para verificar a consistência dos dados ao mesclar peças.

Tipo: 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. Verifique se o bucket de origem ou de destino existe. Se o bucket de origem ou de destino não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchBucket.
  3. Se o objeto de origem não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchKey.
  4. Se o usuário não tiver permissão de leitura para o objeto especificado, o OBS retorna 403 Forbidden e o código de erro é AccessDenied.
  5. Se o usuário não tiver permissão de gravação para o bucket de destino, o OBS retornará 403 Forbidden e o código de erro será AccessDenied.
  6. Se a tarefa especificada 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 de carregamento de várias partes, o OBS retornará 403 Forbidden e o código de erro será AccessDenied.
  8. Quando o tamanho de uma parte copiada excedeu 5 GB, o OBS retorna 400 Bad Request.
  9. Se o número de seqüência de peça não estiver dentro do bucket de 1 a 10000, o OBS retornará o código de erro 400 Bad Request.

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

Solicitação de exemplo

PUT /tobject02?partNumber=2&carregamentoId=00000163D40171ED8DF4050919BD02B8 HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 05:16:32 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:dSnpnNpawDSsLg/xXxaqFzrAmMw=
x-obs-copy-source: /destbucket/object01

Resposta de exemplo

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 8DF400000163D40ABBD20405D30B0542
x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTIJpD2efLy5o8sTTComwBb2He0j11Ne
Content-Type: application/xml
Date: WED, 01 Jul 2015 05:16:32 GMT
Transfer-Encoding: chunked

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CopyPartResult xmlns="http://obs.ap-southeast-1.myhuaweicloud.com/doc/2015-06-30/">
  <LastModified>2015-07-01T05:16:32.344Z</LastModified>
  <ETag>"3b46eaf02d3b6b1206078bb86a7b7013"</ETag>
</CopyPartResult>