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.
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.
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.
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.
Respostas de erro
- Se a AK ou assinatura for inválida, o OBS retornará 403 Forbidden e o código de erro será AccessDenied.
- 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.
- Se o objeto de origem não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchKey.
- 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.
- 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.
- Se a tarefa especificada não existir, o OBS retornará 404 Not Found e o código de erro será NoSuchUpload.
- 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.
- Quando o tamanho de uma parte copiada excedeu 5 GB, o OBS retorna 400 Bad Request.
- 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> |