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

Anexação de um objeto

Funções

A operação AppendObject adiciona dados ao final de um objeto em um bucket especificado. Se não houver um objeto homônimo no bucket, um novo objeto será criado.

O objeto criado usando a operação AppendObject é um objeto anexável e o objeto carregado usando a operação PUT é um objeto normal.

Os objetos carregados devem ser armazenados em intervalos. Somente os usuários que têm a permissão de gravação em um intervalo podem fazer carregamento de objetos para o intervalo. O nome de cada objeto no mesmo intervalo deve ser exclusivo.

Para garantir que os dados não sejam danificados durante a transmissão, você pode adicionar o parâmetro Content-MD5 ao cabeçalho da solicitação. Depois de receber os dados, o OBS realiza a verificação MD5 para os dados. Se os dados forem inconsistentes, o OBS retornará uma mensagem de erro.

Essa operação permite especificar o parâmetro x-obs-acl ao criar um objeto anexável e definir a política de controle de permissão para o objeto.

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

Relacionamento com outras operações

  1. Se você executar a operação PUT em um objeto anexável existente, o objeto anexável será substituído pelo objeto recém carregado e o tipo de objeto será alterado para normal. Se você fizer o contrário, ocorrerá um erro.
  2. Um objeto anexável será alterado para um objeto normal após ser copiado. Um objeto anexável não pode ser copiado e salvo como um objeto anexável.

Restrições

  1. O horário da última modificação do objeto é atualizado cada vez que um carregamento de anexo é realizado.
  2. Se o modo de encriptação SSE-C for usado no lado do servidor, o carregamento de anexação será o mesmo que o segmento de inicialização. Nesse caso, os cabeçalhos de solicitação, como x-obs-server-side-encryption devem ser carregados.
  3. Para a encriptação do lado do servidor (SSE-KMS), o cabeçalho da solicitação, como x-obs-server-side-encryption é especificado apenas quando o arquivo é carregado pela primeira vez e não existe nenhum objeto com o mesmo nome no intervalo.
  4. O comprimento de cada carregamento anexado não pode exceder o limite superior (5 GB) do comprimento do objeto.
  5. O número máximo de gravações somente de acréscimo para cada objeto anexável é 10.000.
  6. Se a classe de armazenamento de objetos for Cold, essa operação de API não poderá ser usada.
  7. Se a replicação entre regiões estiver configurada para um bucket, essa operação de API não poderá ser usada.

Sintaxe da solicitação

POST /ObjectName?append&position=Position HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com 
Content-Type: application/xml 
Content-Length: length
Authorization: authorization
Date: date
<Optional Additional Header> 
<object Content>

Parâmetros de solicitação

A solicitação precisa especificar parâmetros na mensagem, indicando que a solicitação é para anexar carregamento e o local de carregamento deve ser especificado. Para obter detalhes sobre os parâmetros, consulte Tabela 1.

Tabela 1 Parâmetros de solicitação

Parâmetro

Descrição

Obrigatório

append

Indica que o arquivo é carregado no modo de anexação.

Tipo: string

Sim

position

Local do carregamento de anexação Para que um objeto seja anexado, o valor da position deve ser definido como 0 quando o objeto for carregado pela primeira vez. O valor da position será transportado no cabeçalho x-obs-next-append-position da resposta retornada pelo servidor quando o objeto for carregado com sucesso na próxima vez.

Tipo: inteiro

Sim

Cabeçalhos de solicitação

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

Tabela 2 descreve os cabeçalhos de mensagem adicionais que uma solicitação pode usar quando o parâmetro position=0 é solicitado.

Essa solicitação pode usar o cabeçalho de solicitação de encriptação do lado do servidor. Para mais detalhes, consulte Tabela 3.

Tabela 2 Cabeçalhos de solicitação

Cabeçalho

Descrição

Obrigatório

x-obs-acl

Para o primeiro anexo, o cabeçalho da mensagem pode ser adicionado para definir a política de controle de permissão do objeto. As políticas comuns predefinidas são usadas, incluindo: private, public-read, public-read-write. For details about each policy, see the ACL configuration using head fields in ACL.

Tipo: string

Nota: Este cabeçalho é uma política predefinida expressa numa cadeia de caracteres.

Não

x-obs-grant-read

Para a primeira gravação, você pode usar esse campo de cabeçalho para autorizar todos os usuários na conta a permissão para ler objetos e obter metadados de objeto.

Tipo: string

Não

x-obs-grant-read-acp

Para a primeira gravação, você pode usar esse campo de cabeçalho para autorizar todos os usuários na conta a permissão para obter informações de ACL de objeto.

Tipo: string

Não

x-obs-grant-write-acp

Para a primeira gravação, você pode usar esse campo de cabeçalho para autorizar todos os usuários na conta a permissão para gravar ACL de objeto.

Tipo: string

Não

x-obs-grant-full-control

Para a primeira gravação, você pode usar esse campo de cabeçalho para autorizar todos os usuários na conta a permissão para ler objetos, obter metadados de objeto, obter informações de ACL de objeto e gravar ACL de objeto.

Tipo: string

Não

x-obs-storage-class

Para a primeira gravação, você pode usar esse campo de cabeçalho para configurar a classe de armazenamento de objetos. 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

Nota: O OBS fornece três classes de armazenamento: Padrão (STANDARD), Acesso Infrequente (WARM) e Arquivo (COLD). No entanto, os objetos frios não suportam carregamento de anexação. Os valores configuráveis são os seguintes: STANDARD e WARM, diferenciando maiúsculas e minúsculas.

Exemplo: x-obs-storage-class:STANDARD

Não

x-obs-meta-*

Para a primeira gravação, você pode usar um cabeçalho começando com x-obs-meta- para definir os metadados do objeto em uma solicitação HTTP. Os metadados definidos pelo usuário serão retornados no cabeçalho da resposta quando você recuperar ou consultar os metadados do objeto. O tamanho da solicitação HTTP excluindo o corpo da solicitação deve ser igual ou menor que 8 KB.

Tipo: string

Exemplo: x-obs-meta-test:test metadata

Não

x-obs-persistent-headers

Para o primeiro anexo, 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. 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:dmFsdWUy

O cabeçalho retornado para baixar o objeto ou obter os metadados do objeto é key1:value1 ou key2:value2, respectivamente.

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 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.

No

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-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

Tabela 3 Cabeçalhos de solicitação de encriptação do servidor

Cabeçalho

Descrição

Obrigatório

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 ou

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.

Não. Este cabeçalho é necessário quando SSE-C é 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.

Não. Este cabeçalho é necessário quando SSE-C é usado.

Elementos de solicitação

Este pedido não envolve elementos.

Sintaxe da resposta

1
2
3
4
HTTP/1.1 status_code
Date: date
ETag: etag
Content-Length: length

Cabeçalhos de resposta

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

A ETag retorna o valor de hash dos dados a serem carregados, não o valor de hash do objeto inteiro.

Tabela 4 Cabeçalhos de resposta adicionais

Cabeçalho

Descrição

x-obs-versão-id

ID da versão do objeto. Se o controle de versão estiver ativado para o bucket, o número da versão do objeto será retornado.

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 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-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==

x-obs-next-append-position

Indica a posição a ser fornecida para a próxima solicitação.

Tipo: Integer

Elementos de resposta

Esta resposta não envolve elementos.

Respostas de erro

  1. Se o comprimento do objeto exceder o limite devido ao carregamento de anexação, o OBS retornará 400 Bad Request e o código de erro será AppendTooLarge.
  2. Se o valor de position for diferente do comprimento original do objeto atual, OBS retornará 409 Conflict e o código de erro será PositionNotEqualToLength.
  3. Se um objeto com o mesmo nome existir em um intervalo e o tipo de objeto não for Apensável, o OBS retornará 409 Conflict e o código de erro será ObjectNotAppendable.
  4. Se o número de tempos de gravação de um objeto exceder 10000, o OBS retornará 409 Conflict e o código de erro será ObjectNotAppendable.
  5. Se a classe de armazenamento de objetos for Cold, essa operação de API não poderá ser usada. Caso contrário, OBS retorna 409 Conflict e o código de erro é ObjectNotAppendable.
  6. Se a replicação entre regiões estiver configurada para um bucket, essa operação de API não poderá ser usada. Caso contrário, o OBS retorna 400 Bad Request e o código de erro é OperationNotSupported.

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

Solicitação de exemplo 1

Anexação comum

POST /object?append&position=0 HTTP/1.1
Host: examplebucket.obs.region.myhuaweicloud.com
Expires: Wed, 27 Jun 2015 13:45:50 GMT
Date: Wed, 08 Jul 2015 06:57:01 GMT
Content-Type: image/jpg
Content-Length: 1458
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:kZoYNv66bsmc10+dcGKw5x2PRrk=

[1458 bytes of object data]

Resposta de exemplo 1

1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Date: Wed, 27 Jun 2015 13:45:50 GMT
ETag: "d41d8cd98f00b204e9800998ecf8427e"
Content-Length: 0  
Server: OBS
x-obs-request-id: 8DF400000163D3F0FD2A03D2D30B0542
x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCTjCqTmsA1XRpIrmrJdvcEWvZyjbztdd 
x-obs-next-append-position: 1458

Solicitação de exemplo 2

Anexar um objeto com os campos de redirecionamento e cabeçalho definido pelo usuário.

O bucket examplebucket existe, mas o objeto obj001 não existe. Crie um objeto fazendo a chamada de API para a operação de acréscimo. Defina o campo de cabeçalho de redirecionamento da seguinte forma: "x-obs-website-redirect-location":"http://www.example.com/", e defina o campo de cabeçalho definido pelo usuário para: "x-obs-meta-redirect":"redirect". A solicitação é o seguinte:

POST /obj001?append&position=0 HTTP/1.1
Host: examplebucket.obs.region.myhuaweicloud.com
Expires: Wed, 27 Jun 2015 13:45:50 GMT
Date: Wed, 08 Jul 2015 06:57:01 GMT
x-obs-website-redirect-location: http://www.example.com/
x-obs-meta-redirect: redirect
Content-Length: 6
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:kZoYNv66bsmc10+dcGKw5x2PRrk=

[6 bytes of object data]

Resposta de exemplo 2

1
2
3
4
5
6
7
8
HTTP/1.1 200 OK
Date: Wed, 27 Jun 2015 13:45:50 GMT
ETag: "9516dfb15f51c7ee19a4d46b8c0dbe1d"
Content-Length: 0  
Server: OBS
x-obs-request-id: 5DEB00000164A3150AC36F8F0C120D50
x-obs-id-2: 32AAAUgAIAABAAAQAAEAABAAAQAAEAABCSrVlTYwsA4p9GEW+LYqotSl5BYDxHfT 
x-obs-next-append-position: 6