Usar ferramentas de transferência de dados no Armazenamento do Azure Stack Hub

O Azure Stack Hub fornece um conjunto de serviços de armazenamento para discos, blobs, tabelas, filas e funções de gerenciamento de conta. Algumas ferramentas de Armazenamento do Azure estarão disponíveis se você quiser gerenciar ou mover dados de ou para o Armazenamento do Azure Stack Hub. Este artigo fornece uma visão geral das ferramentas disponíveis.

Seus requisitos determinam quais das seguintes ferramentas funcionam melhor para você:

  • AzCopy

    Um utilitário de linha de comando específico do armazenamento que você pode baixar para copiar dados de um objeto para outro objeto dentro ou entre suas contas de armazenamento.

  • PowerShell do Azure

    Uma linguagem de script e shell de linha de comando baseada em tarefas projetada especialmente para administração do sistema.

  • CLI do Azure

    Uma ferramenta multiplataforma de software livre que fornece um conjunto de comandos para trabalhar com as plataformas do Azure e do Azure Stack Hub.

  • Gerenciador do Armazenamento do Microsoft Azure

    Um aplicativo autônomo fácil de usar com uma interface do usuário.

  • Blobfuse

    Um driver do sistema de arquivos virtual para Armazenamento de Blobs do Azure, que permite acessar os dados de blob de blocos existentes em sua conta de armazenamento por meio do sistema de arquivos do Linux.

Devido às diferenças de serviços de armazenamento entre o Azure e o Azure Stack Hub, pode haver alguns requisitos específicos para cada ferramenta descrita nas seções a seguir. Para obter uma comparação entre o Armazenamento do Azure Stack Hub e o Armazenamento do Azure, confira Armazenamento do Azure Stack Hub: diferenças e considerações.

AzCopy

O AzCopy é um utilitário de linha de comando projetado para copiar dados de e para o armazenamento de blobs e tabelas do Microsoft Azure usando comandos simples com desempenho ideal. Você pode copiar dados de um objeto para outro dentro ou entre suas contas de armazenamento.

Baixar e instalar o AzCopy

Baixe o AzCopy V10+.

Configuração e limites do AzCopy 10.1

O AzCopy 10.1 agora pode ser configurado para usar versões mais antigas da API. Isso habilita o suporte (limitado) para o Azure Stack Hub. Para configurar a versão da API para o AzCopy para dar suporte ao Azure Stack Hub, defina a AZCOPY_DEFAULT_SERVICE_API_VERSION variável de ambiente como 2017-11-09.

Sistema operacional Comando
Windows No prompt de comando, use: set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09
No PowerShell, use: $env:AZCOPY_DEFAULT_SERVICE_API_VERSION="2017-11-09"
Linux export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09
MacOS export AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09

No AzCopy 10.1, há suporte para os seguintes recursos no Azure Stack Hub:

Recurso Ações com suporte
Gerenciar contêiner Criar um contêiner
Listar o conteúdo dos contêineres
Gerenciar trabalho Exibir trabalhos
Retomar um trabalho
Remover blob Remover um único blob
Remover diretório virtual inteiro ou parcial
Carregar arquivo Fazer upload de um arquivo
Carregar um diretório
Carregar o conteúdo de um diretório
Fazer download do arquivo Baixar um arquivo
Baixar um diretório
Baixar o conteúdo de um diretório
Sincronizar arquivo Sincronizar um contêiner com um sistema de arquivos local
Sincronizar um sistema de arquivos local com um contêiner

Observação

  • O Azure Stack Hub não dá suporte ao fornecimento de credenciais de autorização para o AzCopy usando Microsoft Entra ID. Você deve acessar objetos de armazenamento no Azure Stack Hub usando um token SAS (Assinatura de Acesso Compartilhado).
  • O Azure Stack Hub não dá suporte à transferência de dados síncrona entre dois locais de blob do Azure Stack Hub e entre o Armazenamento do Azure e o Azure Stack Hub. Você não pode usar "azcopy cp" para mover dados do Azure Stack Hub para o Armazenamento do Azure (ou o contrário) diretamente com o AzCopy 10.1.

Exemplos de comando do AzCopy para transferência de dados

Os exemplos a seguir seguem cenários típicos para copiar dados de e para blobs do Azure Stack Hub. Para saber mais, confira Introdução ao AzCopy.

Baixar todos os blobs em um disco local

azcopy cp "https://[account].blob.core.windows.net/[container]/[path/to/directory]?[SAS]" "/path/to/dir" --recursive=true

Carregar arquivo único no diretório virtual

azcopy cp "/path/to/file.txt" "https://[account].blob.core.windows.net/[container]/[path/to/blob]?[SAS]"

Problemas conhecidos do AzCopy

  • Qualquer operação do AzCopy em um armazenamento de arquivos não está disponível porque o armazenamento de arquivos ainda não está disponível no Azure Stack Hub.
  • Se você quiser transferir dados entre dois locais de blob do Azure Stack Hub ou entre o Azure Stack Hub e o Armazenamento do Azure usando o AzCopy 10.1, será necessário baixar os dados para um local local primeiro e, em seguida, recarregar para o diretório de destino no Azure Stack Hub ou no Armazenamento do Azure. Ou você pode usar o AzCopy 7.1 e especificar a transferência com a opção /SyncCopy para copiar os dados.
  • A versão do Linux do AzCopy dá suporte apenas à atualização 1802 ou versões posteriores e não dá suporte ao serviço Tabela.
  • Se você quiser copiar dados de e para o serviço de armazenamento de Tabelas do Azure, instale o AzCopy versão 7.3.0

Azure PowerShell

Azure PowerShell é um módulo que fornece cmdlets para gerenciar serviços no Azure e no Azure Stack Hub. É uma linguagem de script e shell de linha de comando baseada em tarefas projetada especialmente para administração do sistema.

Instalar e configurar o PowerShell para o Azure Stack Hub

Os módulos de Azure PowerShell compatíveis com o Azure Stack Hub são necessários para trabalhar com o Azure Stack Hub. Para obter mais informações, confira Instalar o PowerShell para o Azure Stack Hub e Configurar o ambiente do PowerShell do usuário do Azure Stack Hub.

Script de exemplo do PowerShell para o Azure Stack Hub

Este exemplo pressupõe que você instalou com êxito o PowerShell para o Azure Stack Hub. Esse script ajudará você a concluir a configuração e solicitará que suas credenciais de locatário do Azure Stack Hub adicionem sua conta ao ambiente local do PowerShell. Em seguida, o script definirá a assinatura padrão do Azure, criará uma nova conta de armazenamento no Azure, criará um novo contêiner nessa nova conta de armazenamento e carregará um arquivo de imagem (blob) existente nesse contêiner. Depois que o script listar todos os blobs nesse contêiner, ele criará um diretório de destino no computador local e baixará o arquivo de imagem.

  1. Instale módulos de Azure PowerShell compatíveis com o Azure Stack Hub.
  2. Baixe as ferramentas necessárias para trabalhar com o Azure Stack Hub.
  3. Abra Windows PowerShell ISE e Executar como Administrador e clique em Arquivo>Novo para criar um novo arquivo de script.
  4. Copie o script abaixo e cole-o no novo arquivo de script.
  5. Atualize as variáveis de script com base nas definições de configuração.

    Observação

    Esse script deve ser executado no diretório raiz para AzureStack_Tools.

# begin

$ARMEvnName = "AzureStackUser" # set AzureStackUser as your Azure Stack Hub environment name
$ARMEndPoint = "https://management.local.azurestack.external" 
$GraphAudience = "https://graph.windows.net/" 
$AADTenantName = "<myDirectoryTenantName>.onmicrosoft.com" 

$SubscriptionName = "basic" # Update with the name of your subscription.
$ResourceGroupName = "myTestRG" # Give a name to your new resource group.
$StorageAccountName = "azsblobcontainer" # Give a name to your new storage account. It must be lowercase.
$Location = "Local" # Choose "Local" as an example.
$ContainerName = "photo" # Give a name to your new container.
$ImageToUpload = "C:\temp\Hello.jpg" # Prepare an image file and a source directory in your local computer.
$DestinationFolder = "C:\temp\download" # A destination directory in your local computer.

# Import the Connect PowerShell module"
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Import-Module .\Connect\AzureStack.Connect.psm1

# Configure the PowerShell environment
# Register an Az environment that targets your Azure Stack Hub instance
Add-AzEnvironment -Name $ARMEvnName -ARMEndpoint $ARMEndPoint 

# Login
$TenantID = Get-AzsDirectoryTenantId -AADTenantName $AADTenantName -EnvironmentName $ARMEvnName
Connect-AzAccount -EnvironmentName $ARMEvnName -TenantId $TenantID 

# Set a default Azure subscription.
Select-AzSubscription -SubscriptionName $SubscriptionName

# Create a new Resource Group 
New-AzResourceGroup -Name $ResourceGroupName -Location $Location

# Create a new storage account.
New-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName -Location $Location -Type Standard_LRS

# Set a default storage account.
Set-AzCurrentStorageAccount -StorageAccountName $StorageAccountName -ResourceGroupName $ResourceGroupName 

# Create a new container.
New-AzStorageContainer -Name $ContainerName -Permission Off

# Upload a blob into a container.
Set-AzStorageBlobContent -Container $ContainerName -File $ImageToUpload

# List all blobs in a container.
Get-AzStorageBlob -Container $ContainerName

# Download blobs from the container:
# Get a reference to a list of all blobs in a container.
$blobs = Get-AzStorageBlob -Container $ContainerName

# Create the destination directory.
New-Item -Path $DestinationFolder -ItemType Directory -Force  

# Download blobs into the local destination directory.
$blobs | Get-AzureStorageBlobContent -Destination $DestinationFolder

# end

Problemas conhecidos do PowerShell

Get-AzStorageAccountKey diferença

A versão atual compatível Azure PowerShell módulo do Azure Stack Hub é 1.2.11 para as operações do usuário. É diferente da versão mais recente do Azure PowerShell. Essa diferença afeta a operação dos serviços de armazenamento da seguinte maneira:

O formato de valor retornado da Get-AzStorageAccountKey versão 1.2.11 tem duas propriedades: Key1 e Key2, enquanto a versão atual do Azure retorna uma matriz que contém todas as chaves da conta.

# This command gets a specific key for a storage account, 
# and works for Azure PowerShell version 1.4, and later versions.
(Get-AzStorageAccountKey -ResourceGroupName "RG01" `
-AccountName "MyStorageAccount").Value[0]

# This command gets a specific key for a storage account, 
# and works for Azure PowerShell version 1.3.2, and previous versions.
(Get-AzStorageAccountKey -ResourceGroupName "RG01" `
-AccountName "MyStorageAccount").Key1

Para obter mais informações, consulte Get-AzureRMStorageAccountKey.

Copiar blob entre clusters do Azure Stack Hub

Start-AzStorageBlobCopy pode ser usado para iniciar um trabalho de cópia para mover um blob. Ao definir a propriedade AbsoluteUri como o uri de blob em outro cluster do Azure Stack Hub, esse cmdlet pode ser usado para copiar o blob entre dois clusters do Azure Stack Hub. Verifique se os clusters do Azure Stack Hub de origem e de destino estão na mesma versão de atualização. Atualmente, o Azure Stack Hub não dá suporte ao uso Start-AzStorageBlobCopy para copiar blob entre dois clusters do Azure Stack Hub que implantaram diferentes versões de atualização.

CLI do Azure

A CLI do Azure é a experiência de linha de comando do Azure para gerenciar recursos do Azure. Você pode instalá-lo no macOS, Linux e Windows e executá-lo na linha de comando.

A CLI do Azure é otimizada para gerenciar e administrar recursos do Azure da linha de comando e para criar scripts de automação que funcionam no Resource Manager do Azure. Ele fornece muitas das mesmas funções encontradas no portal do Azure Stack Hub, incluindo acesso a dados avançados.

O Azure Stack Hub requer a CLI do Azure versão 2.0 ou posterior. Para obter mais informações sobre como instalar e configurar a CLI do Azure com o Azure Stack Hub, consulte Instalar e configurar a CLI do Azure Stack Hub. Para obter mais informações sobre como usar a CLI do Azure para executar várias tarefas trabalhando com recursos em sua conta de armazenamento do Azure Stack Hub, consulte Usando a CLI do Azure com o armazenamento do Azure.

Script de exemplo da CLI do Azure para o Azure Stack Hub

Depois de concluir a instalação e a configuração da CLI, você poderá tentar as etapas a seguir para trabalhar com um script de exemplo de shell pequeno para interagir com os recursos de armazenamento do Azure Stack Hub. O script conclui as seguintes ações:

  • Cria um novo contêiner na sua conta de armazenamento.
  • Carrega um arquivo existente (como um blob) no contêiner.
  • Lista todos os blobs no contêiner.
  • Baixa o arquivo para um destino no computador local que você especificar.

Antes de executar esse script, verifique se você pode se conectar e entrar com êxito no Azure Stack Hub de destino.

  1. Abra o editor de texto de sua preferência, e copie e cole o script anterior no editor.
  2. Atualize as variáveis do script para refletir as configurações.
  3. Depois de atualizar as variáveis necessárias, salve o script e saia do editor. As próximas etapas pressupõem que você nomeou seu script como my_storage_sample.sh.
  4. Marque o script como executável, se necessário: chmod +x my_storage_sample.sh
  5. Execute o script. Por exemplo, no Bash:./my_storage_sample.sh
#!/bin/bash
# A simple Azure Stack Hub storage example script

export AZURESTACK_RESOURCE_GROUP=<resource_group_name>
export AZURESTACK_RG_LOCATION="local"
export AZURESTACK_STORAGE_ACCOUNT_NAME=<storage_account_name>
export AZURESTACK_STORAGE_CONTAINER_NAME=<container_name>
export AZURESTACK_STORAGE_BLOB_NAME=<blob_name>
export FILE_TO_UPLOAD=<file_to_upload>
export DESTINATION_FILE=<destination_file>

echo "Creating the resource group..."
az group create --name $AZURESTACK_RESOURCE_GROUP --location $AZURESTACK_RG_LOCATION

echo "Creating the storage account..."
az storage account create --name $AZURESTACK_STORAGE_ACCOUNT_NAME --resource-group $AZURESTACK_RESOURCE_GROUP --account-type Standard_LRS

echo "Creating the blob container..."
az storage container create --name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME

echo "Uploading the file..."
az storage blob upload --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --file $FILE_TO_UPLOAD --name $AZURESTACK_STORAGE_BLOB_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME

echo "Listing the blobs..."
az storage blob list --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME --output table

echo "Downloading the file..."
az storage blob download --container-name $AZURESTACK_STORAGE_CONTAINER_NAME --account-name $AZURESTACK_STORAGE_ACCOUNT_NAME --name $AZURESTACK_STORAGE_BLOB_NAME --file $DESTINATION_FILE --output table

echo "Done"

Gerenciador do Armazenamento do Microsoft Azure

Gerenciador de Armazenamento do Azure é um aplicativo autônomo da Microsoft. Ele permite que você trabalhe facilmente com os dados do Armazenamento do Azure e do Armazenamento do Azure Stack Hub em computadores Windows, macOS e Linux. Se você quiser uma maneira fácil de gerenciar seus dados de Armazenamento do Azure Stack Hub, considere usar Gerenciador de Armazenamento do Microsoft Azure.

Blobfuse

O Blobfuse é um driver de sistema de arquivos virtual para Armazenamento de Blobs do Azure, que permite acessar os dados de blob de blocos existentes em sua conta de armazenamento por meio do sistema de arquivos Linux. Armazenamento de Blobs do Azure é um serviço de armazenamento de objetos e, portanto, não tem um namespace hierárquico. O Blobfuse fornece esse namespace usando o esquema de diretório virtual com o uso de forward-slash / como delimitador. O Blobfuse funciona no Azure e no Azure Stack Hub.

Para saber mais sobre como montar o armazenamento de blobs como um sistema de arquivos com Blobfuse no Linux, confira Como montar o Armazenamento de Blobs como um sistema de arquivos com Blobfuse.

Para o Azure Stack Hub, blobEndpoint precisa ser especificado ao configurar suas credenciais de conta de armazenamento junto com accountName, accountKey/sasToken e containerName.

No ASDK (Azure Stack Development Kit), o blobEndpoint deve ser myaccount.blob.local.azurestack.external. No sistema integrado do Azure Stack Hub, entre em contato com o administrador de nuvem se você não tiver certeza sobre seu ponto de extremidade.

accountKey e sasToken só podem ser configurados um de cada vez. Quando uma chave de conta de armazenamento é fornecida, o arquivo de configuração de credenciais está no seguinte formato:

accountName myaccount 
accountKey myaccesskey== 
containerName mycontainer 
blobEndpoint myaccount.blob.local.azurestack.external

Quando um token de acesso compartilhado é fornecido, o arquivo de configuração de credenciais está no seguinte formato:

accountName myaccount 
sasToken ?mysastoken 
containerName mycontainer 
blobEndpoint myaccount.blob.local.azurestack.external

Próximas etapas