Desenvolver para arquivos do Azure com C++

Gorjeta

Experimentar o Explorador de Armazenamento do Microsoft Azure

O Explorador de Armazenamento do Microsoft Azure é uma aplicação autónoma e gratuita da Microsoft, que lhe permite trabalhar visualmente com dados do Armazenamento do Azure no Windows, macOS e Linux.

Aplica-se a

Tipo de partilhas de ficheiros SMB NFS
Partilhas de ficheiros Standard (GPv2), LRS/ZRS Yes No
Partilhas de ficheiros Standard (GPv2), GRS/GZRS Yes No
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS Yes No

Acerca deste tutorial

Neste tutorial, você aprenderá como fazer operações básicas nos Arquivos do Azure usando C++. Se você é novo no Azure Files, percorrer os conceitos nas seções a seguir será útil para entender os exemplos. Algumas das amostras abrangidas são:

  • Criar e excluir compartilhamentos de arquivos do Azure
  • Criar e excluir diretórios
  • Carregar, transferir e eliminar um ficheiro
  • Definir e listar os metadados de um arquivo

Nota

Como os Arquivos do Azure podem ser acessados pelo SMB, é possível escrever aplicativos simples que acessam o compartilhamento de arquivos do Azure usando as classes e funções de E/S C++ padrão. Este artigo descreverá como escrever aplicativos que usam o SDK C++ do Armazenamento do Azure, que usa a API REST de Arquivo para conversar com Arquivos do Azure.

Pré-requisitos

Configuração

Esta seção orienta você na preparação de um projeto para trabalhar com a biblioteca de cliente do Armazenamento de Blobs do Azure v12 para C++.

Instalar os pacotes

O vcpkg install comando instalará o SDK de Blobs de Armazenamento do Azure para C++ e as dependências necessárias:

vcpkg.exe install azure-storage-files-shares-cpp:x64-windows

Para obter mais informações, visite GitHub para adquirir e criar o SDK do Azure para C++.

Criar o projeto

No Visual Studio, crie um novo aplicativo de console C++ para Windows chamado FilesShareQuickstartV12.

Caixa de diálogo do Visual Studio para configurar um novo aplicativo de console do Windows em C++

Copiar as credenciais do Portal do Azure

Quando o aplicativo de exemplo faz uma solicitação ao Armazenamento do Azure, ele deve ser autorizado. Para autorizar uma solicitação, adicione as credenciais da conta de armazenamento ao aplicativo como uma cadeia de conexão. Para exibir as credenciais da sua conta de armazenamento, siga estas etapas:

  1. Inicie sessão no portal do Azure.

  2. Localize a sua conta de armazenamento.

  3. No painel de menu da conta de armazenamento, em Segurança + rede, selecione Chaves de acesso. Aqui, você pode visualizar as chaves de acesso da conta e a cadeia de conexão completa para cada chave.

    Captura de ecrã que mostra onde estão as definições da chave de acesso no portal do Azure

  4. No painel Teclas de acesso, selecione Mostrar chaves.

  5. Na seção key1, localize o valor da cadeia de conexão. Selecione o ícone Copiar para a área de transferência para copiar a cadeia de conexão. Você adicionará o valor da cadeia de conexão a uma variável de ambiente na próxima seção.

    Captura de ecrã que mostra como copiar uma cadeia de ligação do portal do Azure

Configurar a cadeia de ligação de armazenamento

Depois de copiar a cadeia de conexão, escreva-a em uma nova variável de ambiente na máquina local que executa o aplicativo. Para definir a variável de ambiente, abra uma janela da consola e siga as instruções relevantes para o seu sistema operativo. Substitua <yourconnectionstring> pela cadeia de conexão real.

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Depois de adicionar a variável de ambiente no Windows, você deve iniciar uma nova instância da janela de comando.

Reiniciar programas

Depois de adicionar a variável de ambiente, reinicie todos os programas em execução que precisarão ler a variável de ambiente. Por exemplo, reinicie o ambiente de desenvolvimento ou editor antes de continuar.

Exemplos de código

Estes trechos de código de exemplo mostram como executar as seguintes tarefas com a biblioteca de cliente do Compartilhamento de Arquivos do Azure para C++:

Adicionar arquivos de inclusão

No diretório do projeto:

  1. Abra o arquivo de solução FilesShareQuickstartV12.sln no Visual Studio.
  2. Dentro do Visual Studio, abra o arquivo de origem FilesShareQuickstartV12.cpp .
  3. Remova qualquer código dentro main que tenha sido gerado automaticamente.
  4. Adicionar #include instruções.
#include <iostream>
#include <stdlib.h>
#include <vector>

#include <azure/storage/files/shares.hpp>

Obter a cadeia de ligação

O código abaixo recupera a cadeia de conexão para sua conta de armazenamento da variável de ambiente criada em Configurar sua cadeia de conexão de armazenamento.

Adicione este código dentro de main():

        // Retrieve the connection string for use with the application. The storage
        // connection string is stored in an environment variable on the machine
        // running the application called AZURE_STORAGE_CONNECTION_STRING.
        // Note that _MSC_VER is set when using MSVC compiler.
        static const char* AZURE_STORAGE_CONNECTION_STRING = "AZURE_STORAGE_CONNECTION_STRING";
#if !defined(_MSC_VER)
        const char* connectionString = std::getenv(AZURE_STORAGE_CONNECTION_STRING);
#else
        // Use getenv_s for MSVC
        size_t requiredSize;
        getenv_s(&requiredSize, NULL, NULL, AZURE_STORAGE_CONNECTION_STRING);
        if (requiredSize == 0) {
            throw std::runtime_error("missing connection string from env.");
        }
        std::vector<char> value(requiredSize);
        getenv_s(&requiredSize, value.data(), value.size(), AZURE_STORAGE_CONNECTION_STRING);
        std::string connectionStringStr = std::string(value.begin(), value.end());
        const char* connectionString = connectionStringStr.c_str();
#endif

Criar um compartilhamento de arquivos

Crie uma instância da classe ShareClient chamando a função CreateFromConnectionString . Em seguida, chame CreateIfNotExists para criar o compartilhamento de arquivos real em sua conta de armazenamento.

Adicione este código ao final de main():

using namespace Azure::Storage::Files::Shares;

std::string shareName = "sample-share";

// Initialize a new instance of ShareClient
auto shareClient = ShareClient::CreateFromConnectionString(connectionString, shareName);

// Create the files share. This will do nothing if the files share already exists.
std::cout << "Creating files share: " << shareName << std::endl;
shareClient.CreateIfNotExists();

Carregar ficheiros para uma Partilha de Ficheiros

O seguinte trecho de código:

  1. Declara uma cadeia de caracteres contendo "Hello Azure!".
  2. Obtém uma referência a um objeto ShareFileClient obtendo a raiz ShareDirectoryClient e, em seguida, chamando GetFileClient no compartilhamento de arquivos da seção Criar um compartilhamento de arquivos.
  3. Carrega a cadeia de caracteres para o arquivo chamando a função UploadFrom . Esta função cria o ficheiro se ainda não existir, ou atualiza-o se existir.

Adicione este código ao final de main():

std::string fileName = "sample-file";
uint8_t fileContent[] = "Hello Azure!";

// Create the ShareFileClient
ShareFileClient fileClient = shareClient.GetRootDirectoryClient().GetFileClient(fileName);

// Upload the file
std::cout << "Uploading file: " << fileName << std::endl;
fileClient.UploadFrom(fileContent, sizeof(fileContent));

Definir os metadados de um arquivo

Defina as propriedades de metadados para um arquivo chamando a função ShareFileClient.SetMetadata .

Adicione este código ao final de main():

Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);

Listar os metadados de um arquivo

Obtenha as propriedades de metadados para um arquivo chamando a função ShareFileClient.GetProperties . Os metadados estão sob o Metadata campo do retorno Value. Os metadados serão um par chave-valor, semelhante ao exemplo em Definir os metadados de um arquivo.

// Retrieve the file properties
auto properties = fileClient.GetProperties().Value;
std::cout << "Listing blob metadata..." << std::endl;
for (auto metadata : properties.Metadata)
{
    std::cout << metadata.first << ":" << metadata.second << std::endl;
}

Transferir ficheiros

Tendo recuperado as propriedades do arquivo em Listar os metadados de um arquivo um novo std::vector<uint8_t> objeto usando as propriedades do arquivo carregado. Baixe o arquivo criado anteriormente no novo std::vector<uint8_t> objeto chamando a função DownloadTo na classe base ShareFileClient . Finalmente, exiba os dados do arquivo baixado.

Adicione este código ao final de main():

std::vector<uint8_t> fileDownloaded(properties.FileSize);
fileClient.DownloadTo(fileDownloaded.data(), fileDownloaded.size());

std::cout << "Downloaded file contents: " << std::string(fileDownloaded.begin(), fileDownloaded.end()) << std::endl;

Eliminar um ficheiro

O código a seguir exclui o blob do Compartilhamento de Arquivos de Armazenamento do Azure chamando a função ShareFileClient.Delete .

std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();

Excluir um compartilhamento de arquivos

O código a seguir limpa os recursos que o aplicativo criou excluindo todo o compartilhamento de arquivos usando ShareClient.Suprimir.

Adicione este código ao final de main():

std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();

Executar o código

Este aplicativo cria um contêiner e carrega um arquivo de texto no Armazenamento de Blobs do Azure. O exemplo lista os blobs no contêiner, baixa o arquivo e exibe o conteúdo do arquivo. Finalmente, o aplicativo exclui o blob e o contêiner.

A saída do aplicativo é semelhante ao exemplo a seguir:

Azure Files Shares storage v12 - C++ quickstart sample
Creating files share: sample-share
Uploading file: sample-file
Listing file metadata...
key1:value1
key2:value2
Downloaded file contents: Hello Azure!
Deleting file: sample-file
Deleting files share: sample-share

Próximos passos

Neste guia de início rápido, você aprendeu como carregar, baixar e listar arquivos usando C++. Você também aprendeu como criar e excluir um Compartilhamento de Arquivos de Armazenamento do Azure.

Para ver um exemplo de Armazenamento de Blob C++, continue para: