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

Concluído

A biblioteca de cliente do Armazenamento do Azure fornece um modelo de objeto usado 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. Esses contêineres são semelhantes a pastas em um sistema de arquivos. Podemos usar a biblioteca de cliente de Blobs de Armazenamento do Azure para .NET para criar um contêiner em nossa conta de armazenamento no qual armazenar nossas fotos.

Para usar a biblioteca de cliente de Blobs de Armazenamento do Azure para .NET em seu programa, você precisa adicionar uma using instrução na parte superior do programa para o Azure.Storage.Blobs namespace.

  1. Adicione o seguinte comando a Program.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 BlobContainerClient objeto, você deve fornecer a cadeia de conexão à sua conta de armazenamento e o nome do contêiner. 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, usaremos as fotos de nome.

  2. Adicione o seguinte código à seção Main do seu aplicativo para obter a cadeia de conexão do Armazenamento do Azure 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. Logo abaixo das linhas anteriores, adicione código para criar o contêiner de fotos , onde armazenaremos nossas imagens.

    container.CreateIfNotExists();
    
  4. Guarde o ficheiro.

  5. Execute a aplicação para criar o contentor na conta de armazenamento. Como usamos o método, você pode executar o programa várias vezes, mas o CreateIfNotExists contêiner só será criado na primeira execução.

    dotnet run
    
  6. Você pode verificar se criou o contêiner executando 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>
    

A biblioteca de cliente de Blob de Armazenamento do Azure para JavaScript contém muitos objetos de cliente para interagir com Blobs de Armazenamento do Azure. No topo desta hierarquia está o objeto BlobServiceClient. Para usar este objeto em seu código JavaScript:

  1. Abra o arquivo index.js no editor de códigos e adicione a seguinte instrução imediatamente após a require('dotenv').config(); instrução:

    const { BlobServiceClient } = require("@azure/storage-blob");
    
  2. Agora, você precisa criar um BlobServiceClient objeto em seu código obtendo a cadeia de conexão da conta de armazenamento e passando-a para o método fromConnectionString de fábrica no BlobServiceClient objeto. Adicione as seguintes linhas de código:

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

    Nota

    A biblioteca de cliente não tentará se conectar ao Azure até que uma operação seja invocada que a exija. O objeto cliente é um objeto leve que permite o acesso ao Armazenamento de Blobs do Azure; ele não valida a conexão ou a chave de acesso que está sendo usada.

  3. Depois de ter um objeto cliente definido em seu programa, você pode usar métodos no objeto cliente para executar o trabalho real. 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, você precisa marcar sua função principal como assíncrona. Substitua o objeto de função principal pelo código a seguir. A linha que começa com duas barras para a frente é um comentário.

    async function main() {
     // Function code here
    }
    
  4. Salve as alterações em index.js.

    Agora, vamos adicionar algum código para executar uma operação em nossa conta de armazenamento. Uma conta de armazenamento é organizada em um ou mais contêineres, que agem como pastas em sua conta de armazenamento. 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, usaremos as fotos de nome.

    Para criar um contentor na sua conta de armazenamento, precisa de obter um objeto ContainerClient que representa o contentor na mesma. Mesmo que um contêiner ainda não exista em nossa conta de armazenamento, podemos usar o para criar o ContainerClient contêiner e gerenciá-lo depois de criado.

  5. Para obter o objeto, chame o método no BlobServiceClient objeto e forneça o ContainerClientgetContainerClient nome do contêiner como um parâmetro. Em seguida, para criar o contêiner em sua conta de Armazenamento do Azure, use o createIfNotExists método no objeto containerClient . Substitua a linha de // Function Code here comentário por estas instruções:

    // Create a container (folder) if it does not exist
    const containerName = 'photos';
    const containerClient = blobServiceClient.getContainerClient(containerName);
    const containerExists = await containerClient.exists()
    if ( !containerExists) {
        const createContainerResponse = await containerClient.createIfNotExists();
        console.log(`Create container ${containerName} successfully`, createContainerResponse.succeeded);
    }
    else {
        console.log(`Container ${containerName} already exists`);
    }
    
  6. Salve as alterações no arquivo .js índice.

  7. Na linha de comando do Cloud Shell, digite o seguinte comando para criar e executar seu programa, que cria o contêiner em sua conta de armazenamento:

    node index.js
    

    Gorjeta

    Se você receber um erro sobre o uso da palavra-chave, certifique-se de ter adicionado a palavra-chave à main definição da await função de acordo com a async etapa final nas instruções anteriores.

    Na primeira vez que você executar o programa, você verá uma mensagem de que o contêiner foi criado com êxito, com um status de true. Na segunda e subsequentes vezes que você executar o programa, você verá uma mensagem semelhante com um status de false porque o contêiner já existe.

  8. Você pode verificar se criou o contêiner executando 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 nosso programa está se conectando à nossa conta de armazenamento do Azure e criamos um contêiner de fotos , vamos fazer com que nosso programa carregue uma imagem para ele.