Desenvolver para Ficheiros do Azure com C++
Dica
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 | ||
Partilhas de ficheiros Standard (GPv2), GRS/GZRS | ||
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS |
Acerca deste tutorial
Neste tutorial, irá aprender a realizar operações básicas no Ficheiros do Azure com C++. Se não estiver familiarizado com Ficheiros do Azure, analisar os conceitos nas secções que se seguem será útil para compreender os exemplos. Alguns dos exemplos abrangidos são:
- Criar e eliminar partilhas de ficheiros do Azure
- Criar e eliminar diretórios
- Carregar, transferir e eliminar um ficheiro
- Definir e listar os metadados de um ficheiro
Nota
Uma vez que Ficheiros do Azure podem ser acedidos através de SMB, é possível escrever aplicações simples que acedam à partilha de ficheiros do Azure com as classes e funções de E/S C++ padrão. Este artigo irá descrever como escrever aplicações que utilizam o SDK C++ do Armazenamento do Azure, que utiliza a API REST de Ficheiros para falar com Ficheiros do Azure.
Pré-requisitos
- Subscrição do Azure
- Conta de armazenamento do Azure
- Compilador C++
- CMake
- Vcpkg - Gestor de pacotes C e C++
Configurar
Esta secção orienta-o ao longo da preparação de um projeto para trabalhar com a biblioteca de cliente Armazenamento de Blobs do Azure v12 para C++.
Instalar os pacotes
O vcpkg install
comando irá 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 o GitHub para adquirir e criar o SDK do Azure para C++.
Criar o projeto
No Visual Studio, crie uma nova aplicação de consola C++ para Windows denominada FilesShareQuickstartV12.
Copiar as credenciais do Portal do Azure
Quando a aplicação de exemplo faz um pedido ao Armazenamento do Azure, este tem de ser autorizado. Para autorizar um pedido, adicione as credenciais da conta de armazenamento à aplicação como uma cadeia de ligação. Para ver as credenciais da conta de armazenamento, siga estes passos:
Inicie sessão no portal do Azure.
Localize a sua conta de armazenamento.
No painel de menus da conta de armazenamento, em Segurança + rede, selecione Chaves de acesso. Aqui, pode ver as chaves de acesso da conta e a cadeia de ligação completa para cada chave.
No painel Chaves de acesso , selecione Mostrar chaves.
Na secção key1 , localize o valor cadeia de ligação . Selecione o ícone Copiar para a área de transferência para copiar a cadeia de ligação. Irá adicionar o valor da cadeia de ligação a uma variável de ambiente na secção seguinte.
Configurar a cadeia de ligação de armazenamento
Depois de copiar a cadeia de ligação, escreva-a numa nova variável de ambiente no computador local que executa a aplicação. Para definir a variável de ambiente, abra uma janela da consola e siga as instruções relevantes para o seu sistema operativo. Substitua pela <yourconnectionstring>
cadeia de ligação real.
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
Depois de adicionar a variável de ambiente no Windows, tem de iniciar uma nova instância da janela de comandos.
Reiniciar programas
Depois de adicionar a variável de ambiente, reinicie todos os programas em execução que precisem de ler a variável de ambiente. Por exemplo, reinicie o seu ambiente de desenvolvimento ou editor antes de continuar.
Exemplos de código
Estes fragmentos de código de exemplo mostram-lhe como realizar as seguintes tarefas com o Ficheiros do Azure Partilhar biblioteca de cliente para C++:
- Adicionar ficheiros de inclusão
- Obter a cadeia de ligação
- Criar uma partilha de ficheiros
- Carregar ficheiros para uma partilha de ficheiros
- Definir os metadados de um ficheiro
- Listar os metadados de um ficheiro
- Transferir ficheiros
- Eliminar um ficheiro
- Eliminar uma partilha de ficheiros
Adicionar ficheiros de inclusão
No diretório do projeto:
- Abra o ficheiro de solução FilesShareQuickstartV12.sln no Visual Studio.
- No Visual Studio, abra o ficheiro de origem FilesShareQuickstartV12.cpp .
- Remova qualquer código no interior
main
que tenha sido gerado automaticamente. - 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 obtém a cadeia de ligação da sua conta de armazenamento a partir da variável de ambiente criada em Configurar a cadeia de ligaçã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 uma Partilha de Ficheiros
Crie uma instância da classe ShareClient ao chamar a função CreateFromConnectionString . Em seguida, chame CreateIfNotExists para criar a partilha de ficheiros real na sua conta de armazenamento.
Adicione este código ao fim 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 fragmento de código seguinte:
- Declara uma cadeia que contém "Olá Azure!".
- Obtém uma referência a um objeto ShareFileClient ao obter a raiz ShareDirectoryClient e, em seguida, chamar GetFileClient na partilha de ficheiros a partir da secção Criar uma Partilha de Ficheiros .
- Carrega a cadeia para o ficheiro ao chamar 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 fim 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 Ficheiro
Defina as propriedades de metadados de um ficheiro ao chamar a função ShareFileClient.SetMetadata .
Adicione este código ao fim de main()
:
Azure::Storage::Metadata fileMetadata = { {"key1", "value1"}, {"key2", "value2"} };
fileClient.SetMetadata(fileMetadata);
Listar os metadados de um Ficheiro
Obtenha as propriedades de metadados de um ficheiro ao chamar a função ShareFileClient.GetProperties . Os metadados estão no Metadata
campo do devolvido Value
. Os metadados serão um par chave-valor, semelhante ao exemplo em Definir os metadados de um Ficheiro.
// 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
Depois de ter obtido as propriedades do ficheiro em Listar os metadados de um Ficheiro , um novo std::vector<uint8_t>
objeto com as propriedades do ficheiro carregado. Transfira o ficheiro criado anteriormente para o novo std::vector<uint8_t>
objeto ao chamar a função DownloadTo na classe base ShareFileClient . Por fim, apresente os dados de ficheiro transferidos.
Adicione este código ao fim 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 seguinte elimina o blob da Partilha de Ficheiros de Armazenamento do Azure ao chamar a função ShareFileClient.Delete .
std::cout << "Deleting file: " << fileName << std::endl;
fileClient.DeleteIfExists();
Eliminar uma partilha de ficheiros
O código seguinte limpa os recursos que a aplicação criou ao eliminar toda a Partilha de Ficheiros com o ShareClient. Eliminar.
Adicione este código ao fim de main()
:
std::cout << "Deleting files share: " << shareName << std::endl;
shareClient.DeleteIfExists();
Executar o código
Esta aplicação cria um contentor e carrega um ficheiro de texto para Armazenamento de Blobs do Azure. Em seguida, o exemplo lista os blobs no contentor, transfere o ficheiro e apresenta o conteúdo do ficheiro. Por fim, a aplicação elimina o blob e o contentor.
O resultado da aplicação é semelhante ao seguinte exemplo:
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
Passos seguintes
Neste início rápido, aprendeu a carregar, transferir e listar ficheiros com C++. Também aprendeu a criar e eliminar uma Partilha de Ficheiros de Armazenamento do Azure.
Para ver um exemplo de Armazenamento de Blobs C++, continue para: