Copiar Blob do URL
A Copy Blob From URL
operação copia um blob para um destino dentro da 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 blocos 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 do 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 relativamente ao 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 do 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 do 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 nome/valor, a operação copiará os metadados do blob ou ficheiro de origem para o blob de destino. Se for especificado um ou mais pares nome/valor, 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 Naming and referencing containers, blobs, and metadata (Atribuir nomes e referenciar 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, consulte 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 (sensíveis às maiúsculas e COPY 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. Tal implica uma chamada extra para a Get Blob Tags operação na conta de origem.REPLACE definirá etiquetas que o x-ms-tags cabeçalho especifica no blob de destino. Se x-ms-tags especificar REPLACE e não tiver 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 respetivo ETag valor 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 com URL, tal como 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 efetuar 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 Microsoft Entra. 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 é 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 falhará 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 concedido. 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 elevado 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 os conteúdos do pedido forem encriptados 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 o destino e os objetos 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 blocos 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 de 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-source
do pedido .
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 e facilidade de utilização superiores 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 para 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 Copy Blob From URL
operação e a função RBAC do Azure com menos privilégios que inclua esta ação:
Blob de destino
- Ação RBAC do Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (para escrever num blob existente) ou Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (para escrever um novo blob no destino)
- Função incorporada com menos privilégios:Contribuidor de Dados de Blobs de Armazenamento
Blob de origem na mesma conta de armazenamento
- Ação RBAC do Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Função incorporada com menos privilégios:Leitor deDados de Blobs 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, Microsoft Entra autorização é 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