Copiar Blob da URL

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

A origem de uma operação Copiar Blob da URL pode ser qualquer blob de blocos confirmado em qualquer conta de armazenamento do Azure que seja pública ou autorizada com uma assinatura de acesso compartilhado.

O tamanho do blob de origem pode ter um comprimento máximo de até 256 MiB.

Solicitação

A solicitação Copy Blob From URL pode ser criada da seguinte maneira. HTTPS é recomendado. Substitua myaccount pelo nome da sua conta de armazenamento, mycontainer pelo nome do seu contêiner e myblob pelo nome do seu blob de destino.

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

URI do serviço de armazenamento emulado

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

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

Para obter mais informações, consulte Usando o Azure Armazenamento Emulator para desenvolvimento e teste.

Parâmetros do URI

Os seguintes parâmetros adicionais podem ser especificados no URI de solicitação.

Parâmetro Descrição
timeout Opcional. O parâmetro timeout é expresso em segundos. Para obter mais informações, consulte Setting Timeouts for Blob Service Operations.

Cabeçalhos de 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. Para obter mais informações, consulte Autorizar solicitações para o Azure Armazenamento.
Date ou x-ms-date Obrigatórios. Especifica o UTC (Tempo Universal Coordenado) para a solicitação. Para obter mais informações, consulte Autorizar solicitações para o Azure Armazenamento.
x-ms-version Necessário para todas as solicitações autorizadas. Para obter mais informações, consulte Versioning for the Azure Armazenamento Services.
x-ms-meta-name:value Opcional. Especifica um par de nome-valor definido pelo usuário associado ao blob. Se nenhum par nome-valor for especificado, a operação copiará os metadados do blob de origem ou do arquivo para o blob de destino. Se um ou mais pares nome-valor são especificados, o blob de destino é criado com os metadados especificados e os metadados não são copiados do arquivo ou blob de origem.

Observe que, a partir da versão 2009-09-19, os nomes de metadados devem seguir as regras de nomen por identificadores C#. Consulte Nomeando e referenciando contêineres, blobs e metadados para obter mais informações.
x-ms-tags Opcional. Define as marcas codificadas em cadeia de caracteres de consulta determinadas no blob. As marcas não são copiadas da origem da cópia. Confira os Comentários para obter informações adicionais. Com suporte na versão 2019-12-12 e mais recente.
x-ms-source-if-modified-since Opcional. Um valor DateTime. Especifique esse cabeçalho condicional para copiar o blob somente se o blob de origem tiver sido modificado desde a data/hora especificada. Se o blob de origem não tiver sido modificado, o serviço Blob retornará o código de status 412 (Falha na Pré-condição). Esse header não poderá ser especificado se a origem for um Arquivo do Azure.
x-ms-source-if-unmodified-since Opcional. Um valor DateTime. Especifique esse cabeçalho condicional para copiar o blob somente se o blob de origem não tiver sido modificado desde a data/hora especificada. Se o blob de origem tiver sido modificado, o serviço Blob retornará o código de status 412 (Falha na Pré-condição). Esse header não poderá ser especificado se a origem for um Arquivo do Azure.
x-ms-source-if-match Opcional. Um valor de ETag. Especifique esse cabeçalho condicional para copiar o blob de origem somente se a ETag corresponder ao valor especificado. Se os valores de ETag não coincidirem, o serviço Blob retornará o código de status 412 (Falha na Pré-condição). Esse header não poderá ser especificado se a origem for um Arquivo do Azure.
x-ms-source-if-none-match Opcional. Um valor de ETag. Especifique esse cabeçalho condicional para copiar o blob de origem somente se a ETag não corresponder ao valor especificado. Se os valores forem idênticos, o serviço Blob retornará o código de status 412 (Falha na Pré-condição). Esse header não poderá ser especificado se a origem for um Arquivo do Azure.
If-Modified-Since Opcional. Um valor DateTime. Especifique esse cabeçalho condicional para copiar o blob somente se o blob de destino tiver sido modificado desde a data/hora especificada. Se o blob de destino não tiver sido modificado, o serviço Blob retornará o código de status 412 (Falha na Pré-condição).
If-Unmodified-Since Opcional. Um valor DateTime. Especifique esse cabeçalho condicional para copiar o blob somente se o blob de destino não tiver sido modificado desde a data/hora especificada. Se o blob de destino tiver sido modificado, o serviço Blob retornará o código de status 412 (Falha na Pré-condição).
If-Match Opcional. Um valor de ETag. Especifique um valor ETag para esse cabeçalho condicional copiar o blob somente se o valor ETag especificado corresponder ao valor ETag de um blob de destino existente. Se o ETag do BLOB de destino não corresponde ao ETag especificado para If-Match, o serviço Blob retornará o código de status 412 (Falha na Pré-condição).
If-None-Match Opcional. Um valor de ETag ou o caractere curinga (*).

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

Especifique o caractere curinga ( ) para * executar a operação somente se o blob de destino não existir.

Se a condição especificada não for atendida, o serviço Blob retornará o código de status 412 (Falha na Pré-condição).
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 em URL tal como apareceria em um pedido URI. 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. Se o tamanho do blob de origem for maior que 256 MiB, a solicitação falhará com 409 (Conflito). O tipo de blob do blob de origem deve ser blob de blocos. 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 obter mais informações, consulte autorizar solicitações para o Azure Armazenamento.
Somente o portador de esquema tem suporte para Azure Active Directory.
Esse cabeçalho tem suporte nas versões 2020-10-02 e posteriores.
x-ms-requires-sync:true Obrigatórios. Esse cabeçalho indica que se trata de um blob de cópia síncrona da URL em vez de um blob de cópia assíncrona.
x-ms-source-content-md5 Opcional. Um hash MD5 do conteúdo do blob do URI. Esse hash é usado para verificar a integridade do blob durante o transporte dos dados do URI. Quando esse cabeçalho é especificado, 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 Incorreta).
x-ms-lease-id:<ID> Obrigatório se o blob de destino tiver uma concessão ativa. A ID da concessão especificada para esse cabeçalho deve corresponder à ID de concessão do blob de destino. Se a solicitação não incluir a ID de concessão ou não for válida, a operação falhará com o código de status 412 (Falha na Pré-condição).

Se esse cabeçalho for especificado e o blob de destino não tiver nenhuma concessão ativa, a operação também falhará com o código de status 412 (Falha na Pré-condição).

Na versão 2012-02-12 e mais recente, esse valor deve especificar uma concessão ativa, infinita para um blob concedido. Uma ID de concessão de duração finita falha com 412 (Falha na Pré-condição).
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres de 1 KiB que é registrado nos logs de análise quando o log da análise de armazenamento está habilitado. O uso desse cabeçalho é altamente recomendável para correlacionar as atividades do lado do cliente com as solicitações recebidas pelo servidor. para obter mais informações, consulte sobre log de Análise de Armazenamento e [log do Azure: usando Logs para rastrear Armazenamento solicitações]

Corpo da solicitação

Nenhum corpo de solicitação.

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

Para obter informações sobre códigos de status, consulte status e códigos 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 padrão HTTP 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, conterá a ETag do blob de destino. Se a cópia não estiver completa, conterá a ETag do blob vazio criado no início da cópia.

O valor de ETag estará entre aspas.
Last-Modified Retorna a data/hora em que a operação de cópia para o blob de destino foi concluída.
x-ms-request-id Esse cabeçalho identifica a solicitação que foi feita de forma exclusiva e pode ser usado para solucionar problemas na solicitação. Para obter mais informações, consulte Solucionando problemas de operações de API.
x-ms-version Indica a versão do serviço Blob usado para executar a solicitação.
Date Um valor de data/hora UTC gerado pelo serviço que indica a hora em que a resposta foi iniciada.
x-ms-copy-id: <id> Identificador de cadeia de caracteres para essa operação de cópia.
x-ms-copy-status: <success> O estado da operação de cópia, com estes valores:

- success: a cópia foi concluída com êxito.
x-ms-client-request-id Esse cabeçalho pode ser usado para solucionar problemas de solicitações e respostas correspondentes. O valor desse cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho se estiver presente na solicitação e o valor for de no máximo 1024 caracteres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente na solicitação, esse cabeçalho não estará presente na resposta.

Corpo da resposta

Nenhum.

Exemplo de Resposta

Veja a seguir uma resposta de exemplo de uma solicitação 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

Essa operação poderá ser chamada pelo proprietário da conta e por qualquer pessoa com uma assinatura de acesso compartilhado que tenha permissão para gravar nesse blob ou em seu contêiner.

O acesso ao blob de origem ou ao arquivo é autorizado separadamente, conforme descrito nos detalhes do cabeçalho da solicitação x-ms-copy-source .

Se uma solicitação especificar marcas com o x-ms-tags cabeçalho da solicitação, o chamador deverá atender aos requisitos de autorização da operação definir marcas de blob .

Comentários

O blob de origem e de destino para uma operação de cópia da URL deve ser um blob de blocos.

na versão 2020-10-02 e mais recente, Azure Active Directory autorização tem suporte para a origem da operação de cópia.

A operação Copy Blob From URL sempre copia o blob de origem inteiro; não há suporte à cópia de um intervalo de bytes ou o conjunto de blocos.

Uma operação Copy Blob From URL pode ter algumas destas formas:

  • É possível copiar um blob de origem em um blob de destino com outro nome. O blob de destino pode ser um blob de blocos existente ou pode ser um novo BLOB criado pela operação de cópia.

Ao copiar de um blob de blocos, todos os blocos confirmados e suas IDs de bloco são copiados. Blocos não confirmados não são copiados. No final da operação de cópia, o blob de destino terá a mesma contagem de blocos confirmados que a origem.

O ETag de um blob de blocos é alterado quando a operação Copy Blob From URL é iniciada e quando a cópia termina.

Copiando propriedades e metadados de 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 confirmados do blob de origem também é copiada para o blob de destino. Todos os blocos não confirmados não são copiados.

O blob de destino é sempre do mesmo tamanho do blob de origem, para que o valor do cabeçalho Content-Length do blob de destino corresponda ao do blob de origem.

Se as marcas para o blob de destino forem fornecidas no x-ms-tags cabeçalho, elas deverão ser codificadas para cadeia de caracteres de consulta. As chaves e os valores de marca devem estar de acordo com os requisitos de nomenclatura e comprimento conforme especificado em definir marcas de BLOB. Além disso, o x-ms-tags cabeçalho pode conter até 2 KB de marcas. Se mais marcas forem necessárias, use a operação definir marcas de blob .

Se as marcas não forem fornecidas no x-ms-tags cabeçalho, elas não serão copiadas do blob de origem.

Cópia de um blob concedido

A operação Copy Blob From URL lê apenas do blob de origem para que o estado de concessão do blob de origem não seja importante.

Billing

A conta de destino de uma Copy Blob From URL operação é cobrada por uma transação para iniciar a cópia e também incorre em uma transação para cada solicitação para a origem da operação de cópia.

A conta de origem também gera custos de transação. Além disso, se as contas de origem e destino estiverem em regiões diferentes (por exemplo, o norte e o sul dos EUA), a largura de banda usada para transferir a solicitação será cobrada da conta de armazenamento de origem como saída. A saída entre contas na mesma região é gratuita.

Quando você copia um blob de origem para um blob de destino com um nome diferente dentro da mesma conta, você usa recursos de armazenamento adicionais para o novo BLOB, de modo que a operação de cópia resulta em uma cobrança no uso da capacidade da conta de armazenamento para esses recursos adicionais.

Confira também

autorizar solicitações para o Azure Armazenamento
Status e códigos de erro
Códigos de erro do serviço blob
Noções básicas sobre como os instantâneos acumulam cobranças