Colocar Bloco a Partir do URL
A Put Block From URL
operação cria um novo bloco a ser consolidado como parte de um blob onde os conteúdos são lidos a partir de um URL. Esta API está disponível a partir da versão 2018-03-28.
Pedir
Pode construir o pedido da Put Block From URL
seguinte forma. Recomendamos que utilize HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento:
URI do pedido do método PUT | Versão HTTP |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id |
HTTP/1.1 |
Pedido de serviço de armazenamento emulado
Quando estiver a fazer um pedido relativamente ao serviço de armazenamento emulado, especifique o nome do anfitrião do emulador e a porta do serviço Blob como 127.0.0.1:10000
, seguido do nome da conta de armazenamento emulada:
URI do pedido do método PUT | Versão HTTP |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id |
HTTP/1.1 |
Para obter mais informações, veja Utilizar o emulador do Azurite para o desenvolvimento local do Armazenamento do Azure.
Parâmetros do URI
Parâmetro | Description |
---|---|
blockid |
Obrigatório. Um valor de cadeia Base64 válido que identifica o bloco. Antes da codificação, a cadeia tem de ter um tamanho inferior ou igual a 64 bytes. Para um blob especificado, o comprimento do valor especificado para o blockid parâmetro tem de ter o mesmo tamanho para cada bloco.Nota: a cadeia Base64 tem de ter codificação de URL. |
timeout |
Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, veja Set time-outs for Blob service operations (Definir tempos limite para operações do serviço Blob). |
Cabeçalhos do pedido
Os cabeçalhos de pedido obrigatórios e opcionais estão descritos na tabela seguinte:
Cabeçalho do pedido | Description |
---|---|
Authorization |
Obrigatório. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure. |
Date ou x-ms-date |
Obrigatório. Especifica a Hora Universal Coordenada (UTC) do pedido. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure. |
x-ms-version |
Necessário para todos os pedidos autorizados. Especifica a versão da operação a utilizar para este pedido. Para obter mais informações, veja Controlo de versões dos serviços de Armazenamento do Azure. Para Put Block From URL , a versão tem de ser 2018-03-28 ou posterior. |
Content-Length |
Obrigatório. Especifica o número de bytes que estão a ser transmitidos no corpo do pedido. O valor deste cabeçalho tem de ser definido como 0. Quando o comprimento não é 0, a operação falha com o código de estado 400 (Pedido Incorreto). |
x-ms-copy-source:name |
Obrigatório. Especifica o URL do blob de origem. O valor pode ser um URL de até 2 kibibytes (KiB) de comprimento que especifica um blob. O valor deve ser codificado com URL, tal como apareceria num URI de pedido. O blob de origem tem de ser público ou autorizado através de uma assinatura de acesso partilhado. Se o blob de origem for público, não é necessária autorização para efetuar a operação. Eis alguns exemplos de URLs de objetos 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 da origem de cópia. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure. Apenas um esquema de portador é suportado para Microsoft Entra. Este cabeçalho é suportado nas versões 2020-10-02 e posteriores. |
x-ms-source-range |
Opcional. Carrega apenas os bytes do blob no URL de origem no intervalo especificado. Se este cabeçalho não for especificado, todo o conteúdo do blob de origem é carregado como um único bloco. Para obter mais informações, veja Especificar o cabeçalho de intervalo para operações do serviço Blob. |
x-ms-source-content-md5 |
Opcional. Um Hash MD5 do conteúdo do bloco do URI. Este Hash é utilizado para verificar a integridade do bloco durante o transporte dos dados do URI. Quando este cabeçalho é especificado, o serviço de armazenamento compara o hash do conteúdo que chegou da fonte de cópia com este valor do cabeçalho. Nota: este hash MD5 não está armazenado com o blob. Se os dois hashes não corresponderem, a operação falha com o código de erro 400 (Pedido Incorreto). |
x-ms-source-content-crc64 |
Opcional. Um Hash CRC64 do conteúdo do bloco do URI. Este Hash é utilizado para verificar a integridade do bloco durante o transporte dos dados do URI. Quando este cabeçalho é especificado, o serviço de armazenamento compara o hash do conteúdo que chegou da fonte de cópia com este valor do cabeçalho. Nota: este hash CRC64 não está armazenado com o blob. Se os dois hashes não corresponderem, a operação falha com o código de erro 400 (Pedido Incorreto). Se os cabeçalhos x-ms-source-content-md5 e x-ms-source-content-crc64 estiverem presentes, o pedido falha com um 400 (Pedido Incorreto).Este cabeçalho é suportado nas versões 2019-02-02 e posteriores. |
x-ms-encryption-scope |
Opcional. Indica o âmbito de encriptação a utilizar para encriptar o conteúdo de origem. Este cabeçalho é suportado nas versões 2019-02-02 e posteriores. |
x-ms-lease-id:<ID> |
Necessário se o blob tiver uma concessão ativa. Para executar esta operação num blob com uma concessão ativa, especifique o ID de concessão válido para este cabeçalho. |
x-ms-client-request-id |
Opcional. Fornece um valor opaco gerado pelo cliente com um limite de carateres de 1 kibibyte (KiB) que é registado nos registos quando o registo é configurado. Recomendamos vivamente que utilize este cabeçalho para correlacionar as atividades do lado do cliente com os pedidos que o servidor recebe. Para obter mais informações, veja Monitorizar Armazenamento de Blobs do Azure. |
Cabeçalhos de pedido (chaves de encriptação fornecidas pelo cliente)
A partir da versão 2019-02-02, podem ser especificados os seguintes cabeçalhos no pedido para encriptar um blob com uma chave fornecida pelo cliente. A encriptação com uma chave fornecida pelo cliente (e o conjunto de cabeçalhos correspondente) é opcional.
Cabeçalho do pedido | Description |
---|---|
x-ms-encryption-key |
Obrigatório. A chave de encriptação AES-256 codificada com Base64. |
x-ms-encryption-key-sha256 |
Obrigatório. O hash SHA256 codificado com Base64 da chave de encriptação. |
x-ms-encryption-algorithm: AES256 |
Obrigatório. Especifica o algoritmo a utilizar para encriptação. O valor deste cabeçalho tem de ser AES256 . |
Corpo do pedido
Nenhum.
Pedido de exemplo
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=AAAAAA%3D%3D HTTP/1.1
Request Headers:
x-ms-version: 2018-03-28
x-ms-date: Sat, 31 Mar 2018 14:37:35 GMT
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=
Content-Length: 0
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-499
Resposta
A resposta inclui um código de estado HTTP e um conjunto de cabeçalhos de resposta.
Código de estado
Uma operação bem-sucedida devolve o código de estado 201 (Criado).
Para obter mais informações sobre códigos de estado, veja Códigos de estado e de erro.
Cabeçalhos de resposta
A resposta para esta operação inclui os seguintes cabeçalhos. 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 |
---|---|
Content-MD5 |
Devolvido para que o cliente possa verificar a integridade do conteúdo da mensagem. O valor deste cabeçalho é calculado pelo Armazenamento de Blobs. Não é necessariamente o mesmo que o valor especificado nos cabeçalhos do pedido. Para as versões 2019-02-02 e posterior, este cabeçalho só é devolvido quando o pedido tem este cabeçalho. |
x-ms-content-crc64 |
Para as versões 2019-02-02 e posteriores. Devolvido para que o cliente possa verificar a integridade do conteúdo da mensagem. O valor deste cabeçalho é calculado pelo Armazenamento de Blobs. Não é necessariamente o mesmo que o valor especificado nos cabeçalhos do pedido. Devolvido quando x-ms-source-content-md5 o cabeçalho não está presente no pedido. |
x-ms-request-id |
Identifica exclusivamente o pedido que foi feito e pode utilizá-lo para resolver o pedido. Para obter mais informações, veja Resolver problemas de operações da API. |
x-ms-version |
A versão do Armazenamento de Blobs que foi utilizada para executar o pedido. |
Date |
Um valor de data/hora UTC gerado pelo serviço, que indica a hora em que a resposta foi iniciada. |
x-ms-request-server-encrypted: true/false |
Versão 2015-12-11 e posterior. O valor deste cabeçalho é definido como true se os conteúdos do bloco forem encriptados com êxito com o algoritmo especificado. Caso contrário, o valor está definido como false . |
x-ms-encryption-key-sha256 |
Versão 2019-02-02 e posterior. Devolvido se o pedido utilizou uma chave fornecida pelo cliente para encriptação, para que o cliente possa garantir que os conteúdos do pedido são encriptados com êxito com a chave fornecida. |
x-ms-encryption-scope |
Versão 2019-02-02 e posterior. Devolvido se o pedido utilizou um âmbito de encriptação, para que o cliente possa garantir que os conteúdos do pedido são encriptados com êxito através do âmbito de encriptação. |
x-ms-client-request-id |
Pode ser utilizado para resolver problemas de pedidos e respostas correspondentes. O valor deste cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho se estiver presente no pedido e o valor não contiver mais de 1024 carateres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, não estará presente na resposta. |
Resposta de amostra
Response Status:
HTTP/1.1 201 Created
Response Headers:
Transfer-Encoding: chunked
x-ms-content-crc64: 77uWZTolTHU
Date: Sat, 31 Mar 2018 23:47:09 GMT
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Autorização
A autorização é necessária ao chamar qualquer operação de acesso a dados no Armazenamento do Azure. Pode autorizar a Put Block From URL
operação conforme descrito abaixo.
Importante
A Microsoft recomenda a utilização de Microsoft Entra ID com identidades geridas para autorizar pedidos para o Armazenamento do Azure. Microsoft Entra ID fornece segurança superior e facilidade de utilização em comparação com a autorização de Chave Partilhada.
O Armazenamento do Azure suporta a utilização de Microsoft Entra ID para autorizar pedidos a dados de blobs. Com Microsoft Entra ID, pode utilizar o controlo de acesso baseado em funções do Azure (RBAC do Azure) para conceder permissões a um principal de segurança. O principal de segurança pode ser um utilizador, grupo, principal de serviço de aplicação ou identidade gerida do Azure. O principal de segurança é autenticado por Microsoft Entra ID para devolver um token OAuth 2.0. Em seguida, o token pode ser utilizado para autorizar um pedido contra o serviço Blob.
Para saber mais sobre a autorização através de Microsoft Entra ID, veja Autorizar o acesso a blobs com Microsoft Entra ID.
Permissões
Abaixo estão listadas as ações RBAC necessárias para que um utilizador Microsoft Entra, grupo, identidade gerida ou principal de serviço chame a Put Block From URL
operação e a função RBAC do Azure com menos privilégios que inclua esta ação:
- Ação RBAC do Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Função incorporada com menos privilégios:Contribuidor de Dados do Blob de Armazenamento
Para saber mais sobre como atribuir funções com o RBAC do Azure, veja Atribuir uma função do Azure para acesso a dados de blobs.
Observações
Put Block From URL
carrega um bloco para inclusão futura num blob de blocos. Um blob de blocos pode incluir um máximo de 50 000 blocos. Cada bloco pode ter um tamanho diferente. O tamanho máximo de um bloco carregado com Put Block From URL
é 100 mebibytes (MiB). Para carregar blocos maiores (até 4000 MiB), consulte Colocar Bloco.
Na versão 2020-10-02 e posterior, Microsoft Entra autorização é suportada para a origem da operação de cópia.
Um blob pode ter um máximo de 100 000 blocos não comprometidos em qualquer altura. Se este máximo for excedido, o serviço devolve o código de estado 409 (RequestEntityTooLargeBlockCountExceedsLimit).
A tabela seguinte descreve os tamanhos máximos permitidos de blocos e blobs, por versão de serviço:
Versão do serviço | Tamanho máximo do bloco (via Put Block From URL ) |
Tamanho máximo do blob (via Put Block List ) |
Tamanho máximo do blob através de uma operação de escrita única (via Put Blob From URL ) |
---|---|---|---|
Versão 2020-04-08 e posterior | 4.000 MiB | Aproximadamente 190,7 tebibytes (TiB) (4000 MiB × 50 000 blocos) | 5000 MiB |
Versões anteriores a 2020-04-08 | 100 MiB | Aproximadamente 4,75 TiB (100 MiB × 50 000 blocos) | 256 MiB |
Depois de carregar um conjunto de blocos, pode criar ou atualizar o blob no servidor a partir deste conjunto ao chamar a operação Colocar Lista de Blocos . Cada bloco no conjunto é identificado por um ID de bloco exclusivo nesse blob. Os IDs de bloco estão confinados a um blob específico, pelo que os blobs diferentes podem ter blocos com os mesmos IDs.
Se chamar Put Block From URL
um blob que ainda não existe, é criado um novo blob de blocos com um comprimento de conteúdo de 0. Este blob é enumerado pela List Blobs
operação se a opção include=uncommittedblobs
for especificada. O bloco ou blocos que carregou não são consolidados até chamar Put Block List
o novo blob. Um blob criado desta forma é mantido no servidor durante uma semana. Se não tiver adicionado mais blocos ou blocos consolidados ao blob dentro desse período de tempo, o blob será libertado da memória.
Um bloco que tenha sido carregado com êxito com a Put Block From URL
operação não se torna parte de um blob até ser consolidado com Put Block List
. Antes Put Block List
de ser chamado para consolidar o blob novo ou atualizado, quaisquer chamadas para Obter Blob devolvem os conteúdos do blob sem a inclusão do bloco não consolidado.
Se carregar um bloco que tenha o mesmo ID de bloco que outro bloco que ainda não foi consolidado, o último bloco carregado com esse ID será consolidado na próxima operação bem-sucedida Put Block List
.
Depois de Put Block List
ser chamado, todos os blocos não consolidados especificados na lista de blocos são consolidados como parte do novo blob. Todos os blocos não consolidados que não foram especificados na lista de blocos do blob são recolhidos e removidos da memória do Armazenamento de Blobs. Todos os blocos não consolidados também são recolhidos da memória se não existirem chamadas bem-sucedidas para Put Block From URL
ou Put Block List
no mesmo blob no prazo de uma semana após a última operação bem-sucedida Put Block From URL
. Se a função Colocar Blob for chamada no blob, todos os blocos não consolidados serão recolhidos da memória.
Se o blob tiver uma concessão ativa, o cliente tem de especificar um ID de concessão válido no pedido para escrever um bloco no blob. Se o cliente não especificar um ID de concessão ou especificar um ID de concessão inválido, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição). Se o cliente especificar um ID de concessão, mas o blob não tiver uma concessão ativa, o Armazenamento de Blobs também devolve o código de estado 412 (Falha na Pré-condição).
Para um blob especificado, todos os IDs de bloco têm de ter o mesmo comprimento. Se um bloco for carregado com um ID de bloco com um comprimento diferente do dos IDs de bloco para quaisquer blocos não consolidados existentes, o serviço devolve o código de resposta de erro 400 (Pedido Incorreto).
As chamadas Put Block From URL
não atualizam a hora da última modificação de um blob existente.
Chamar Put Block From URL
num blob de páginas devolve um erro.
Chamar Put Block From URL
um blob de "arquivo" devolve um erro e chamá-lo num hot
blob ou cool
não altera a camada de blobs.
Faturação
Os pedidos de preços podem ter origem em clientes que utilizam APIs de Armazenamento de Blobs, diretamente através da API REST do Armazenamento de Blobs ou a partir de uma biblioteca de cliente do Armazenamento do Azure. Estes pedidos acumulam custos por transação. O tipo de transação afeta a forma como a conta é cobrada. Por exemplo, as transações de leitura acumulam-se numa categoria de faturação diferente das transações de escrita. A tabela seguinte mostra a categoria de faturação dos Put Block From URL
pedidos com base no tipo de conta de armazenamento:
Operação | Tipo de conta de armazenamento | Categoria de faturação |
---|---|---|
Colocar Bloco a Partir do URL (conta de destino1) | Blob de blocos Premium Standard para fins gerais v2 Standard para fins gerais v1 |
Operações de escrita |
Colocar Bloco a Partir do URL (conta deorigem 2) | Blob de blocos Premium Standard para fins gerais v2 Standard para fins gerais v1 |
Operações de leitura |
1A conta de destino é cobrada por uma transação para iniciar a escrita.
2A conta de origem incorre numa transação para cada pedido de leitura para o objeto de origem.
Além disso, se as contas de origem e de destino residiram em regiões diferentes (por exemplo, EUA Norte e E.U.A. Sul), a largura de banda utilizada para transferir o pedido é cobrada para a conta de armazenamento de origem como saída. A saída entre contas na mesma região é gratuita.
Para saber mais sobre os preços das categorias de faturação especificadas, veja Preços do Armazenamento de Blobs do Azure.