Usar o AzCopy para copiar blobs entre contas de armazenamento do Azure com restrições de rede
Este artigo apresenta como copiar blobs entre contas de armazenamento usando o utilitário de linha de comando AzCopy. Ele também explica como implementar a operação de cópia quando as restrições de rede são configuradas para as contas de armazenamento.
Tela de fundo
Copiar arquivos de blob entre duas contas de armazenamento é um requisito comum para muitos usuários do Azure. O Armazenamento do Azure dá suporte à cópia direta de blobs de uma conta de armazenamento para outra, o que pode ser implementado usando o utilitário de linha de comando AzCopy. Os usuários não precisam baixar arquivos para discos locais ou buffers e carregá-los novamente.
Copiar blobs entre duas contas de armazenamento usando o AzCopy não depende da largura de banda de rede do computador local. Esse método pode aproveitar o desempenho das contas de armazenamento e da Rede Virtual do Azure para obter uma taxa de transferência melhor do que baixar e carregar arquivos. Não haverá encargos de largura de banda se ambas as contas de armazenamento estiverem na mesma região.
Comandos AzCopy para copiar blobs entre contas de armazenamento
Se você fornecer credenciais de autorização usando a ID do Microsoft Entra, use o seguinte comando:
azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path>'
Nesse cenário, você precisa garantir que sua identidade do Microsoft Entra tenha as atribuições de função adequadas para contas de origem e destino.
Se você usar um token SAS (Assinatura de Acesso Compartilhado), use o seguinte comando:
azcopy copy 'https://<source-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>' 'https://<destination-storage-account-name>.blob.core.windows.net/<container-name>/<blob-path><SAS-token>'
Nesse cenário, você precisa acrescentar um token SAS à URL de origem e de destino usada em seus comandos AzCopy.
Para obter mais informações, consulte Copiar blobs entre contas de armazenamento do Azure com o AzCopy v10.
Copiar blobs entre contas de armazenamento com restrição de acesso
Se você precisar restringir o acesso às contas de armazenamento de origem e de destino por meio do firewall de armazenamento, talvez precise de mais configurações para copiar blobs entre contas de armazenamento usando o AzCopy. Isso ocorre porque a solicitação de cópia entre duas contas de armazenamento usa endereços IP privados e os endereços IP são dinâmicos.
Aqui estão dois cenários com suporte:
Cenário 1: o cliente usa um ponto de extremidade público para acessar contas de armazenamento
Nesse cenário, você deve adicionar o endereço IP público ou a VNet (rede virtual) do cliente à lista de permissões do firewall nas contas de armazenamento de origem e destino.
A imagem a seguir mostra o processo de cópia de blobs entre contas de armazenamento neste cenário:
Cenário 2: a VNet do cliente tem links privados configurados e usa um ponto de extremidade privado para acessar contas de armazenamento
Nesse cenário, a lista de permissões do firewall não é necessária.
A imagem a seguir mostra o processo de cópia de blobs entre contas de armazenamento neste cenário:
Aqui está o processo completo desse mecanismo para os dois cenários:
- O cliente envia uma solicitação PutBlockfromURL para o armazenamento de destino.
- O armazenamento de destino recebe as solicitações e tenta obter blocos da URL de origem fornecida. No entanto, como o armazenamento de destino não foi permitido pelo firewall de origem, ele recebe um erro "403 Forbidden".
- Depois que o armazenamento de destino recebe o erro "403 Forbidden", ele envia outra solicitação GetBlob em nome do cliente. Se o cliente tiver acesso ao armazenamento de origem, o destino poderá obter os blocos da origem e retornar um código de resposta bem-sucedido ao cliente.
- O cliente envia PutBlockList para o armazenamento de destino para confirmar os blocos e concluir o processo depois de receber um código de resposta bem-sucedido da solicitação.
Copiar blobs entre contas de armazenamento em uma arquitetura Hub-spoke usando pontos de extremidade privados
Um erro 403 ocorre ao usar o AzCopy para copiar blobs entre contas de armazenamento conectadas a pontos de extremidade privados em diferentes VNets Spoke de uma VM em uma VNet Hub. Você pode encontrar um erro "403 Esta solicitação não está autorizada a executar esta operação – CannotVerfiyCopySource" nos logs do AzCopy ou nos logs do Armazenamento do Azure. O diagrama de arquitetura a seguir mostra o cenário em que o erro ocorre.
Solução alternativa 1: criar um ponto de extremidade privado para a conta de armazenamento de destino na VNet de origem
Uma possível solução alternativa é criar um ponto de extremidade privado para a conta de armazenamento de destino na VNet de origem. Essa configuração permite que a VM copie com êxito os blobs entre as contas de armazenamento usando o AzCopy. O diagrama de arquitetura a seguir mostra o processo de cópia de blobs entre contas de armazenamento na Solução Alternativa 1.
Solução alternativa 2: coloque a VM na mesma VNet que a conta de armazenamento de origem e emparelhe a VNet com a VNet de destino
Outra opção é colocar a VM na mesma VNet que a conta de armazenamento de origem. Em seguida, estabeleça o emparelhamento entre essa VNet e a VNet de destino. O diagrama de arquitetura a seguir mostra o processo de cópia de blobs entre contas de armazenamento na Solução Alternativa 2.
Solução alternativa 3: usar uma conta de preparo temporária para copiar os dados
Se você não conseguir implementar as soluções alternativas mencionadas anteriormente ou estiver impedido de alterar a configuração de rede existente da conta de armazenamento ou VNet, poderá usar uma conta de preparo temporária para copiar os dados:
- Crie uma conta de armazenamento temporária na mesma região que a conta de armazenamento de origem e a conta de armazenamento de destino.
- Use o AzCopy para copiar os dados da conta de armazenamento de origem para a conta de armazenamento temporário.
- Copie os dados da conta de armazenamento temporária para a conta de armazenamento de destino. Verifique se a conta de armazenamento temporário tem um ponto de extremidade privado na mesma VNet que a conta de armazenamento de destino antes de executar a transferência de dados.
Solução alternativa 4: use uma VM e baixe os dados para a VM e, em seguida, carregue os dados na conta de armazenamento de destino
Use essa solução alternativa somente se outros métodos não forem viáveis. Use uma VM para baixar os dados da conta de armazenamento de origem e, em seguida, carregue-os na conta de armazenamento de destino. Isso pode ser feito com o AzCopy. Verifique se o tamanho e a capacidade do disco da VM são adequados para o processo de transferência de dados.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.