Acrescentar Bloco da URL

A Append Block From URL operação confirma um novo bloco de dados no final de um blob de acréscimo existente.

A Append Block From URL operação só será permitida se o blob tiver sido criado com definido AppendBlobcomo x-ms-blob-type . Append Block From URL só tem suporte na versão 2018-11-09 ou posterior.

Solicitação

Você pode construir a solicitação da Append Block From URL seguinte maneira. HTTPS é recomendado. Substitua myaccount pelo nome da sua conta de armazenamento.

URI de solicitação do método PUT Versão HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock HTTP/1.1

Ao fazer uma solicitação no serviço de armazenamento emulado, especifique o nome do host do emulador e Armazenamento de Blobs do Azure porta como 127.0.0.1:10000, seguido pelo nome da conta de armazenamento emulada.

URI de solicitação do método PUT Versão HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=appendblock HTTP/1.1

Para obter mais informações, consulte Usar o emulador Azurite para desenvolvimento local do armazenamento do Azure.

Parâmetros do URI

Parâmetro Descrição
timeout Opcional. O parâmetro timeout é expresso em segundos. Para obter mais informações, consulte Configurando tempos limite para operações de Armazenamento de Blobs.

Cabeçalhos da solicitação

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

Cabeçalho da solicitação Descrição
Authorization Obrigatórios. Especifica o esquema de autorização, o nome da conta e a assinatura. Confira Autorizar solicitações para o Armazenamento do Azure para obter mais informações.
Date ou x-ms-date Obrigatórios. Especifica o UTC (Tempo Universal Coordenado) para a solicitação. Para saber mais, confira Autorizar solicitações para o Armazenamento do Azure.
x-ms-version Necessário para todas as solicitações autorizadas. Especifica a versão da operação a ser usada para esta solicitação. Para obter mais informações, consulte Controle de versão para os Serviços de Armazenamento do Azure.
Content-Length Obrigatórios. Especifica o número de bytes que estão sendo transmitidos no corpo da solicitação. O valor desse cabeçalho deve ser definido como zero. Quando o comprimento não for zero, a operação falhará com o código de erro 400 (Solicitação Incorreta).
x-ms-copy-source:name Obrigatórios. Especifica a URL do blob de origem. O valor pode ser uma URL de até 2 KiB de comprimento que especifica um blob. O valor deve ser codificado por URL, como seria exibido em um URI de solicitação. O blob de origem deve ser público ou deve ser autorizado por meio de uma assinatura de acesso compartilhado. Se o blob de origem for público, nenhuma autorização será necessária para executar a operação. Aqui estão alguns exemplos de URLs de objeto de origem:

https://myaccount.blob.core.windows.net/mycontainer/myblob
https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-copy-source-authorization: <scheme> <signature> Opcional. Especifica o esquema de autorização e a assinatura para a origem da cópia. Para saber mais, confira Autorizar solicitações para o Armazenamento do Azure.
Somente o portador do esquema tem suporte para Microsoft Entra ID.
Esse cabeçalho tem suporte na versão 2020-10-02 e posterior.
x-ms-source-range Opcional. Carrega apenas os bytes do blob na URL de origem no intervalo especificado. Se isso não for especificado, todo o conteúdo do blob de origem será carregado como um único bloco de acréscimo. Consulte Especificando o cabeçalho de intervalo para operações de Armazenamento de Blobs para obter mais informações.
x-ms-source-content-md5 Opcional. Um hash MD5 do conteúdo do bloco de acréscimo do URI. Esse hash é usado para verificar a integridade do bloco de acréscimo durante o transporte dos dados do URI. Quando você especifica esse cabeçalho, o serviço de armazenamento compara o hash do conteúdo que chegou da fonte de cópia com esse valor de cabeçalho.

Observe que esse hash MD5 não é armazenado com o blob.

Se os dois hashes não corresponderem, a operação falhará com o código de erro 400 (Solicitação inválida).
x-ms-source-content-crc64 Opcional. Um hash CRC64 do conteúdo do bloco de acréscimo do URI. Esse hash é usado para verificar a integridade do bloco de acréscimo durante o transporte dos dados do URI. Quando você especifica esse cabeçalho, o serviço de armazenamento compara o hash do conteúdo que chegou da fonte de cópia com esse valor de cabeçalho.

Observe que esse hash CRC64 não é armazenado com o blob.

Se os dois hashes não corresponderem, a operação falhará com o código de erro 400 (Solicitação inválida).

Se os x-ms-source-content-md5 cabeçalhos e x-ms-source-content-crc64 estiverem presentes, a solicitação falhará com um 400 (Solicitação Incorreta).

Esse cabeçalho tem suporte na versão 2019-02-02 ou posterior.
x-ms-encryption-scope Opcional. Indica o escopo de criptografia a ser usado para criptografar o conteúdo de origem. Esse cabeçalho tem suporte na versão 2019-02-02 ou posterior.
x-ms-lease-id:<ID> Obrigatório se o blob tiver uma concessão ativa. Para executar essa operação em um blob com uma concessão ativa, especifique a ID de concessão válida para esse cabeçalho.
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres kib (1 kibibyte) que é registrado nos logs quando o registro em log é configurado. É altamente recomendável que você use esse cabeçalho para correlacionar atividades do lado do cliente com solicitações recebidas pelo servidor. Para obter mais informações, consulte Monitorar Armazenamento de Blobs do Azure.
x-ms-blob-condition-maxsize Cabeçalho condicional opcional. O comprimento máximo em bytes permitido para o blob de acréscimo. Se a Append Block From URL operação fizer com que o blob exceda esse limite ou se o tamanho do blob já for maior que o valor especificado nesse cabeçalho, a solicitação falhará com um 412 (Falha na pré-condição).
x-ms-blob-condition-appendpos Cabeçalho condicional opcional, usado somente para a Append Block from URL operação. Um número que indica o deslocamento de bytes a ser comparado. Append Block from URL só terá êxito se a posição de acréscimo for igual a esse número. Se não estiver, a solicitação falhará com um 412 (falha na pré-condição).

Essa operação dá suporte ao uso de cabeçalhos condicionais adicionais para garantir que a API seja bem-sucedida somente se uma condição especificada for atendida. Para obter mais informações, consulte Especificando cabeçalhos condicionais para operações de Armazenamento de Blobs.

Cabeçalhos de solicitação (chaves de criptografia fornecidas pelo cliente)

A partir da versão 2019-02-02, você pode especificar os cabeçalhos a seguir na solicitação para criptografar um blob com uma chave fornecida pelo cliente. A criptografia com uma chave fornecida pelo cliente (e o conjunto correspondente de cabeçalhos) é opcional.

Cabeçalho da solicitação Descrição
x-ms-encryption-key Obrigatórios. A chave de criptografia AES-256 codificada em Base64.
x-ms-encryption-key-sha256 Obrigatórios. O hash SHA256 codificado em Base64 da chave de criptografia.
x-ms-encryption-algorithm: AES256 Obrigatórios. Especifica o algoritmo a ser usado para criptografia. O valor deste cabeçalho deve ser AES256.

Corpo da solicitação

O corpo da solicitação tem o conteúdo do bloco.

Solicitação de exemplo

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=appendblock  HTTP/1.1  

Request Headers:  
x-ms-version: 2018-11-09  
x-ms-date: <date>  
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-65535
x-ms-blob-condition-appendpos: 2097152  
x-ms-blob-condition-maxsize: 4194304  
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 0 
If-Match: "0x8CB172A360EC34B"  

Resposta

A resposta inclui um código de status HTTP e um conjunto de cabeçalhos de resposta.

Código de status

Uma operação bem-sucedida retorna o código de status 201 (Criado). Para obter informações sobre códigos de status, consulte Códigos de status e de erro.

Cabeçalhos de resposta

A resposta para esta operação inclui os cabeçalhos a seguir. A resposta também pode incluir cabeçalhos HTTP padrão adicionais. Todos os cabeçalhos padrão estão em conformidade com a especificação do protocolo HTTP/1.1.

Cabeçalho de resposta Descrição
Etag O ETag contém um valor entre aspas. O cliente usa o valor para executar operações condicionais PUT usando o cabeçalho da solicitação If-Match .
Last-Modified A data e a hora da última modificação feita no blob. O formato da data segue RFC 1123. Para obter mais informações, consulte Representação de valores de data e hora em cabeçalhos.

Qualquer operação de gravação no blob (incluindo atualizações nos metadados ou propriedades do blob) altera a hora da última modificação do blob.
Content-MD5 Esse cabeçalho é retornado para que o cliente possa verificar a integridade do conteúdo da mensagem. O Armazenamento de Blobs calcula o valor desse cabeçalho. Não é necessariamente o mesmo valor especificado nos cabeçalhos de solicitação. Para a versão 2019-02-02 ou posterior, esse cabeçalho só é retornado quando a solicitação tem esse cabeçalho.
x-ms-content-crc64 Para a versão 2019-02-02 ou posterior. Esse cabeçalho é retornado para que o cliente possa verificar a integridade do conteúdo da mensagem. O Armazenamento de Blobs calcula o valor desse cabeçalho. Não é necessariamente o mesmo valor especificado nos cabeçalhos de solicitação.

Esse cabeçalho é retornado quando o x-ms-source-content-md5 cabeçalho não está presente na solicitação.
x-ms-request-id Esse cabeçalho identifica exclusivamente a solicitação que foi feita e pode ser usado para solucionar problemas da solicitação.
x-ms-version Indica a versão do Armazenamento de Blobs usada para executar a solicitação. Esse cabeçalho é retornado para solicitações feitas na versão 2009-09-19 e mais recente.
Date Um valor de data/hora UTC gerado pelo serviço que indica a hora em que a resposta foi iniciada.
x-ms-blob-append-offset Esse cabeçalho de resposta é retornado somente para operações de acréscimo. Ele retorna o deslocamento no qual o bloco foi confirmado, em bytes.
x-ms-blob-committed-block-count O número de blocos confirmados presentes no blob. Você pode usar isso para controlar quantos acréscimos mais podem ser feitos.
x-ms-request-server-encrypted: true/false Versão 2015-12-11 ou posterior. O valor desse cabeçalho será definido true como se o conteúdo da solicitação for criptografado com êxito usando o algoritmo especificado. Caso contrário, o valor será definido como false.
x-ms-encryption-key-sha256 Versão 2019-02-02 ou posterior. Esse cabeçalho será retornado se a solicitação tiver usado uma chave fornecida pelo cliente para criptografia. Em seguida, o cliente pode garantir que o conteúdo da solicitação seja criptografado com êxito usando a chave fornecida.
x-ms-encryption-scope Versão 2019-02-02 ou posterior. Esse cabeçalho será retornado se a solicitação tiver usado um escopo de criptografia. Em seguida, o cliente pode garantir que o conteúdo da solicitação seja criptografado com êxito usando o escopo de criptografia.

Resposta de exemplo

Response Status:  
HTTP/1.1 201 Created  

Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: <date>  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-blob-append-offset: 2097152  
x-ms-blob-committed–block-count: 1000  

Autorização

A autorização é necessária ao chamar qualquer operação de acesso a dados no Armazenamento do Azure. Você pode autorizar a Append Block From URL operação conforme descrito abaixo.

Os detalhes de autorização nesta seção se aplicam ao destino da cópia. Para obter mais informações sobre a autorização de origem de cópia, consulte os detalhes do cabeçalho x-ms-copy-sourcede solicitação .

O Armazenamento do Azure dá suporte ao uso de Microsoft Entra ID para autorizar solicitações para dados de blob. Com Microsoft Entra ID, você pode usar o RBAC (controle de acesso baseado em função) do Azure para conceder permissões a uma entidade de segurança. A entidade de segurança pode ser um usuário, um grupo, uma entidade de serviço de aplicativo ou uma identidade gerenciada do Azure. A entidade de segurança é autenticada por Microsoft Entra ID para retornar um token OAuth 2.0. Em seguida, o token pode ser usado para autorizar uma solicitação no serviço de Blob.

Para saber mais sobre a autorização usando Microsoft Entra ID, consulte Autorizar o acesso a blobs usando Microsoft Entra ID.

Permissões

Veja abaixo a ação RBAC necessária para que um usuário, grupo ou entidade de serviço Microsoft Entra chame a Append Block From URL operação e a função rbac interna do Azure com privilégios mínimos que inclua esta ação:

Para saber mais sobre como atribuir funções usando o RBAC do Azure, confira Atribuir uma função do Azure para acesso aos dados de blob.

Comentários

Append Block From URL carrega um bloco até o final de um blob de acréscimo existente. O bloco de dados fica imediatamente disponível depois que a chamada é bem-sucedida no servidor. Um máximo de 50.000 acréscimos são permitidos para cada blob de acréscimo, em que. Cada bloco pode ter um tamanho diferente.

A tabela a seguir descreve o máximo permitido de tamanhos de bloco e blob, por versão de serviço:

Versão do serviço Tamanho máximo do bloco (via Append Block From URL) Tamanho máximo do blob
Versão 2022-11-02 e posterior 100 MiB (versão prévia) Aproximadamente 4,75 TiB (100 MiB × 50.000 blocos)
Versões anteriores a 2022-11-02 4 MiB Aproximadamente 195 gibibytes (GiB) (4 MiB × 50.000 blocos)

Na versão 2020-10-02 e posterior, Microsoft Entra ID autorização tem suporte para a origem da operação de cópia.

Append Block From URL só terá êxito se o blob já existir.

Os blobs carregados usando Append Block From URL não expõem IDs de bloco, portanto, você não pode chamar Obter Lista de Blocos em um blob de acréscimo. Isso resulta em um erro.

Você pode especificar os seguintes cabeçalhos opcionais e condicionais na solicitação:

  • x-ms-blob-condition-appendpos: você pode definir esse cabeçalho como um deslocamento de bytes no qual o cliente espera acrescentar o bloco. A solicitação só terá êxito se o deslocamento atual corresponder ao especificado pelo cliente. Caso contrário, a solicitação falhará com o código de erro 412 (Falha na pré-condição).

    Os clientes que usam um único gravador podem usar esse cabeçalho para determinar se uma Append Block From URL operação foi bem-sucedida, apesar da falha de rede.

  • x-ms-blob-condition-maxsize: os clientes podem usar esse cabeçalho para garantir que as operações de acréscimo não aumentem o tamanho do blob além do tamanho máximo esperado em bytes. Se a condição falhar, a solicitação falhará com o código de erro 412 (Falha na pré-condição).

Se você tentar carregar um bloco maior que o tamanho permitido, o serviço retornará o código de erro HTTP 413 (Entidade de Solicitação Muito Grande). O serviço também retorna informações adicionais sobre o erro na resposta, inclusive o tamanho máximo permitido do bloco em bytes. Se você tentar carregar mais de 50.000 blocos, o serviço retornará o código de erro 409 (Conflito).

Se o blob tiver uma concessão ativa, o cliente deverá especificar uma ID de concessão válida na solicitação para gravar um bloco no blob. Se o cliente não especificar uma ID de concessão ou especificar uma ID de concessão inválida, o Armazenamento de Blobs retornará o código de erro 412 (Falha na pré-condição). Se o cliente especificar uma ID de concessão, mas o blob não tiver uma concessão ativa, o serviço retornará o código de erro 412.

Se você chamar Append Block From URL em um blob de blocos ou blob de páginas existente, o serviço retornará o código de erro 409 (Conflito). Se você chamar Append Block From URL em um blob inexistente, o serviço retornará o código de erro 404 (Não Encontrado).

Evitar acréscimos duplicados ou atrasados

Em um único cenário de gravador, o cliente pode evitar acréscimos duplicados ou gravações atrasadas usando o x-ms-blob-condition-appendpos cabeçalho condicional para marcar o deslocamento atual. O cliente também pode evitar duplicatas ou atrasos verificando o ETag condicionalmente, usando If-Match.

Em um cenário de gravador múltiplo, cada cliente pode usar cabeçalhos condicionais. Isso pode não ser ideal para o desempenho. Para a maior taxa de transferência de acréscimo simultânea, os aplicativos devem lidar com acréscimos redundantes e acréscimos atrasados em sua camada de aplicativo. Por exemplo, os aplicativos podem adicionar épocas ou números de sequência nos dados que estão sendo acrescentados.

Para saber mais sobre os preços da categoria de cobrança especificada, confira Preços Armazenamento de Blobs do Azure.

Cobrança

As solicitações de preços podem ser originadas de clientes que usam APIs de Armazenamento de Blobs, diretamente por meio da API REST do Armazenamento de Blobs ou de uma biblioteca de clientes do Armazenamento do Azure. Essas solicitações acumulam encargos por transação. O tipo de transação afeta a forma como a conta é cobrada. Por exemplo, as transações de leitura se acumulam em uma categoria de cobrança diferente das transações de gravação. A tabela a seguir mostra a categoria de cobrança para Append Block From URL solicitações com base no tipo de conta de armazenamento:

Operação Tipo de conta de armazenamento Categoria de cobrança
Acréscimo da URL bloquear da (contade destino 1) Blob de blocos Premium
Uso geral v2 Standard
Uso geral v1 Standard
Operações de gravação
Acréscimo da URL de Bloco de (conta de origem2) Blob de blocos Premium
Uso geral v2 Standard
Uso geral v1 Standard
Operações de leitura

1A conta de destino é cobrada por uma transação para iniciar a gravação.
2A conta de origem incorre em uma transação para cada solicitação de leitura para a origem.