Gyakorlat – Az ügyfélkódtár konfigurálása és inicializálása
Az Azure Blob Storage-t használó alkalmazások tipikus munkafolyamata a következő:
Konfiguráció lekérése: Indításkor töltse be a tárfiók konfigurációját, általában egy tárfiók kapcsolati sztringét.
Ügyfél inicializálása: Az Azure Storage ügyfélkönyvtár inicializálásához használja a kapcsolati karakterláncot. Ez az inicializálás létrehozza azokat az objektumokat, amelyeket az alkalmazás a Blob Storage API használatához használ.
Használat: Tárolókon és blobokon való működéshez API-hívásokat kezdeményezhet az ügyfélkódtár használatával.
Megjegyzés:
Ez a gyakorlat nem kötelező. Ha el szeretné végezni ezt a gyakorlatot, először létre kell hoznia egy Azure-előfizetést. Ha nem rendelkezik Azure-fiókkal, vagy jelenleg nem szeretne létrehozni egyet, elolvashatja az utasításokat, hogy megértse a megjelenő információkat.
Megjegyzés:
Ebben az egységben az Azure Cloud Shell terminálként használható. A Cloud Shellt az Azure Portalon vagy a Cloud Shell-bejelentkezésen keresztül érheti el. A használatához nem kell semmit telepítenie a PC-jére vagy laptopjára.
A kapcsolati sztring konfigurálása
Az alkalmazás futtatása előtt kérje le a használt tárfiók kapcsolati sztring. A lekéréshez bármilyen Azure felügyeleti felületet használhat, beleértve az Azure Portalt, az Azure CLI-t és az Azure PowerShellt. Amikor a webalkalmazást úgy állítja be, hogy a modul végén futtassa a kódot, az Azure CLI-vel lekérheti a korábban létrehozott tárfiók kapcsolati sztring.
A tárfiókok kapcsolati sztringjei tartalmazzák a fiókkulcsot. Vegye figyelembe a fiókkulcsot egy titkos kódként, és mindig biztonságosan tárolja. Itt egy App Service-alkalmazásbeállításban tárolhatja a kapcsolati sztring. Az App Service alkalmazásbeállításai biztonságos helyet jelentenek az alkalmazás titkos kulcsainak. Ez a kialakítás nem támogatja a helyi fejlesztést, és önmagában nem egy robusztus, teljes körű megoldás.
Fontos
Ez a példakód egy kapcsolati sztring használ a tárfiókhoz való hozzáférés engedélyezéséhez. Ez a konfiguráció példaként szolgál. Az alkalmazáskódban körültekintően kell használni a kapcsolati sztringeket és a fiókelérési kulcsokat. Ha a fiók hozzáférési kulcsa elveszett vagy véletlenül nem biztonságos helyre került, a szolgáltatás sebezhetővé válhat. Bárki, aki rendelkezik a hozzáférési kulccsal, engedélyezheti a tárfiókra irányuló kérelmeket, és hatékonyan hozzáférhet az összes adathoz.
Az optimális biztonság érdekében a Microsoft azt javasolja, hogy az Azure-erőforrások felügyelt identitásait használva engedélyezze a blob-, üzenetsor- és táblaadatokra irányuló kérelmeket, amikor csak lehetséges. További információ: Blobok hozzáférésének engedélyezése a Microsoft Entra-azonosítóval.
A Blob Storage-objektummodell inicializálása
A .NET-hez készült Azure Storage SDK-ban a Blob Storage használatának szabványos mintája a következő:
Példányosítson egy új
BlobServiceClientobjektumot, és adja meg a kapcsolati sztring a tárfióknak.A lekéréshez
BlobContainerClienthívja megGetBlobContainerClientannak a tárolónak aBlobServiceClientnevét, amellyel kapcsolatba szeretne lépni vagy létrehozni.
A kódban ezek a lépések így néznek ki.
BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName);
Az inicializálási kód nem intéz hívásokat a hálózaton keresztül. Ez a tény azt jelenti, hogy néhány, helytelen információ miatt előforduló kivételt csak később dobnak ki. Ha például helytelenül formázott kapcsolati sztring ad meg az BlobServiceClient osztály konstruktorának, a rendszer azonnal kivételt jelez. Ha azonban a kapcsolati sztring olyan tárfiókra mutat, amely nem létezik, a rendszer kivételt nem tesz, amíg meg nem kísérli a műveletet a tárfiókon.
A Java-hoz készült Azure Storage SDK-ban a Blob Storage használatának szabványos mintája a következő lépésekből áll:
Hozzon létre egy
BlobServiceClientújBlobServiceClientBuilderobjektumot a tárfiók kapcsolati sztring használatával.BlobContainerClientEhhez hívja meg agetBlobContainerClientmetódust annakBlobServiceClienta tárolónak a nevével, amellyel kapcsolatba szeretne lépni vagy létrehozni.
A kódban ezek a lépések így néznek ki.
BlobServiceClient blobServiceClient = BlobServiceClientBuilder()
.connectionString(connectionString)
.buildClient();
BlobContainerClient containerClient = blobServiceClient.getBlobContainerClient(containerName);
Az inicializálási kód nem intéz hívásokat a hálózaton keresztül. Ez a tény azt jelenti, hogy néhány, helytelen információ miatt előforduló kivételt csak később dobnak ki. Ha például helytelenül formázott kapcsolati sztring ad meg a BlobServiceClientBuilderrendszer, a rendszer azonnal kivételt jelez. Ha azonban a kapcsolati sztring olyan tárfiókra mutat, amely nem létezik, a rendszer kivételt nem tesz, amíg meg nem kísérli a műveletet a tárfiókon.
Tárolók létrehozása az indításkor
Ha tárolót szeretne létrehozni az alkalmazás indításakor vagy amikor az alkalmazás először megpróbál tárolót használni, hívja fel CreateIfNotExistsAsync a BlobContainerClient.
CreateIfNotExistsAsync nem ad kivételt, ha a tároló már létezik, de hálózati hívást indít az Azure Blob Storage-ba. Csak egyszer érdemes meghívni az inicializálásnál, nem pedig minden alkalommal, amikor használni szeretné a tárolót.
Ha tárolót szeretne létrehozni, amikor az alkalmazás elindul, vagy amikor először megpróbálja használni, hívja meg a tárolót existsBlobContainerClient , hogy ellenőrizze, létezik-e már tároló. Ha nem létezik, hívja meg a következőt create: Csak egyszer érdemes meghívni az inicializálásnál, nem pedig minden alkalommal, amikor használni szeretné a tárolót.
Gyakorlat
A befejezetlen alkalmazás klónozása és felfedezése
Először klónozza a kezdőalkalmazást a GitHubról. A forráskód másolatának lekéréséhez és a szerkesztőben való megnyitásához futtassa a következő parancsokat az Azure Shell parancssori felületén:
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 .A szerkesztőben nyissa meg a fájlvezérlőket/FilesController.cs. Itt nincs teendő, de gyorsan áttekintheti az alkalmazás működését.
Ez a vezérlő egy API-t implementál három művelettel:
-
Index: (
GET /api/Files) az URL-címek listáját adja vissza, egyet minden feltöltött fájlhoz. Az alkalmazás kezelőfelülete ezt a módszert hívja a feltöltött fájlokra mutató hivatkozások létrehozásához. -
Feltöltés: (
POST /api/Files) megkapja a feltöltött fájlt, és menti azt. -
Letöltés: (
GET /api/Files/{filename}) letölti az egyes fájlokat a neve alapján.
Mindegyik módszer egy
IStoragenevűstorage-példányt használ a feladathoz. A kitöltendő modellek/IStoragehiányos implementációja van.-
Index: (
A NuGet-csomag hozzáadása
Adjon hozzá egy hivatkozást az Azure Storage SDK-ra. Futtassa a következő parancsokat az Azure Shell CLI-ben:
dotnet add package Azure.Storage.Blobs dotnet restoreEz a parancs biztosítja, hogy a Blob Storage-ügyfélkódtár legújabb verzióját használja.
Konfigurálás
A szükséges konfigurációs értékek a tárfiók kapcsolati sztring és annak a tárolónak a neve, amelyet az alkalmazás a fájlok tárolására használ. Ebben a modulban csak a Azure-alkalmazás Service-ben fogja futtatni az alkalmazást. Kövesse az App Service ajánlott eljárásait, és tárolja az értékeket az App Service alkalmazásbeállításaiban. Ezt az App Service-példány létrehozásakor teheti meg. Jelenleg semmit sem kell tennie.
A konfiguráció használatakor a kezdőalkalmazás tartalmazza a szükséges vízvezetéket. A IOptions<AzureStorageConfig> konstruktorparaméter két tulajdonsággal BlobStorage rendelkezik: a tárfiók kapcsolati sztring és annak a tárolónak a neve, amelyet az alkalmazás blobok tárolására használ. Az alkalmazás indításakor van ConfigureServices egy kód, amely betölti Startup.cs a konfiguráció értékeit.
Inicializálás
A szerkesztőben nyissa meg a Models/BlobStorage.cs elemet. A fájl tetején adja hozzá a következő
usingutasításokat, hogy előkészítse a hozzáadni kívánt kódhoz.using Azure; using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models;Keresse meg a(z)
Initializemetódust. Az alkalmazás először hívja meg ezt a metódustBlobStorage. Ha kíváncsi, megnézheti aConfigureServicesa Startup.cs fájlban, hogy hogyan történik a hívás.A tárolót az
Initializerészben érdemes létrehozni, ha még nem létezik. Cserélje le a jelenlegi implementációtInitializea következő kódra, és mentse a munkáját úgy, hogy megnyomja CTRL+S billentyűket.public Task Initialize() { BlobServiceClient blobServiceClient = new BlobServiceClient(storageConfig.ConnectionString); BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient(storageConfig.FileContainerName); return containerClient.CreateIfNotExistsAsync(); }
A befejezetlen alkalmazás klónozása és felfedezése
Először klónozza a kezdőalkalmazást a GitHubról. A forráskód másolatának lekéréséhez és a szerkesztőben való megnyitásához futtassa a következő parancsokat az Azure Shell parancssori felületén:
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 .A szerkesztőben nyissa meg az src/main/java/com/microsoft/azure/samples/jsf/IndexBean.java fájlt. Itt nincs teendő, de gyorsan áttekintheti az alkalmazás működését.
Ez a kérelem hatókörű bean az src/main/webapp/index.xhtml Java Server Faces (JSF) oldal által használt három műveletet valósít meg:
- listFileNames: a feltöltött fájlokhoz egy-egy fájlnevet ad vissza. A index.xhtml lap meghívja ezt a metódust a feltöltött fájlokra mutató hivatkozások listájának összeállításához.
-
feltöltés: fogad egy fájlt feltöltésként, majd elmenti. A fájl tartalmát és metaadatait a
uploadedFileJSF-keretrendszer injektálja a tulajdonságba. - letöltés: letölt egy adott fájlt a neve alapján.
A munkájához minden metódus egy úgynevezett
Storagepéldánytstoragehasznál. AStoragefájlban hiányos a implementáció, és ki kell tölteni.
Az Azure Storage SDK for Java-referencia hozzáadása
Javasoljuk, hogy az Azure BOM használatával adjon hozzá Azure-ügyfélkódtárakat a projekthez. Egyszerű és elegáns módot kínál több Azure-ügyfélkódtár együttes használatára, miközben minimális függőségi ütközéseket biztosít.
A szerkesztőben nyissa meg a fájltpom.xml.
Az Azure BOM projekthez való hozzáadásához adja hozzá az alábbi
dependencyManagementszakaszt azprojectxml-címke alatt.<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>Az Azure Storage SDK for Java hozzáadásához adja hozzá az alábbiakat
dependencyazproject/dependenciesxml-szakaszhoz.<dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-blob</artifactId> </dependency>
Konfigurálás
A szükséges konfigurációs értékek a tárfiók kapcsolati sztring és annak a tárolónak a neve, amelyet az alkalmazás a fájlok tárolására használ. Ebben a modulban csak a Azure-alkalmazás Service-ben fogja futtatni az alkalmazást. Kövesse az App Service ajánlott eljárásait, és tárolja az értékeket az App Service alkalmazásbeállításaiban. Ezt az App Service-példány létrehozásakor teheti meg. Jelenleg semmit sem kell tennie.
A konfiguráció használatakor az App Service alkalmazásbeállításai környezeti változóként lesznek átadva az alkalmazáskódnak. Ezeket az inicializálási kódban olvashatja el.
Inicializálás
A szerkesztőben nyissa meg az src/main/java/com/microsoft/azure/samples/service/BlobStorage.java fájlt. A fájl tetején adja hozzá a következő
importutasításokat, hogy előkészítse a hozzáadni kívánt kódhoz.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;Adjon hozzá egy osztálytulajdonságot az
BlobStorageosztályban aBlobContainerClienthivatkozás tárolásához.private BlobContainerClient blobContainerClient;Tipp.
Az Azure-ügyfelek állapot nélküliek és szálbiztosak. A példányok gyorsítótárazása ajánlott, ahol lehetséges. A használt alkalmazás például egyetlen tárolót használ állandó névvel, ezért a legjobb, ha az alkalmazás élettartamának hatókörében gyorsítótárazza.
BlobStorage@Singletonezért a hivatkozás a saját mezőjében való tárolásaBlobContainerClientjavasolt.Keresse meg a
initmódszert széljegyzetekkel@PostConstruct. Az alkalmazás a példány létrehozása utánBlobStorageés az első használat előtt hívja meg ezt a metódust.initHa még nem létezik, akkor a tárolót itt hozhatja létre. Cserélje le azinitjelenlegi formáját az alábbi kódra, majd mentse a módosítást.@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(); } }