Utilizar 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 gestão de contas. Algumas ferramentas de Armazenamento do Azure estão disponíveis se quiser gerir ou mover dados de ou para o Armazenamento do Azure Stack Hub. Este artigo fornece uma descrição geral das ferramentas disponíveis.

Os seus requisitos determinam qual das seguintes ferramentas funciona melhor para si:

  • AzCopy

    Um utilitário de linha de comandos específico do armazenamento que pode transferir para copiar dados de um objeto para outro objeto dentro ou entre as suas contas de armazenamento.

  • Azure PowerShell

    Uma linguagem de scripts e shell baseada em tarefas, baseada em tarefas, concebida especialmente para a administração do sistema.

  • CLI do Azure

    Uma ferramenta de várias plataformas open source que fornece um conjunto de comandos para trabalhar com as plataformas do Azure e do Azure Stack Hub.

  • Explorador de Armazenamento do Microsoft Azure

    Uma aplicação autónoma fácil de utilizar com uma interface de utilizador.

  • Blobfuse

    Um controlador de sistema de ficheiros virtual para Armazenamento de Blobs do Azure, que lhe permite aceder aos dados de blobs de blocos existentes na sua conta de armazenamento através do sistema de ficheiros Linux.

Devido às diferenças dos serviços de armazenamento entre o Azure e o Azure Stack Hub, podem existir alguns requisitos específicos para cada ferramenta descrita nas secções seguintes. Para obter uma comparação entre o Armazenamento do Azure Stack Hub e o Armazenamento do Azure, veja Armazenamento do Azure Stack Hub: Diferenças e considerações.

AzCopy

O AzCopy é um utilitário de linha de comandos concebido para copiar dados de e para o armazenamento de blobs e tabelas do Microsoft Azure com comandos simples com um desempenho ideal. Pode copiar dados de um objeto para outro dentro ou entre as suas contas de armazenamento.

Transferir e instalar o AzCopy

Transfira AzCopy V10+.

Configuração e limites do AzCopy 10.1

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

Sistema operativo Comando
Windows Numa linha de comandos, utilize: set AZCOPY_DEFAULT_SERVICE_API_VERSION=2017-11-09
Na utilização do PowerShell: $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, são suportadas as seguintes funcionalidades para o Azure Stack Hub:

Funcionalidade Ações suportadas
Gerir contentor Criar um contentor
Listar conteúdos de contentores
Gerir tarefa Apresentar tarefas
Retomar uma tarefa
Remover blob Remover um único blob
Remover diretório virtual inteiro ou parcial
Carregar o ficheiro Carregar um ficheiro
Carregar um diretório
Carregar o conteúdo de um diretório
Transferir ficheiro Transferir um ficheiro
Transferir um diretório
Transferir o conteúdo de um diretório
Sincronizar ficheiro Sincronizar um contentor com um sistema de ficheiros local
Sincronizar um sistema de ficheiros local com um contentor

Nota

  • O Azure Stack Hub não suporta a disponibilização de credenciais de autorização para o AzCopy com Microsoft Entra ID. Tem de aceder a objetos de armazenamento no Azure Stack Hub com um token de Assinatura de Acesso Partilhado (SAS).
  • O Azure Stack Hub não suporta a transferência de dados síncrona entre duas localizações de blobs do Azure Stack Hub e entre o Armazenamento do Azure e o Azure Stack Hub. Não pode utilizar "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 comandos do AzCopy para transferência de dados

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

Transferir todos os blobs para um disco local

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

Carregar um único ficheiro para o 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 num armazenamento de ficheiros não está disponível porque o armazenamento de ficheiros ainda não está disponível no Azure Stack Hub.
  • Se quiser transferir dados entre duas localizações de blobs do Azure Stack Hub ou entre o Azure Stack Hub e o Armazenamento do Azure com o AzCopy 10.1, tem de transferir primeiro os dados para uma localização local e, em seguida, recarregar para o diretório de destino no Azure Stack Hub ou no Armazenamento do Azure. Em alternativa, pode utilizar 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 só suporta a atualização 1802 ou versões posteriores e não suporta o serviço Tabela.
  • Se quiser copiar dados de e para o seu serviço de armazenamento de Tabelas do Azure, instale a versão 7.3.0 do AzCopy

Azure PowerShell

Azure PowerShell é um módulo que fornece cmdlets para gerir serviços no Azure e no Azure Stack Hub. É uma linguagem de scripts e shell de linha de comandos baseada em tarefas concebida especialmente para a 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, veja Instalar o PowerShell para o Azure Stack Hub e Configurar o ambiente do PowerShell do utilizador do Azure Stack Hub.

Script de exemplo do PowerShell para o Azure Stack Hub

Este exemplo pressupõe que instalou com êxito o PowerShell para o Azure Stack Hub. Este script irá ajudá-lo a concluir a configuração e a pedir às suas credenciais de inquilino do Azure Stack Hub para adicionar a sua conta ao ambiente local do PowerShell. Em seguida, o script irá definir a subscrição predefinida do Azure, criar uma nova conta de armazenamento no Azure, criar um novo contentor nesta nova conta de armazenamento e carregar um ficheiro de imagem (blob) existente para esse contentor. Depois de o script listar todos os blobs nesse contentor, irá criar um novo diretório de destino no seu computador local e transferir o ficheiro de imagem.

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

    Nota

    Este script tem de ser executado no diretório de 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 do módulo Azure PowerShell compatível atual para o Azure Stack Hub é a 1.2.11 para as operações do utilizador. É diferente da versão mais recente do Azure PowerShell. Esta diferença afeta a operação dos serviços de armazenamento da seguinte forma:

O formato de valor devolvido da Get-AzStorageAccountKey versão 1.2.11 tem duas propriedades: Key1 e Key2, enquanto a versão atual do Azure devolve uma matriz que contém todas as chaves de 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, veja Get-AzureRMStorageAccountKey.

Copiar blob entre clusters do Azure Stack Hub

Start-AzStorageBlobCopy pode ser utilizado para iniciar uma tarefa de cópia para mover um blob. Ao definir a propriedade AbsoluteUri como o uri do blob noutro cluster do Azure Stack Hub, este cmdlet pode ser utilizado para copiar o blob entre dois clusters do Azure Stack Hub. Confirme que 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 suporta a utilização Start-AzStorageBlobCopy para copiar o blob entre dois clusters do Azure Stack Hub que implementaram versões de atualização diferentes.

CLI do Azure

A CLI do Azure é a experiência da linha de comandos do Azure para a gestão de recursos do Azure. Pode instalá-lo no macOS, Linux e Windows e executá-lo a partir da linha de comandos.

A CLI do Azure está otimizada para gerir e administrar recursos do Azure a partir da linha de comandos e para criar scripts de automatização que funcionam com o Azure Resource Manager. Fornece muitas das mesmas funções encontradas no portal do Azure Stack Hub, incluindo o acesso a dados avançados.

O Azure Stack Hub requer a versão 2.0 ou posterior da CLI do Azure. Para obter mais informações sobre como instalar e configurar a CLI do Azure com o Azure Stack Hub, veja Instalar e configurar a CLI do Azure Stack Hub. Para obter mais informações sobre como utilizar a CLI do Azure para realizar várias tarefas que funcionam com recursos na sua conta de armazenamento do Azure Stack Hub, veja Utilizar 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 configuração da CLI, pode experimentar os seguintes passos para trabalhar com um pequeno script de exemplo de shell para interagir com os recursos de armazenamento do Azure Stack Hub. O script conclui as seguintes ações:

  • Cria um novo contentor na sua conta de armazenamento.
  • Carrega um ficheiro existente (como um blob) para o contentor.
  • Lista todos os blobs no contentor.
  • Transfere o ficheiro para um destino no seu computador local que especificar.

Antes de executar este script, certifique-se de que consegue ligar e iniciar sessão com êxito no Azure Stack Hub de destino.

  1. Abra o seu editor de texto favorito e, em seguida, copie e cole o script anterior no editor.
  2. Atualize as variáveis do script para refletir as definições de configuração.
  3. Depois de atualizar as variáveis necessárias, guarde o script e saia do editor. Os passos seguintes partem do princípio de que nomeou o script 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"

Explorador de Armazenamento do Microsoft Azure

Explorador de Armazenamento do Azure é uma aplicação autónoma da Microsoft. Permite-lhe trabalhar facilmente com dados do Armazenamento do Azure e do Armazenamento do Azure Stack Hub em computadores Windows, macOS e Linux. Se quiser uma forma fácil de gerir os seus dados de Armazenamento do Azure Stack Hub, considere utilizar Explorador de Armazenamento do Microsoft Azure.

Blobfuse

O Blobfuse é um controlador de sistema de ficheiros virtual para Armazenamento de Blobs do Azure, que lhe permite aceder aos dados de blobs de blocos existentes na sua conta de armazenamento através do sistema de ficheiros Linux. Armazenamento de Blobs do Azure é um serviço de armazenamento de objetos e, portanto, não tem um espaço de nomes hierárquico. O Blobfuse fornece este espaço de nomes através do esquema de diretório virtual com a utilização de barra de reencaminhamento / 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 ficheiros com o Blobfuse no Linux, veja Como montar o armazenamento de Blobs como um sistema de ficheiros com o Blobfuse.

Para o Azure Stack Hub, o blobEndpoint tem de ser especificado ao configurar as credenciais da conta de armazenamento juntamente com accountName, accountKey/sasToken e containerName.

No Development Kit do Azure Stack (ASDK), o blobEndpoint deve ser myaccount.blob.local.azurestack.external. No sistema integrado do Azure Stack Hub, contacte o administrador da cloud se não tiver a certeza sobre o ponto final.

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

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

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

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

Passos seguintes