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 | ||
Partilhas de ficheiros Standard (GPv2), GRS/GZRS | ||
Partilhas de ficheiros Premium (FileStorage), LRS/ZRS |
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
- Subscrição do Azure
- Conta de armazenamento do Azure
- Compilador C++
- CMake
- Vcpkg - Gerenciador de pacotes C e C++
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.
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:
Inicie sessão no portal do Azure.
Localize a sua conta de armazenamento.
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.
No painel Teclas de acesso, selecione Mostrar chaves.
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.
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
- Obter a cadeia de conexão
- Criar um compartilhamento de arquivos
- Carregar ficheiros para uma partilha de ficheiros
- Definir os metadados de um ficheiro
- Listar os metadados de um arquivo
- Baixar arquivos
- Eliminar um ficheiro
- Excluir um compartilhamento de arquivos
Adicionar arquivos de inclusão
No diretório do projeto:
- Abra o arquivo de solução FilesShareQuickstartV12.sln no Visual Studio.
- Dentro do Visual Studio, abra o arquivo de origem FilesShareQuickstartV12.cpp .
- Remova qualquer código dentro
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 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:
- Declara uma cadeia de caracteres contendo "Hello Azure!".
- 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.
- 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: