Exercício – Ligar a aplicação à sua conta de Armazenamento do Azure

Concluído

A biblioteca de cliente de Armazenamento do Azure oferece um modelo de objeto que serve para interagir com as contas de armazenamento do Azure. Serve para ligar rapidamente a uma conta de armazenamento do Azure e utilizar as APIs do serviço de Armazenamento do Azure.

Modelo de objeto de biblioteca de cliente do Armazenamento do Azure

Uma conta de armazenamento no Azure está organizada em um ou mais contentores que armazenam os objetos de blob reais (ficheiros) na sua conta. Estes contentores são pastas semelhantes num sistema de ficheiros. Podemos utilizar a biblioteca de cliente do Azure Storage Blob para .NET de modo a criar um contentor na nossa conta de armazenamento para armazenar fotografias.

Para utilizar a biblioteca de cliente do Azure Storage Blob para .NET no seu programa, primeiro precisa de adicionar uma instrução na parte superior do programa para o espaço de nomes Azure.Storage.Blobs.

  1. Adicione o seguinte comando ao programa.cs.

    using Azure.Storage.Blobs;
    

    Para criar e gerir contentores na sua conta de armazenamento a partir da aplicação .NET, utilize um objeto BlobContainerClient. Para instanciar um objeto de cliente BlobContainerClient, deve indicar a cadeia de ligação da sua conta de armazenamento e o nome do contentor. O nome do contentor tem de ter entre 3 e 63 carateres e só pode ter letras minúsculas e o caráter de traço (-). Para esta aplicação, vamos utilizar o nome photos.

  2. Em seguida, adicione o seguinte código à sua aplicação para obter o fio de ligação Azure Armazenamento e criar o BlobContainerClient objeto.

    var connectionString = configuration.GetConnectionString("StorageAccount");
    string containerName = "photos";
    
    BlobContainerClient container = new BlobContainerClient(connectionString, containerName);
    

    Nota

    Nesta fase, a biblioteca de cliente não tentou estabelecer ligação ao Azure nem validar a cadeia de ligação e a chave de acesso utilizadas. Simplesmente construiu um objeto de cliente simples utilizado para executar operações no Armazenamento de Blobs do Azure. Apenas será feita uma chamada de rede quando for invocada uma operação na conta de armazenamento.

  3. Agora, podemos adicionar código para criar o contentor photos em que vamos armazenar as nossas imagens.

    container.CreateIfNotExists();
    
  4. Execute a aplicação para criar o contentor na conta de armazenamento. Visto que utilizámos o método CreateIfNotExists, pode executar o programa várias vezes, mas o contentor só será criado na primeira execução.

    dotnet run
    
  5. Pode confirmar que criou o contentor ao executar o seguinte comando da CLI do Azure. Não se esqueça de substituir <name> pelo nome da sua conta de armazenamento.

    az storage container list \
    --account-name <name>
    
  1. A biblioteca de cliente do Azure Storage Blob para JavaScript contém vários objetos de cliente para interagir com o Azure Storage Blob. No topo desta hierarquia está o objeto BlobServiceClient. Para utilizar este objeto no seu código JavaScript, terá de adicionar a seguinte instrução ao ficheiro index.js imediatamente após a instrução require('dotenv').config();.

    require('dotenv').config();
    
    const { BlobServiceClient } = require("@azure/storage-blob");
    
  2. Agora, pode criar um objeto BlobServiceClient no código ao obter a cadeia de ligação da conta de armazenamento e transmiti-la para o método de fábrica fromConnectionString no objeto BlobServiceClient da seguinte forma.

    const storageAccountConnectionString = process.env.AZURE_STORAGE_CONNECTION_STRING;
    const blobServiceClient = BlobServiceClient.fromConnectionString(storageAccountConnectionString);
    

    Nota

    A biblioteca de cliente não tentará ligar-se ao Azure até que seja invocada uma operação que necessite da mesma. O objeto do cliente é um objeto leve que permite o acesso à Armazenamento da Blob Azure; não valida a ligação nem a chave de acesso que está a ser utilizada.

  3. Depois de obter um objeto de cliente, pode utilizar os métodos no mesmo para realizar tarefas reais. Os métodos que fazem chamadas de rede são intencionalmente assíncronos. A biblioteca utiliza Promessas para devolver resultados assíncronos. Por esse motivo, precisa de marcar a função principal como assíncrona, conforme mostrado abaixo.

    async function main() {
     // Function code here
    }
    

    Agora, vamos executar uma operação na nossa conta de armazenamento. Uma conta de armazenamento está organizada em um ou mais contentores que funcionam como pastas na mesma. Os objetos de blob (ficheiros) que cria na sua conta de armazenamento são armazenados num destes contentores. Precisa de criar um contentor na sua conta de armazenamento para armazenar as fotografias.

    O nome do contentor tem de ter entre 3 e 63 carateres e só pode ter letras minúsculas e o caráter de traço (-). Para esta aplicação, vamos utilizar o nome photos.

    Para criar um contentor na sua conta de armazenamento, precisa de obter um objeto ContainerClient que representa o contentor na mesma. Embora o nosso contentor ainda não exista na conta de armazenamento, o ContainerClient pode ser utilizado para criar o contentor, bem como geri-lo após a criação.

  4. Executar o seguinte comando para obter o ContainerClient objeto, ligue para o getContainerClient método no objeto e forneça o nome do recipiente como BlobServiceClient parâmetro. Em seguida, para criar o recipiente na sua conta Azure Armazenamento, utilize o createIfNotExists método no objeto de recipientes.

    async function main() {
       // Create a container (folder) if it does not exist
      const containerName = 'photos';
      const containerClient = blobServiceClient.getContainerClient(containerName);
      const createContainerResponse = await containerClient.createIfNotExists();
      console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded);
    }
    
  5. Agora, compile e execute a aplicação para que o programa crie o contentor na sua conta de armazenamento.

    node index.js
    

    Dica

    Se receber uma mensagem de erro sobre a utilização da palavra-chave await, certifique-se de que adicionou a palavra-chave async à definição da função main, em conformidade com o passo final das instruções anteriormente apresentadas.

    Quando executar o programa pela primeira vez, deverá ver uma mensagem com a indicação de que o contentor foi criado com êxito. Nas execuções subsequentes do programa, verá uma mensagem false, uma vez que o contentor já existe.

  6. Pode confirmar que criou o contentor ao executar o seguinte comando da CLI do Azure. Não se esqueça de substituir <name> pelo nome da sua conta de armazenamento.

    az storage container list \
    --account-name <name>
    

Agora que o programa se está a ligar à nossa conta de armazenamento do Azure e criámos um contentor photos, vamos carregar uma imagem para o mesmo com o programa.