Todos os produtos
Search
Central de documentação

Object Storage Service:AppendObject

Última atualização: Jul 03, 2026

Faz o upload de um objeto anexando dados. Os objetos criados com AppendObject são do tipo Appendable, enquanto os objetos enviados com PutObject são do tipo Normal.

Versionamento

Quando o versionamento está ativado ou suspenso para um bucket, observe o seguinte comportamento para objetos Appendable:

  • É possível anexar dados apenas à versão atual de um objeto Appendable. O OSS não cria versões anteriores para esse objeto.

    Uma operação PutObject ou DeleteObject na versão atual salva o objeto Appendable como uma versão anterior. Após isso, não é mais possível anexar dados ao objeto.

  • A operação AppendObject não pode ser executada em objetos que não sejam do tipo Appendable, como objetos Normal ou marcadores de exclusão.

  • Uma nova versão Appendable só pode ser criada quando o objeto não existe ou quando a versão mais recente é um marcador de exclusão. Defina position como 0.

Limites

  • O tamanho máximo de um objeto Appendable é de 5 GB.

  • Não é possível usar a operação AppendObject em objetos protegidos por uma política de retenção.

  • Objetos Appendable não suportam criptografia no lado do servidor com CMK ID por meio do KMS.

  • O desempenho de download de objetos Appendable é significativamente inferior ao de objetos Normal ou Multipart. Avalie se esse comportamento atende aos seus requisitos.

Permissões

Por padrão, uma conta Alibaba Cloud possui permissões totais. Usuários RAM ou funções RAM vinculados a uma conta Alibaba Cloud não têm nenhuma permissão por padrão. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões de operação por meio de políticas do RAM ou Bucket Policy.

API

Action

Descrição

AppendObject

oss:PutObject

Use esta operação para fazer o upload de um objeto anexando-o a um objeto existente.

oss:PutObjectTagging

Ao fazer o upload de um objeto anexando-o a um objeto existente, essa permissão será necessária caso você especifique tags de objeto por meio de x-oss-tagging.

Sintaxe da solicitação

POST /ObjectName?append&position=Position HTTP/1.1
Content-Length: ContentLength
Content-Type: ContentType
Host: BucketName.oss.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue

Cabeçalhos da solicitação

Nome

Tipo

Obrigatório

Exemplo

Descrição

Cache-control

string

Não

no-cache

Comportamento de cache da página web para o objeto. Definido na RFC2616.

Padrão: nenhum

Content-Disposition

string

Não

attachment;filename=oss_download.jpg

Nome do objeto durante o download. Definido na RFC2616.

Padrão: nenhum

Content-MD5

string

Não

ohhnqLBJFiKkPSBO1eNaUA==

Hash MD5 codificado em Base64 usado para verificar a integridade do corpo da mensagem.

Calcule o hash MD5 do corpo da mensagem (excluindo cabeçalhos) para gerar um valor de 128 bits e, em seguida, codifique-o em Base64.

Padrão: nenhum

Restrições: nenhuma

Expires

string

Não

Wed, 08 Jul 2015 16:57:01 GMT

Tempo de expiração. Definido na RFC2616.

Padrão: nenhum

x-oss-server-side-encryption

string

Não

AES256

Método de criptografia no lado do servidor.

Valores válidos:

  • AES256: utiliza chaves totalmente gerenciadas pelo OSS para criptografia e descriptografia (SSE-OSS).

  • KMS: utiliza chaves gerenciadas pelo KMS para criptografia e descriptografia.

x-oss-object-acl

string

Não

private

ACL do objeto.

Valores válidos:

  • default (padrão): O objeto herda a ACL do bucket.

  • private: Apenas o proprietário e usuários autorizados têm permissões de leitura e gravação no objeto. Outros usuários não podem acessar o objeto.

  • public-read: Apenas o proprietário e usuários autorizados podem ler e gravar o objeto. Outros usuários têm acesso somente leitura. Use com cautela.

  • public-read-write: Todos os usuários têm acesso de leitura e gravação. Use com cautela.

As permissões de acesso estão descritas em ACL de objeto.

x-oss-storage-class

string

Não

Standard

Classe de armazenamento do objeto.

Quando especificado, o objeto é armazenado nesta classe independentemente da classe de armazenamento do bucket. Por exemplo, definir x-oss-storage-class como Standard em um bucket IA armazena o objeto como Standard.

Valores válidos:

  • Standard: Standard

  • IA: Infrequent Access

  • Archive: Archive Storage

Mais detalhes disponíveis em Classes de armazenamento.

Importante
  • Este cabeçalho de solicitação tem efeito apenas na primeira operação de anexo. Ele não se aplica a operações de anexo subsequentes.

  • Objetos do tipo Appendable não podem ser convertidos para a classe de armazenamento Cold Archive ou Deep Cold Archive de forma alguma.

x-oss-meta-*

string

Não

x-oss-meta-location

Cabeçalhos de metadados personalizados. Aplica-se apenas à primeira operação de anexo. Parâmetros com o prefixo x-oss-meta-* são armazenados como metadados do objeto.

Limite de tamanho: O total de metadados não pode exceder 8 KB.

Regras de nomenclatura: Apenas hífens (-), dígitos e letras minúsculas (a-z) são permitidos. Letras maiúsculas são convertidas para minúsculas. Underscores (_) não são suportados.

x-oss-tagging

string

Não

TagA=A

Tags de objeto no formato chave-valor. Múltiplas tags são separadas por e comercial (&), como em TagA=A&TagB=B.

Importante
  • Este cabeçalho de solicitação tem efeito apenas na primeira operação de anexo. Ele não se aplica a operações de anexo subsequentes.

  • A chave e o valor devem ser codificados em URL. A chave é obrigatória, mas o valor é opcional. Por exemplo, você pode definir as tags do objeto como TagA&TagB=B.

Esta operação também suporta Cabeçalhos comuns de solicitação.

Parâmetros da solicitação

Importante

Os parâmetros append e position fazem parte do CanonicalizedResource e devem ser incluídos na assinatura.

Nome

Tipo

Obrigatório

Exemplo

Descrição

append

string

Sim

Não aplicável

Indica uma operação AppendObject. Cada chamada atualiza a hora da última modificação do objeto.

position

string

Sim

0

O deslocamento em bytes a partir do qual iniciar o anexo. Após cada operação bem-sucedida, x-oss-next-append-position indica a próxima posição.

O primeiro anexo deve definir position como 0. Anexos subsequentes devem definir position como o tamanho atual do objeto. Por exemplo, se o primeiro anexo tiver content-length 65536, o segundo deve definir position como 65536.

  • Quando position é 0 e não existe nenhum objeto com o mesmo nome, a solicitação se comporta como PutObject. Você pode definir cabeçalhos como x-oss-server-side-encryption, que serão incluídos nas respostas subsequentes do AppendObject. Para modificar metadados posteriormente, use CopyObject.

  • Anexar conteúdo de comprimento zero na posição correta não altera o estado do objeto.

Cabeçalhos da resposta

Cabeçalho da resposta

Tipo

Exemplo

Descrição

x-oss-next-append-position

Inteiro de 64 bits

1717

Posição para o próximo anexo, igual ao tamanho atual do objeto.

Retornado em caso de sucesso ou quando ocorre um erro 409 devido a incompatibilidade de posição.

x-oss-hash-crc64ecma

Inteiro de 64 bits

3231342946509354535

Valor CRC de 64 bits do objeto, calculado conforme o padrão CRC-64/XZ.

Esta operação também suporta Cabeçalhos comuns de resposta.

Cálculo CRC-64

Métodos de cálculo suportados:

  • Cálculo usando o módulo Boost CRC

    typedef boost::crc_optimal<64, 0x42F0E1EBA9EA3693ULL, 0xffffffffffffffffULL, 0xffffffffffffffffULL, true, true> boost_ecma;
    uint64_t do_boost_crc(const char* buffer, int length)
    {
        boost_ecma crc;
        crc.process_bytes(buffer, length);
        return crc.checksum();
    }
  • Cálculo usando crcmod do Python

    import crcmod
    do_crc64 = crcmod.mkCrcFun(0x142F0E1EBA9EA3693, initCrc=0, xorOut=0xffffffffffffffff, rev=True)
    print(do_crc64(b"123456789"))

Operações relacionadas

Outra operação

Descrição da relação

PutObject

Executar PutObject em um objeto Appendable existente sobrescreve o objeto e altera seu tipo para Normal.

HeadObject

Executar HeadObject em um objeto Appendable retorna x-oss-next-append-position, x-oss-hash-crc64ecma e x-oss-object-type (definido como Appendable).

GetBucket (ListObjects)

GetBucket lista objetos Appendable com Type definido como Appendable.

Exemplos

  • Exemplo de solicitação

    POST /oss.jpg?append&position=0 HTTP/1.1 
    Host: oss-example.oss.aliyuncs.com 
    Cache-control: no-cache 
    Expires: Wed, 08 Jul 2015 16:57:01 GMT 
    x-oss-storage-class: Archive
    Content-Disposition: attachment;filename=oss_download.jpg 
    Date: Wed, 08 Jul 2015 06:57:01 GMT 
    Content-Type: image/jpg 
    Content-Length: 1717 
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-disposition;content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e  
    [1717 bytes of object data]

    Exemplo de resposta

    HTTP/1.1 200 OK
    Date: Wed, 08 Jul 2015 06:57:01 GMT
    ETag: "0F7230CAA4BE94CCBDC99C550000****"
    Connection: keep-alive
    Content-Length: 0  
    Server: AliyunOSS
    x-oss-hash-crc64ecma: 14741617095266562575
    x-oss-next-append-position: 1717
    x-oss-request-id: 559CC9BDC755F95A6448****
  • Exemplo de solicitação com versionamento

    Quando o versionamento está ativado, a resposta do AppendObject inclui x-oss-version-id, que especifica o ID da versão do objeto atual.

    POST /example?append&position=0 HTTP/1.1 
    Host: versioning-append.oss.aliyuncs.com 
    Date: Tue, 09 Apr 2019 03:59:33 GMT
    Content-Length: 3
    Content-Type: application/octet-stream
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e

    Exemplo de resposta

    HTTP/1.1 200 OK
    Date: Tue, 09 Apr 2019 03:59:33 GMT
    ETag: "2776271A4A09D82CA518AC5C0000****"
    Connection: keep-alive
    Content-Length: 0  
    Server: AliyunOSS
    x-oss-version-id: CAEQGhiBgIC_k6aV5RgiIGI3YTY2ZmMzYWJlMzQ3YjM4YTljOTk5YjUyZGF****
    x-oss-hash-crc64ecma: 3231342946509354535
    x-oss-next-append-position: 47
    x-oss-request-id: 5CAC18A5B7AEADE01700****

SDKs

SDKs para esta operação:

Interface de linha de comando ossutil

Use o comando append-object no ossutil.

Códigos de erro

Código de erro

Código de status HTTP

Descrição

ObjectNotAppendable

409

AppendObject foi chamado em um objeto que não é do tipo Appendable.

PositionNotEqualToLength

409

  • O valor de position não corresponde ao comprimento atual do objeto.

    Use o cabeçalho de resposta x-oss-next-append-position para tentar novamente. Solicitações simultâneas ainda podem falhar com este erro.

  • Quando position é 0, a solicitação tem sucesso apenas se não existir nenhum objeto Appendable com o mesmo nome ou se o existente tiver comprimento 0. Caso contrário, este erro é retornado.

InvalidArgument

400

Os valores de parâmetros como x-oss-storage-class e x-oss-object-acl são inválidos.

FileImmutable

409

O bucket está em estado protegido e não permite exclusão ou modificação.

KmsServiceNotEnabled

403

A criptografia KMS foi especificada, mas o Key Management Service (KMS) não está ativado no console.