Cvičení – konfigurace a inicializace knihovny klienta
Typický pracovní postup pro aplikace, které používají službu Azure Blob Storage, je následující:
Načtení konfigurace: Při spuštění načtěte konfiguraci účtu úložiště, což je obvykle připojovací řetězec účtu úložiště.
Inicializace klienta: K inicializaci klientské knihovny Azure Storage použijte připojovací řetězec. Tato inicializace vytvoří objekty, které aplikace používá pro práci s rozhraním API služby Blob Storage.
Použití: Pokud chcete pracovat s kontejnery a objekty blob, proveďte volání rozhraní API pomocí klientské knihovny.
Poznámka:
Toto cvičení je volitelné. Pokud chcete absolvovat toto cvičení, budete muset před zahájením vytvořit předplatné Azure. Pokud nemáte účet Azure nebo ho v tuto chvíli nechcete vytvořit, můžete si přečíst pokyny, abyste porozuměli zobrazeným informacím.
Poznámka:
V této lekci použijete Azure Cloud Shell jako terminál. Ke Cloud Shellu se dostanete prostřednictvím webu Azure Portal nebo přihlášení ke Cloud Shellu. Abyste ho mohli používat, nemusíte na počítači ani přenosném počítači nic instalovat.
Konfigurace připojovacího řetězce
Než spustíte aplikaci, získejte připojovací řetězec pro účet úložiště, který používáte. K jeho získání můžete použít libovolné rozhraní pro správu Azure, včetně webu Azure Portal, Azure CLI a Azure PowerShellu. Když nastavíte webovou aplikaci tak, aby spouštěla váš kód na konci tohoto modulu, pomocí Azure CLI získejte připojovací řetězec pro účet úložiště, který jste vytvořili dříve.
Připojovací řetězec účtu úložiště zahrnuje klíč účtu. Vezměte v úvahu tajný klíč účtu a vždy ho bezpečně uložte. Tady uložíte připojovací řetězec v nastavení aplikace app Service. Nastavení aplikace App Service je bezpečné místo pro tajné kódy aplikací. Tento návrh nepodporuje místní vývoj a není robustním uceleným řešením.
Důležité
Tento příklad kódu používá připojovací řetězec k autorizaci přístupu k vašemu účtu úložiště. Tato konfigurace je určená například pro účely. Připojovací řetězce a přístupové klíče účtu by se měly používat s opatrností v kódu aplikace. Pokud dojde ke ztrátě nebo náhodnému umístění přístupového klíče k účtu do nezabezpečeného umístění, může být vaše služba zranitelná. Každý, kdo má přístupový klíč, může autorizovat požadavky na účet úložiště a efektivně má přístup ke všem datům.
Pro zajištění optimálního zabezpečení Microsoft doporučuje používat spravované identity pro prostředky Azure k autorizaci požadavků na data objektů blob, front a tabulek, kdykoli je to možné. Další informace najdete v tématu Autorizace přístupu k objektům blob pomocí ID Microsoft Entra.
Inicializace objektového modelu úložiště objektů blob
V sadě Azure Storage SDK pro .NET je standardní vzor pro použití úložiště objektů blob následující:
Vytvořte instanci nového
BlobServiceClientobjektu a poskytněte připojovací řetězec vašemu účtu úložiště.Pokud chcete získat
BlobContainerClient, zavolejteGetBlobContainerClientBlobServiceClientna název kontejneru, se kterým chcete pracovat nebo vytvořit.
V kódu tento postup vypadá takto.
BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);
Tento inicializační kód neprovádí žádná volání přes síť. Tato skutečnost znamená, že některé výjimky, ke kterým dochází kvůli nesprávným informacím, nejsou vyvolány až později. Pokud je například nesprávně formátovaná připojovací řetězec zadána konstruktoru BlobServiceClient třídy, je vyvolána výjimka okamžitě. Pokud ale připojovací řetězec odkazuje na účet úložiště, který neexistuje, nevyvolá se žádná výjimka, dokud se nepokusíte o operaci s účtem úložiště.
V sadě Azure Storage SDK pro Javu se standardní vzor pro použití služby Blob Storage skládá z následujících kroků:
BlobServiceClientVytvořte instanci novéhoBlobServiceClientBuilderobjektu pomocí připojovací řetězec k vašemu účtu úložiště.BlobContainerClientZískejte metodugetBlobContainerClientvoláním metodyBlobServiceClients názvem kontejneru, se kterým chcete pracovat nebo vytvořit.
V kódu tento postup vypadá takto.
BlobServiceClient blobServiceClient = BlobServiceClientBuilder()
.connectionString(connectionString)
.buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
Tento inicializační kód neprovádí žádná volání přes síť. Tato skutečnost znamená, že některé výjimky, ke kterým dochází kvůli nesprávným informacím, nejsou vyvolány až později. Pokud je například nesprávně formátovaná připojovací řetězec zadána , BlobServiceClientBuilderje vyvolána výjimka okamžitě. Pokud ale připojovací řetězec odkazuje na účet úložiště, který neexistuje, nevyvolá se žádná výjimka, dokud se nepokusíte o operaci s účtem úložiště.
Vytvoření kontejnerů při spuštění
Pokud chcete vytvořit kontejner při spuštění aplikace nebo když se aplikace poprvé pokusí použít kontejner, zavolejte CreateIfNotExistsAsync na BlobContainerClient.
CreateIfNotExistsAsync nevyvolá výjimku, pokud kontejner již existuje, ale provede síťové volání do služby Azure Blob Storage. Volání proveďte jednou během inicializace, neprovádějte ho při každém pokusu o použití kontejneru.
Pokud chcete vytvořit kontejner při spuštění aplikace nebo při prvním pokusu o jeho použití, zavolejte exists a BlobContainerClient zkontrolujte, jestli už kontejner existuje. Pokud neexistuje, zavolejte create. Volání proveďte jednou během inicializace, neprovádějte ho při každém pokusu o použití kontejneru.
Cvičení
Klonování a prozkoumání nedokončené aplikace
Nejprve naklonujte úvodní aplikaci z GitHubu. Pokud chcete získat kopii zdrojového kódu a otevřít ji v editoru, spusťte v Azure Shell CLI následující příkazy:
git clone https://github.com/MicrosoftDocs/mslearn-store-data-in-azure.git cd mslearn-store-data-in-azure/store-app-data-with-azure-blob-storage/src/start code .V editoru otevřete kontrolery souborů/FilesController.cs. Tady není žádná práce, ale rychle se podívejte, co aplikace dělá.
Tento kontroler implementuje rozhraní API se třemi akcemi:
-
Index: (
GET /api/Files) vrátí seznam adres URL, jeden pro každý nahraný soubor. Front-end aplikace volá tuto metodu za účelem vypsání seznamu hypertextových odkazů na nahrané soubory. -
Nahrání: (
POST /api/Files) přijme nahraný soubor a uloží ho. -
Stáhnout: (
GET /api/Files/{filename}) stáhne jednotlivé soubory podle názvu.
Každá metoda k této práci používá instanci
IStorages názvemstorage. VIStorageje neúplná implementace , kterou je potřeba dokončit.-
Index: (
Přidejte balíček NuGet .
Přidejte odkaz na sadu SDK služby Azure Storage. V Azure Shell CLI spusťte následující příkazy:
dotnet add package Azure.Storage.Blobs dotnet restoreTento příkaz zajistí, že používáte nejnovější verzi klientské knihovny Blob Storage.
Konfigurovat
Hodnoty konfigurace, které potřebujete, jsou připojovací řetězec účtu úložiště a název kontejneru, který aplikace používá k ukládání souborů. V tomto modulu spustíte aplikaci jenom ve službě Aplikace Azure Service. Postupujte podle osvědčených postupů služby App Service a uložte hodnoty v nastavení aplikace služby App Service. Uděláte to při vytváření instance služby App Service. V tuto chvíli nemusíte dělat nic.
Pokud jde o použití konfigurace, úvodní aplikace obsahuje potřebnou základní infrastrukturu. Parametr IOptions<AzureStorageConfig>BlobStorage konstruktoru má dvě vlastnosti: účet úložiště připojovací řetězec a název kontejneru, který vaše aplikace používá k ukládání objektů blob. V metoděConfigureServices, která načítá hodnoty z konfigurace při spuštění aplikace, je kódStartup.cs.
Inicializace
V editoru otevřete Modely/BlobStorage.cs. V horní části souboru přidejte následující
usingpříkazy, které ho připraví na kód, který chcete přidat.using Azure; using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models;Vyhledejte metodu
Initialize. Aplikace volá tuto metodu při prvním použitíBlobStorage. Pokud vás zajímá, můžete se podívatConfigureServicesna Startup.cs a podívat se, jak se hovor dokončil.Initialize– zde vytvoříte kontejner, pokud ještě neexistuje. Nahraďte aktuální implementaciInitializenásledujícím kódem a uložte práci pomocí ctrl+S.public Task Initialize() { BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString); BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName); return containerClient.CreateIfNotExistsAsync(); }
Klonování a prozkoumání nedokončené aplikace
Nejprve naklonujte úvodní aplikaci z GitHubu. Pokud chcete získat kopii zdrojového kódu a otevřít ji v editoru, spusťte v Azure Shell CLI následující příkazy:
git clone https://github.com/MicrosoftDocs/mslearn-store-data-in-azure.git cd mslearn-store-data-in-azure/store-java-ee-application-data-with-azure-blob-storage/start code .V editoru otevřete soubor src/main/java/com/microsoft/azure/samples/jsf/IndexBean.java. Tady není žádná práce, ale rychle se podívejte, co aplikace dělá.
Tento bean s rozsahem request implementuje tři akce, které jsou používány stránkou src/main/webapp/index.xhtml Java Server Faces (JSF):
- listFileNames: vrátí seznam názvů souborů, jeden pro každý nahraný soubor. Stránka index.xhtml volá tuto metodu k vytvoření seznamu hypertextových odkazů na nahrané soubory.
-
upload: přijme nahraný soubor a uloží ho. Obsah souboru a metadata se vloží do
uploadedFilevlastnosti rozhraní JSF. - download: stáhne jednotlivé soubory podle názvu.
K provedení své práce, každá metoda používá
Storageinstanci s názvemstorage. Existuje neúplná implementaceStoragesouboru src/main/java/com/microsoft/azure/samples/service/BlobStorage.java k vyplnění.
Přidání referenčních informací k sadě Azure Storage SDK pro Javu
K přidání klientských knihoven Azure do projektu doporučujeme použít kusovník Azure. Poskytuje jednoduchý a elegantní způsob orchestrace pomocí více klientských knihoven Azure a zároveň zajišťuje minimální konflikty závislostí.
V editoru otevřete soubor pom.xml.
Pokud chcete do projektu přidat kusovník Azure, přidejte do značky
dependencyManagementXML následujícíprojectčást.<dependencyManagement> <dependencies> <dependency> <groupId>com.azure</groupId> <artifactId>azure-sdk-bom</artifactId> <version>1.0.6</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Pokud chcete přidat sadu Azure Storage SDK pro Javu, přidejte do
dependencyčásti XML následujícíproject/dependencieskód.<dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-blob</artifactId> </dependency>
Konfigurovat
Hodnoty konfigurace, které potřebujete, jsou účet úložiště připojovací řetězec a název kontejneru, který aplikace používá k ukládání souborů. V tomto modulu spustíte aplikaci jenom ve službě Aplikace Azure Service. Postupujte podle osvědčených postupů služby App Service a uložte hodnoty v nastavení aplikace služby App Service. Uděláte to při vytváření instance služby App Service. V tuto chvíli nemusíte dělat nic.
Pokud jde o použití konfigurace, předají se nastavení aplikace App Service jako proměnné prostředí kódu aplikace. Čtete je v inicializačním kódu.
Inicializace
V editoru otevřete src/main/java/com/microsoft/azure/samples/service/BlobStorage.java. V horní části souboru přidejte následující
importpříkazy, které ho připraví na kód, který chcete přidat.import java.util.stream.Collectors; import com.azure.storage.blob.BlobClient; import com.azure.storage.blob.BlobContainerClient; import com.azure.storage.blob.BlobServiceClient; import com.azure.storage.blob.BlobServiceClientBuilder; import com.azure.storage.blob.models.BlobItem;Přidejte do
BlobStoragetřídy vlastnost třídy, která bude obsahovatBlobContainerClientodkaz.private BlobContainerClient blobContainerClient;Návod
Klienti Azure jsou bezstavové a bezpečné pro přístup z více vláken. Pokud je to možné, doporučujeme ukládat jejich instance do mezipaměti. Například aplikace, na které pracujete, používá jeden kontejner s konstantním názvem, proto je nejlepší ji uložit do mezipaměti v rozsahu životnosti aplikace.
BlobStorage@Singletonse proto doporučuje uložitBlobContainerClientodkaz do jeho pole.Vyhledejte metodu
inits poznámkami@PostConstruct. Vaše aplikace volá tuto metoduBlobStoragepo vytvoření instance a před jejím prvním využitím.initje místo, kde vytvořit kontejner, pokud ještě neexistuje. Aktuální implementaciinitnahraďte následujícím kódem a uložte si práci.@PostConstruct private void init() { String connectionString = System.getenv("STORAGE_CONNECTION_STRING"); String containerName = System.getenv("STORAGE_CONTAINER_NAME"); BlobServiceClient blobServiceClient = new BlobServiceClientBuilder() .connectionString(connectionString) .buildClient(); blobContainerClient = blobServiceClient.getBlobContainerClient(containerName); if (!blobContainerClient.exists()) { blobContainerClient.create(); } }