Ćwiczenie — łączenie aplikacji z kontem usługi Azure Storage

Ukończone

Biblioteka klienta usługi Azure Storage udostępnia model obiektów używany do interakcji z kontami usługi Azure Storage. Służy do szybkiego nawiązywania połączenia z kontem usługi Azure Storage i używania interfejsów API usługi Azure Storage.

Model obiektów biblioteki klienta usługi Azure Storage

Konto magazynu na platformie Azure jest zorganizowane w kontenerach, w których są przechowywane rzeczywiste obiekty blob (pliki) na Twoim koncie. Te kontenery są podobne do folderów w systemie plików. Możemy użyć biblioteki klienta obiektów blob usługi Azure Storage dla platformy .NET , aby utworzyć kontener na naszym koncie magazynu, w którym będą przechowywane nasze zdjęcia.

Aby użyć biblioteki klienta obiektów blob usługi Azure Storage dla platformy .NET w programie, należy dodać instrukcję using w górnej części programu dla Azure.Storage.Blobs przestrzeni nazw.

  1. Dodaj następujące polecenie do pliku Program.cs.

    using Azure.Storage.Blobs;
    

    Aby utworzyć kontenery na koncie magazynu z aplikacji .NET i zarządzać nimi, użyj obiektu BlobContainerClient. Aby utworzyć BlobContainerClient wystąpienie obiektu, musisz podać parametry połączenia do konta magazynu i nazwę kontenera. Nazwa kontenera musi mieć długość od 3 do 63 znaków i może zawierać tylko małe litery i znak kreski (-). W przypadku tej aplikacji użyjemy nazwy zdjęcia.

  2. Dodaj następujący kod do sekcji Main aplikacji, aby uzyskać parametry połączenia usługi Azure Storage i utworzyć BlobContainerClient obiekt.

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

    Uwaga

    Na tym etapie biblioteka klienta nie podejmuje próby nawiązania połączenia z platformą Azure ani weryfikacji parametrów połączenia i używanego klucza dostępu. Po prostu zostanie utworzony uproszczony obiekt klienta używany do wykonywania operacji w usłudze Azure Blob Storage. Wywołanie sieciowe zostanie wykonane tylko wtedy, gdy operacja zostanie wywołana na koncie magazynu.

  3. Tuż pod poprzednimi wierszami dodaj kod, aby utworzyć kontener photos, w którym będziemy przechowywać nasze obrazy.

    container.CreateIfNotExists();
    
  4. Zapisz plik.

  5. Teraz uruchom aplikację, aby utworzyć kontener na koncie magazynu. Ponieważ użyliśmy CreateIfNotExists metody , można uruchomić program wiele razy, ale kontener zostanie utworzony tylko w pierwszym uruchomieniu.

    dotnet run
    
  6. Możesz sprawdzić, czy kontener został utworzony, uruchamiając następujące polecenie interfejsu wiersza polecenia platformy Azure. Zamień ciąg <name> na nazwę konta magazynu.

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

Biblioteka klienta obiektów blob usługi Azure Storage dla języka JavaScript zawiera wiele obiektów klienta do interakcji z obiektami blob usługi Azure Storage. W górnej części tej hierarchii znajduje się obiekt BlobServiceClient. Aby użyć tego obiektu w kodzie JavaScript:

  1. Otwórz plik index.js w edytorze kodu i dodaj następującą instrukcję natychmiast po instrukcji require('dotenv').config(); :

    const { BlobServiceClient } = require("@azure/storage-blob");
    
  2. Teraz musisz utworzyć BlobServiceClient obiekt w kodzie, uzyskując parametry połączenia konta magazynu i przekazując go do metody fromConnectionString factory w BlobServiceClient obiekcie . Dodaj następujące wiersze kodu:

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

    Uwaga

    Biblioteka kliencka nie podejmie próby nawiązania połączenia z platformą Azure, dopóki nie zostanie wywołana operacja, która jej wymaga. Obiekt klienta jest uproszczonym obiektem umożliwiającym dostęp do usługi Azure Blob Storage; nie weryfikuje połączenia ani używanego klucza dostępu.

  3. Po zdefiniowaniu obiektu klienta w programie można użyć metod na obiekcie klienta, aby wykonać rzeczywistą pracę. Metody wykonujące wywołania sieciowe są celowo asynchroniczne. Biblioteka używa obietnic, aby zwracać wyniki asynchroniczne. Z tego powodu należy oznaczyć funkcję main jako asynchronikę. Zastąp obiekt funkcji main następującym kodem. Linia rozpoczynająca się od dwóch ukośników do przodu jest komentarzem.

    async function main() {
     // Function code here
    }
    
  4. Zapisz zmiany w pliku index.js.

    Teraz dodajmy kod, aby wykonać operację na naszym koncie magazynu. Konto magazynu jest zorganizowane w co najmniej jeden kontener, który działa jak foldery na koncie magazynu. Obiekty blob (pliki) tworzone na koncie magazynu są przechowywane w jednym z tych kontenerów. Aby przechowywać zdjęcia, należy utworzyć kontener na koncie magazynu.

    Nazwa kontenera musi mieć długość od 3 do 63 znaków i może zawierać tylko małe litery i znak kreski (-). W przypadku tej aplikacji użyjemy nazwy zdjęcia.

    Aby utworzyć kontener na koncie magazynu, należy uzyskać obiekt ContainerClient, który reprezentuje kontener na koncie magazynu. Mimo że kontener jeszcze nie istnieje na naszym koncie magazynu, możemy użyć polecenia , ContainerClient aby utworzyć kontener i zarządzać nim po jego utworzeniu.

  5. Aby uzyskać ContainerClient obiekt, wywołaj getContainerClient metodę w BlobServiceClient obiekcie i podaj nazwę kontenera jako parametr. Następnie, aby utworzyć kontener na koncie usługi Azure Storage, użyj createIfNotExists metody w obiekcie containerClient . Zastąp wiersz komentarza // Function Code here następującymi instrukcjami:

    // 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. Zapisz zmiany w pliku index.js .

  7. W wierszu polecenia usługi Cloud Shell wprowadź następujące polecenie, aby skompilować i uruchomić program, który tworzy kontener na koncie magazynu:

    node index.js
    

    Napiwek

    Jeśli wystąpi błąd dotyczący używania słowa kluczowego await , upewnij się, że słowo kluczowe zostało dodane async do main definicji funkcji zgodnie z ostatnim krokiem w poprzednich instrukcjach.

    Przy pierwszym uruchomieniu programu powinien zostać wyświetlony komunikat o pomyślnym utworzeniu kontenera ze stanem true. Po drugim i kolejnym uruchomieniu programu zobaczysz podobny komunikat ze stanem false, ponieważ kontener już istnieje.

  8. Możesz sprawdzić, czy kontener został utworzony, uruchamiając następujące polecenie interfejsu wiersza polecenia platformy Azure. Zamień ciąg <name> na nazwę konta magazynu.

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

Teraz, gdy nasz program łączy się z naszym kontem usługi Azure Storage i utworzyliśmy kontener photos , przekażemy do niego obraz.