Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ismerkedés az Azure Blob Storage Quarkus bővítményével a blobok és tárolók kezeléséhez. Ebben a cikkben lépéseket követve kipróbálhatja az alapfeladatok példakódját.
Referenciadokumentáció | Kódtár forráskódja | Csomag (Maven) | Minta
Előfeltételek
- Azure-fiók aktív előfizetéssel – hozzon létre ingyenes fiókot.
- Azure CLI – Telepítse az Azure CLI 2.62.0-s vagy újabb verzióját az Azure CLI-parancsok futtatásához.
- Azure Storage-fiók – tárfiók létrehozása.
- A Java Development Kit (JDK) 17-es vagy újabb verziója.
- Apache Maven.
Előkészítés
Ez a szakasz végigvezeti egy projekt előkészítésén az Azure Blob Storage Quarkus-bővítményeivel való munkához.
A mintaalkalmazás letöltése
A rövid útmutatóban használt mintaalkalmazás egy alapszintű Quarkus-alkalmazás.
A git használatával töltse le az alkalmazás egy példányát a fejlesztői környezetbe, és keresse meg a storage-blob-quarkus könyvtárat.
git clone https://github.com/Azure-Samples/quarkus-azure.git
cd quarkus-azure
git checkout 2025-01-20
cd storage-blob-quarkus
Hitelesítés az Azure-ban és a blobadatokhoz való hozzáférés engedélyezése
Az Azure Blob Storage-ba irányuló alkalmazáskéréseket engedélyezni kell. Az Azure Identity-ügyfélkódtár használata DefaultAzureCredential és az Azure Identity-ügyfélkódtár használata ajánlott módszer az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatok implementálásához a kódban, beleértve a Blob Storage-t is. Az Azure-szolgáltatásokHoz készült Quarkus-bővítmény támogatja ezt a megközelítést.
DefaultAzureCredential Egy hitelesítőadat-lánc implementációja, amelyet a Java-hoz készült Azure Identity ügyfélkódtár biztosít.
DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust használja futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.
A hitelesítő adatokat kereső sorrend és helyek DefaultAzureCredential az Azure Identity-kódtár áttekintésében találhatók.
Ebben a rövid útmutatóban az alkalmazás helyi futtatáskor hitelesíti az Azure CLI bejelentkezési hitelesítő adatait. Az Azure-ban való üzembe helyezés után az alkalmazás használhat felügyelt identitást. A környezetek közötti váltáshoz nincs szükség kódmódosításra.
Szerepkörök hozzárendelése a Microsoft Entra felhasználói fiókjához
Helyi fejlesztéskor győződjön meg arról, hogy a blobadatokhoz hozzáférő felhasználói fiók rendelkezik a megfelelő engedélyekkel. A blobadatok olvasásához és írásához tárolóblobadatok közreműködője szükséges. A szerepkör hozzárendeléséhez hozzá kell rendelnie a Felhasználói hozzáférés rendszergazdája szerepkört, vagy egy másik szerepkört, amely tartalmazza a Microsoft.Authorization/roleAssignments/write műveletet. Azure RBAC-szerepköröket rendelhet egy felhasználóhoz az Azure Portal, az Azure CLI vagy az Azure PowerShell használatával. A Storage Blob Data Közreműködő szerepkörével kapcsolatos további információkért lásd: Storage Blob Data Közreműködő. A szerepkör-hozzárendelésekhez elérhető hatókörökről további információt az Azure RBAC hatókörének ismertetése című témakörben talál.
Ebben a forgatókönyvben engedélyeket rendel hozzá a felhasználói fiókjához, amely a tárfiókra terjed ki, hogy kövesse a minimális jogosultság elvét. Ez a gyakorlat csak a minimálisan szükséges engedélyeket biztosítja a felhasználóknak, és biztonságosabbá teszi a termelési környezeteket.
Az alábbi példa a Storage Blob Data Contributor szerepkört rendeli hozzá a felhasználói fiókjához, amely olvasási és írási hozzáférést biztosít a tárfiók blobadataihoz.
Fontos
A szerepkör-hozzárendelés propagálása a legtöbb esetben egy-két percet vesz igénybe az Azure-ban, de ritkán akár nyolc percet is igénybe vehet. Ha hitelesítési hibákat kap a kód első futtatásakor, várjon néhány percet, és próbálkozzon újra.
Az Azure Portalon keresse meg a tárfiókot a fő keresősávon vagy a bal oldali navigációs sávon.
A tárfiók áttekintési lapján válassza a Hozzáférés-vezérlés (IAM) lehetőséget a bal oldali menüben.
A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelések lapot.
A felső menüből válassza az + Hozzáadás lehetőséget, majd az eredményül kapott legördülő menüből a Szerepkör-hozzárendelés hozzáadása elemet.
A keresőmezővel szűrheti az eredményeket a kívánt szerepkörre. Ebben a példában keresse meg a Storage Blob-adatszolgáltatót , és válassza ki a megfelelő eredményt, majd válassza a Tovább gombot.
A Hozzáférés hozzárendelése területen válassza a Felhasználó, csoport vagy szolgáltatásnév lehetőséget, majd válassza a + Tagok kijelölése lehetőséget.
A párbeszédpanelen keresse meg a Microsoft Entra-felhasználónevet (általában a user@domain e-mail-címét), majd válassza a Párbeszédpanel alján található Kiválasztás lehetőséget.
Válassza a Véleményezés + hozzárendelés lehetőséget a végső oldalra lépéshez, majd a folyamat befejezéséhez ismételje meg a Véleményezés + hozzárendelés.
Jelentkezzen be, és csatlakoztassa az alkalmazáskódot az Azure-hoz a DefaultAzureCredential használatával
A tárfiókban lévő adatokhoz való hozzáférést az alábbi lépések végrehajtásával engedélyezheti:
Győződjön meg arról, hogy ugyanazzal a Microsoft Entra-fiókkal van hitelesítve, amelyhez a szerepkört hozzárendelte a tárfiókban. Az alábbi példa bemutatja, hogyan hitelesíthető az Azure CLI-vel:
az loginGyőződjön meg arról, hogy megadja az Azure Blob Storage-fiók végpontját. Az alábbi példa bemutatja, hogyan állíthatja be a végpontot a környezeti változó
QUARKUS_AZURE_STORAGE_BLOB_ENDPOINThasználatával az Azure CLI-vel. A parancs futtatása előtt cserélje le a<resource-group-name>és a<storage-account-name>elemeket az erőforráscsoport és a tárfiók nevére.export QUARKUS_AZURE_STORAGE_BLOB_ENDPOINT=$(az storage account show \ --resource-group <resource-group-name> \ --name <storage-account-name> \ --query 'primaryEndpoints.blob' \ --output tsv)
Megjegyzés:
Az Azure-ban való üzembe helyezéskor engedélyeznie kell a felügyelt identitást az alkalmazásban, és konfigurálnia kell a tárfiókot, hogy lehetővé tegye a felügyelt identitás csatlakoztatását. Az Azure-szolgáltatások közötti kapcsolat konfigurálásáról további információt az Azure által üzemeltetett Java-alkalmazások hitelesítése című témakörben talál.
A minta futtatása
A példakód a következő műveleteket hajtja végre:
- Olyan ügyfélobjektumot injektál, amely már jogosult az adathozzáféréshez
DefaultAzureCredentialaz Azure Blob Storage Quarkus bővítményével. - Tárolót hoz létre egy tárfiókban.
- Feltölt egy blobot a tárolóba.
- Felsorolja a tárolóban lévő blobokat.
- Letölti a blobadatokat a helyi fájlrendszerbe.
- Törli az alkalmazás által létrehozott blob- és tárolóerőforrásokat.
- Törli a helyi forrást és a letöltött fájlokat.
Futtassa az alkalmazást JVM módban az alábbi paranccsal:
mvn package
java -jar ./target/quarkus-app/quarkus-run.jar
Az alkalmazás kimenete hasonló az alábbi példához (az olvashatóság érdekében kihagyott UUID-értékek):
Uploading to Blob storage as blob:
https://mystorageacct.blob.core.windows.net/quickstartblobsUUID/quickstartUUID.txt
Listing blobs...
quickstartUUID.txt
Downloading blob to
./data/quickstartUUIDDOWNLOAD.txt
Press the Enter key to begin clean up
Deleting blob container...
Deleting the local source and downloaded files...
Done
A törlési folyamat megkezdése előtt ellenőrizze a két fájl adatmappáját. Összehasonlíthatja őket, és megfigyelheti, hogy azonosak.
Igény szerint natív módban is futtathatja a mintát. Ehhez telepítenie kell a GraalVM-et, vagy egy szerkesztőrendszerképet kell használnia a natív végrehajtható fájl létrehozásához. További információ: Natív végrehajtható fájl létrehozása. Ez a rövid útmutató a Dockert használja tároló-futtatókörnyezetként egy natív Linux-végrehajtható fájl létrehozásához. Ha még nem telepítette a Dockert, letöltheti a Docker webhelyéről.
Futtassa a következő parancsot a natív végrehajtható fájl Linux-környezetben való létrehozásához és végrehajtásához:
mvn package -Dnative -Dquarkus.native.container-build
./target/storage-blob-1.0.0-SNAPSHOT-runner
A mintakód ismertetése
Ezután áttekinti a mintakódot, hogy megértse, hogyan működik.
Ügyfélobjektum beszúrása engedélyezett hozzáféréssel
Bármely Azure-erőforrás SDK-val való használata egy ügyfélobjektum létrehozásával kezdődik. Az Azure Blob Storage Quarkus bővítménye automatikusan engedélyezett hozzáféréssel rendelkező kliensobjektumot injektál, DefaultAzureCredential használatával.
Az ügyfélobjektum sikeres beadásához először hozzá kell adnia a bővítményeket quarkus-arc és quarkus-azure-storage-blob a pom.xml fájlhoz függőségként:
<properties>
<quarkus.platform.version>3.17.7</quarkus.platform.version>
<quarkus.azure.services.version>1.1.1</quarkus.azure.services.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus.platform</groupId>
<artifactId>quarkus-bom</artifactId>
<version>${quarkus.platform.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.quarkiverse.azureservices</groupId>
<artifactId>quarkus-azure-services-bom</artifactId>
<version>${quarkus.azure.services.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-arc</artifactId>
</dependency>
<dependency>
<groupId>io.quarkiverse.azureservices</groupId>
<artifactId>quarkus-azure-storage-blob</artifactId>
</dependency>
</dependencies>
A quarkus-arc kiterjesztés szükséges ahhoz, hogy a @Inject annotációval az ügyfélobjektumot be lehessen szúrni az alkalmazáskódba. A quarkus-bom és quarkus-azure-services-bom függőségek a Quarkus platform és az Azure-szolgáltatásokhoz készült Quarkus-bővítmény verzióinak kezelésére szolgálnak.
A következő lépésben az ügyfélobjektumot beszúrhatja az alkalmazáskódba a @Inject széljegyzet használatával:
@Inject
BlobServiceClient blobServiceClient;
Csak ennyit kell kódolnia ahhoz, hogy lekérjen egy ügyfélobjektumot az Azure Blob Storage Quarkus bővítményével. Annak érdekében, hogy az ügyfélobjektum jogosult legyen a tárfiók futásidőben való elérésére, az alkalmazás futtatása előtt kövesse az előző, Hitelesítés az Azure-ba című szakaszban leírt lépéseket, és engedélyezze a blobadatokhoz való hozzáférést .
Blobok és tárolók kezelése
Az alábbi példakód bemutatja, hogyan hozhat létre tárolót, tölthet fel egy blobot, listázhat blobokat egy tárolóban, és hogyan tölthet le egy blobot.
Megjegyzés:
A helyi fájlrendszerbe való írás rossz gyakorlatnak számít a natív felhőalkalmazásokban. A példa azonban a helyi fájlrendszer használatával szemlélteti a blobtároló használatát oly módon, amelyet a felhasználó könnyen ellenőrizhet. Amikor éles környezetbe visz egy alkalmazást, tekintse át a tárolási lehetőségeket, és válassza ki az igényeinek leginkább megfelelő lehetőséget. További információ: A tárolási beállítások áttekintése.
// Create a unique name for the container
String containerName = "quickstartblobs" + java.util.UUID.randomUUID();
// Create the container and return a container client object
BlobContainerClient blobContainerClient = blobServiceClient.createBlobContainer(containerName);
// Create the ./data/ directory and a file for uploading and downloading
String localPath = "./data/";
new File(localPath).mkdirs();
String fileName = "quickstart" + java.util.UUID.randomUUID() + ".txt";
// Get a reference to a blob
BlobClient blobClient = blobContainerClient.getBlobClient(fileName);
// Write text to the file
FileWriter writer = null;
try
{
writer = new FileWriter(localPath + fileName, true);
writer.write("Hello, World!");
writer.close();
}
catch (IOException ex)
{
System.out.println(ex.getMessage());
}
System.out.println("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl());
// Upload the blob
blobClient.uploadFromFile(localPath + fileName);
System.out.println("\nListing blobs...");
// List the blob(s) in the container.
for (BlobItem blobItem : blobContainerClient.listBlobs()) {
System.out.println("\t" + blobItem.getName());
}
// Download the blob to a local file
// Append the string "DOWNLOAD" before the .txt extension for comparison purposes
String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
System.out.println("\nDownloading blob to\n\t " + localPath + downloadFileName);
blobClient.downloadToFile(localPath + downloadFileName);
File downloadedFile = new File(localPath + downloadFileName);
File localFile = new File(localPath + fileName);
// Clean up resources
System.out.println("\nPress the Enter key to begin clean up");
System.console().readLine();
System.out.println("Deleting blob container...");
blobContainerClient.delete();
System.out.println("Deleting the local source and downloaded files...");
localFile.delete();
downloadedFile.delete();
System.out.println("Done");
Ezek a műveletek hasonlóak a Java SE-hez készült Azure Blob Storage ügyfélkódtár rövid útmutatójában leírtakhoz. A kód részletesebb magyarázatát a rövid útmutató alábbi szakaszaiban találja:
- Tároló létrehozása
- Blobok feltöltése tárolóba
- A tárolóban lévő blobok listázása
- Blobok letöltése
- Tároló törlése
Takarítás
A Quarkus-alkalmazás Azure-ban való üzembe helyezéséhez kövesse a Következő lépések szakaszban található hivatkozásokat. Vagy törölheti a tárfiókot az erőforráscsoport törlésével. További információkért tekintse meg az Azure Resource Manager erőforráscsoportját és az erőforrás törlését.