Ćwiczenie — łączenie aplikacji z kontem usługi Azure Storage
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.
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.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.
Tuż pod poprzednimi wierszami dodaj kod, aby utworzyć kontener photos, w którym będziemy przechowywać nasze obrazy.
container.CreateIfNotExists();
Zapisz plik.
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
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:
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");
Teraz musisz utworzyć
BlobServiceClient
obiekt w kodzie, uzyskując parametry połączenia konta magazynu i przekazując go do metodyfromConnectionString
factory wBlobServiceClient
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.
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 }
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.Aby uzyskać
ContainerClient
obiekt, wywołajgetContainerClient
metodę wBlobServiceClient
obiekcie i podaj nazwę kontenera jako parametr. Następnie, aby utworzyć kontener na koncie usługi Azure Storage, użyjcreateIfNotExists
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`); }
Zapisz zmiany w pliku index.js .
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 dodaneasync
domain
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.
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.