Copiar Blob do URL

A Copy Blob From URL operação copia um blob para um destino na conta de armazenamento de forma síncrona para tamanhos de blobs de origem até 256 mebibytes (MiB). Esta API está disponível a partir da versão 2018-03-28.

A origem de uma Copy Blob From URL operação pode ser qualquer blob de bloco consolidado em qualquer conta de armazenamento do Azure que seja pública ou autorizada com uma assinatura de acesso partilhado.

Pedir

Pode construir o pedido da Copy Blob From URL seguinte forma. Recomendamos HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento, mycontainer pelo nome do contentor e myblob pelo nome do blob de destino.

URI do pedido de método PUT Versão HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob HTTP/1.1

URI para o serviço de armazenamento emulado

Quando estiver a fazer um pedido contra o serviço de armazenamento emulado, especifique o nome do anfitrião do emulador e Armazenamento de Blobs do Azure porta como 127.0.0.1:10000, seguido do nome da conta de armazenamento emulada:

URI do pedido de método PUT Versão HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob HTTP/1.1

Para obter mais informações, veja Utilizar o emulador do Azurite para o desenvolvimento local do Armazenamento do Azure.

Parâmetros URI

Pode especificar os seguintes parâmetros adicionais no URI do pedido:

Parâmetro Description
timeout Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, veja Definir tempos limite para operações de Armazenamento de Blobs.

Cabeçalhos do pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais:

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. Para obter mais informações, veja Controlo de versões dos serviços de Armazenamento do Azure.
x-ms-meta-name:value Opcional. Especifica um par de nomes/valores definido pelo utilizador associado ao blob. Se não forem especificados pares de nomes/valores, a operação copiará os metadados do blob ou ficheiro de origem para o blob de destino. Se forem especificados um ou mais pares de nomes/valores, o blob de destino é criado com os metadados especificados e os metadados não são copiados do blob ou ficheiro de origem.

A partir da versão 2009-09-19, os nomes de metadados têm de cumprir as regras de nomenclatura dos identificadores C#. Para obter mais informações, veja Nomenclatura e referência de contentores, blobs e metadados.
x-ms-encryption-scope Opcional. Indica o âmbito de encriptação para encriptar o conteúdo do pedido. Este cabeçalho é suportado na versão 2020-12-06 e posterior.
x-ms-tags Opcional. Define etiquetas codificadas por cadeias de consulta no blob. As etiquetas não são copiadas da origem de cópia. Para obter mais informações, veja Observações. Suportado na versão 2019-12-12 e posterior.
x-ms-copy-source-tag-option Opcional. Os valores possíveis são REPLACE e COPY (sensíveis às maiúsculas e minúsculas). O valor predefinido é REPLACE.

Se COPY for especificado, as etiquetas do blob de origem serão copiadas para o blob de destino. O blob de origem tem de ser privado e o pedido tem de ter permissão para a operação Obter Etiquetas de Blobs no blob de origem e a operação Definir Etiquetas de Blobs no blob de destino. Isto implica uma chamada adicional para a Get Blob Tags operação na conta de origem.

REPLACE irá definir etiquetas que o x-ms-tags cabeçalho especifica no blob de destino. Se x-ms-tags especificar REPLACE e sem etiquetas, não serão definidas etiquetas no blob de destino. Especificar COPY e x-ms-tags resultará num erro 409 (Conflito).

Suportado na versão 2021-04-10 e posterior.
x-ms-source-if-modified-since Opcional. Um DateTime valor. Especifique este cabeçalho condicional para copiar o blob apenas se o blob de origem tiver sido modificado desde a data/hora especificada. Se o blob de origem não tiver sido modificado, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição). Não pode especificar este cabeçalho se a origem for um ficheiro do Azure.
x-ms-source-if-unmodified-since Opcional. Um DateTime valor. Especifique este cabeçalho condicional para copiar o blob apenas se o blob de origem não tiver sido modificado desde a data/hora especificada. Se o blob de origem tiver sido modificado, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição). Não pode especificar este cabeçalho se a origem for um ficheiro do Azure.
x-ms-source-if-match Opcional. Um ETag valor. Especifique este cabeçalho condicional para copiar o blob de origem apenas se o valor ETag corresponder ao valor especificado. Se os valores não corresponderem, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição). Não pode especificar este cabeçalho se a origem for um ficheiro do Azure.
x-ms-source-if-none-match Opcional. Um ETag valor. Especifique este cabeçalho condicional para copiar o blob apenas se o respetivo ETag valor não corresponder ao valor especificado. Se os valores forem idênticos, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição). Não pode especificar este cabeçalho se a origem for um ficheiro do Azure.
If-Modified-Since Opcional. Um DateTime valor. Especifique este cabeçalho condicional para copiar o blob apenas se o blob de destino tiver sido modificado desde a data/hora especificada. Se o blob de destino não tiver sido modificado, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
If-Unmodified-Since Opcional. Um DateTime valor. Especifique este cabeçalho condicional para copiar o blob apenas se o blob de destino não tiver sido modificado desde a data/hora especificada. Se o blob de destino tiver sido modificado, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
If-Match Opcional. Um ETag valor. Especifique um ETag valor para este cabeçalho condicional para copiar o blob apenas se o valor especificado ETag corresponder ao ETag valor de um blob de destino existente. Se os valores não corresponderem, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
If-None-Match Opcional. Um ETag valor ou o caráter universal (*).

Especifique um ETag valor para este cabeçalho condicional para copiar o blob apenas se o valor especificado ETag não corresponder ao ETag valor do blob de destino.

Especifique o caráter universal (*) para executar a operação apenas se o blob de destino não existir.

Se a condição especificada não for cumprida, o Armazenamento de Blobs devolve o código de estado 412 (Falha na Pré-condição).
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 por URL, uma vez que apareceria num URI de pedido. O blob de origem tem de ser público ou ser autorizado através de uma assinatura de acesso partilhado. Se o blob de origem for público, não é necessária autorização para executar a operação. Se o tamanho do blob de origem for superior a 256 MiB, o pedido falhará com um erro 409 (Conflito). O tipo de blob do blob de origem tem de ser blob de blocos. 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 o portador do esquema é suportado para o Azure Active Directory.
Este cabeçalho é suportado na versão 2020-10-02 e posterior.
x-ms-requires-sync:true Obrigatório. Indica que se trata de uma operação síncrona Copy Blob From URL em vez de uma operação assíncrona Copy Blob .
x-ms-source-content-md5 Opcional. Especifica um hash MD5 do conteúdo do blob do URI. Este hash é utilizado para verificar a integridade da bolha 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.

O 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-lease-id:<ID> Necessário se o blob de destino tiver uma concessão ativa. O ID de concessão especificado para este cabeçalho tem de corresponder ao ID de concessão do blob de destino. Se o pedido não incluir o ID de concessão ou não for válido, a operação falhará com o código de estado 412 (Falha na Pré-condição).

Se este cabeçalho for especificado e o blob de destino não tiver atualmente uma concessão ativa, a operação falha com o código de estado 412 (Falha na Pré-condição).

Na versão 2012-02-12 e posterior, este valor tem de especificar uma concessão ativa e infinita para um blob arrendado. Um ID de concessão de duração finita falha com o código de estado 412 (Falha na Pré-condição).
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de carateres de 1 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.
x-ms-access-tier Opcional. Especifica a camada a definir no blob de destino. Este cabeçalho destina-se a blobs de páginas numa conta premium apenas com a versão 2017-04-17 e posterior. Para obter uma lista completa dos escalões suportados, veja Armazenamento premium de alto desempenho e discos geridos para VMs. Este cabeçalho é suportado na versão 2018-11-09 e posterior para blobs de blocos. A camada de blobs de blocos é suportada no Armazenamento de Blobs ou Fins Gerais contas v2. Os valores válidos são Hot, Cool, Cold e Archive. Nota:Cold O escalão é suportado para a versão 2021-12-02 e posterior. Para obter informações detalhadas sobre as camadas de blobs de blocos, veja Camadas de armazenamento frequente, esporádico e de arquivo.

Corpo do pedido

Nenhum.

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 202 (Aceite).

Para obter 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
ETag Se a cópia estiver concluída, contém o ETag valor do blob de destino. Se a cópia não estiver concluída, contém o ETag valor do blob vazio criado no início da cópia.

O ETag valor está entre aspas.
Last-Modified Devolve a data/hora em que a operação de cópia foi concluída para o blob de destino.
x-ms-request-id Identifica exclusivamente o pedido que foi feito. Pode utilizá-lo para resolver o pedido. Para obter mais informações, veja Resolver problemas de operações da API.
x-ms-version Indica a versão do Armazenamento de Blobs que é utilizada para executar o pedido.
Date Um valor de data/hora UTC que indica a hora em que o serviço enviou a resposta.
x-ms-copy-id: <id> Identificador de cadeia para esta operação de cópia.
x-ms-copy-status: <success> Indica o estado da operação de cópia. Um valor de success significa que a operação foi concluída com êxito.
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 for, no máximo, 1024 carateres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, este cabeçalho não estará presente na resposta.
x-ms-request-server-encrypted: true/false Defina como true se o conteúdo do pedido for encriptado com êxito através do algoritmo especificado. Caso contrário, o valor é false.
x-ms-encryption-scope 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.

Corpo da resposta

Nenhum.

Resposta de amostra

Segue-se uma resposta de exemplo para um pedido para copiar um blob:

Response Status:  
HTTP/1.1 202 Accepted  
  
Response Headers:   
Last-Modified: <date>   
ETag: "0x8CEB669D794AFE2"  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402  
x-ms-version: 2018-03-28  
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
x-ms-copy-status: success  
Date: <date>  
  

Autorização

A autorização é necessária ao chamar qualquer operação de acesso a dados no Armazenamento do Azure. A tabela seguinte descreve como os objetos de destino e de origem de uma Copy Blob From URL operação podem ser autorizados:

Tipo de Objeto autorização de Microsoft Entra ID Autorização de Assinatura de Acesso Partilhado (SAS) Autorização de Chave Partilhada (ou Chave Partilhada Lite)
Blob de bloco de destino Yes Yes Yes
Blob de blocos de origem na mesma conta de armazenamento Yes Yes Yes
Blob de blocos de origem noutra conta de armazenamento No Yes No

Se um pedido especificar etiquetas no cabeçalho do x-ms-tags pedido, o autor da chamada tem de cumprir os requisitos de autorização da operação Definir Etiquetas de Blobs .

Pode autorizar a Copy Blob From URL operação conforme descrito abaixo. Tenha em atenção que um blob de origem numa conta de armazenamento diferente tem de ser autorizado separadamente através do token SAS com a permissão Ler (r ). Para obter mais informações sobre a autorização do blob de origem, veja os detalhes do cabeçalho x-ms-copy-sourcedo pedido .

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 encontra-se a ação RBAC necessária para um utilizador, grupo ou principal de serviço Microsoft Entra chamar a Copy Blob From URL operação e a função RBAC do Azure com menos privilégios que inclui esta ação:

Blob de destino

Blob de origem na mesma conta 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

O blob de origem e de destino para uma Copy Blob From URL operação tem de ser um blob de blocos.

Na versão 2020-10-02 e posterior, a autorização do Azure Active Directory é suportada para a origem da operação de cópia.

A Copy Blob From URL operação copia sempre todo o blob de origem. A cópia de um intervalo de bytes ou conjunto de blocos não é suportada.

Pode copiar um blob de origem para um blob de destino com um nome diferente. O blob de destino pode ser um blob de blocos existente ou pode ser um novo blob que a operação de cópia cria.

Quando estiver a copiar de um blob de blocos, todos os blocos consolidados e os respetivos IDs de bloco são copiados. Os blocos não comprometidos não são copiados. No final da operação de cópia, o blob de destino terá a mesma contagem de blocos consolidada que a origem.

O ETag valor de um blob de blocos muda quando a Copy Blob From URL operação é iniciada e quando a operação é concluída.

Copiar propriedades e metadados do blob

Quando um blob de blocos é copiado, as seguintes propriedades do sistema são copiadas para o blob de destino com os mesmos valores:

  • Content-Type

  • Content-Encoding

  • Content-Language

  • Content-Length

  • Cache-Control

  • Content-MD5

  • Content-Disposition

A lista de blocos consolidados do blob de origem também é copiada para o blob de destino. Os blocos não comprometidos não são copiados.

O blob de destino tem sempre o mesmo tamanho que o blob de origem, pelo que o valor do cabeçalho do Content-Length blob de destino corresponde ao valor desse cabeçalho para o blob de origem.

Se o x-ms-tags cabeçalho fornecer etiquetas para o blob de destino, têm de estar codificadas com cadeia de consulta. As chaves de etiqueta e os valores têm de estar em conformidade com os requisitos de nomenclatura e comprimento especificados na operação Definir Etiquetas de Blobs .

O x-ms-tags cabeçalho pode conter até 2 quilobits de etiquetas. Se precisar de mais etiquetas, utilize a Set Blob Tags operação.

Se o x-ms-tags cabeçalho não fornecer etiquetas, as etiquetas não serão copiadas do blob de origem.

Copiar um blob alugado

A Copy Blob From URL operação só lê a partir do blob de origem, pelo que o estado de concessão do blob de origem não importa.

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 Copy Blob From URL pedidos com base no tipo de conta de armazenamento:

Operação Tipo de conta de armazenamento Categoria de faturação
Copiar Blob do URL (conta de destino1) Blob de bloco premium
Standard para fins gerais v2
Standard para fins gerais v1
Operações de escrita
Copiar Blob do URL (conta deorigem 2) Blob de bloco 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.

Para saber mais sobre os preços das categorias de faturação especificadas, veja Armazenamento de Blobs do Azure Preços.

Além disso, se as contas de origem e de destino residiram em regiões diferentes (por exemplo, Norte dos E.U.A. e E.U.A. Sul), a largura de banda que utiliza 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.

Quando copia um blob de origem para um blob de destino com um nome diferente na mesma conta, utiliza recursos de armazenamento adicionais para o novo blob. A operação de cópia resulta, em seguida, num custo relativamente à utilização da capacidade da conta de armazenamento para esses recursos adicionais.

Ver também

Autorizar pedidos para o Armazenamento do Azure
Códigos de estado e de erro
Códigos de erro do Armazenamento de Blobs
Compreender como os instantâneos acumulam custos