Rychlý start: Správa objektů blob pomocí sady Java v12 SDK

V tomto rychlém startu se naučíte spravovat objekty blob pomocí Javy. Objekty blob jsou objekty, které mohou obsahovat velké objemy textových nebo binárních dat, včetně obrázků, dokumentů, streamovaných médií a archivních dat. Budete nahrávat, stahovat a vy listovat objekty blob a vytvářet a odstraňovat kontejnery.

Další prostředky:

Požadavky

Nastavení

Tato část vás provede přípravou projektu pro práci s klientskou knihovnou Azure Blob Storage v12 pro Javu.

Vytvoření projektu

Vytvořte aplikaci v Javě s názvem blob-quickstart-v12.

  1. V okně konzoly (například cmd, PowerShell nebo Bash) vytvořte pomocí Mavenu novou konzolovou aplikaci s názvem blob-quickstart-v12. Zadejte následující příkaz mvn, který vytvoří "Hello world!". Projekt v Javě.

    mvn archetype:generate `
        --define interactiveMode=n `
        --define groupId=com.blobs.quickstart `
        --define artifactId=blob-quickstart-v12 `
        --define archetypeArtifactId=maven-archetype-quickstart `
        --define archetypeVersion=1.4
    
  2. Výstup generování projektu by měl vypadat nějak takhle:

    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< org.apache.maven:standalone-pom >-------------------
    [INFO] Building Maven Stub Project (No POM) 1
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    [INFO] >>> maven-archetype-plugin:3.1.2:generate (default-cli) > generate-sources @ standalone-pom >>>
    [INFO]
    [INFO] <<< maven-archetype-plugin:3.1.2:generate (default-cli) < generate-sources @ standalone-pom <<<
    [INFO]
    [INFO]
    [INFO] --- maven-archetype-plugin:3.1.2:generate (default-cli) @ standalone-pom ---
    [INFO] Generating project in Batch mode
    [INFO] ----------------------------------------------------------------------------
    [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
    [INFO] ----------------------------------------------------------------------------
    [INFO] Parameter: groupId, Value: com.blobs.quickstart
    [INFO] Parameter: artifactId, Value: blob-quickstart-v12
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.blobs.quickstart
    [INFO] Parameter: packageInPathFormat, Value: com/blobs/quickstart
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: package, Value: com.blobs.quickstart
    [INFO] Parameter: groupId, Value: com.blobs.quickstart
    [INFO] Parameter: artifactId, Value: blob-quickstart-v12
    [INFO] Project created from Archetype in dir: C:\QuickStarts\blob-quickstart-v12
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  7.056 s
    [INFO] Finished at: 2019-10-23T11:09:21-07:00
    [INFO] ------------------------------------------------------------------------
        ```
    
    
  3. Switch to the newly created blob-quickstart-v12 folder.

    cd blob-quickstart-v12
    
  4. Na straně adresáře blob-quickstart-v12 vytvořte další adresář s názvem data. Tady se vytvoří a uloží datové soubory objektů blob.

    mkdir data
    

Instalace balíčku

Otevřete soubor pom.xml v textovém editoru. Přidejte následující element závislosti do skupiny závislostí.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-storage-blob</artifactId>
    <version>12.13.0</version>
</dependency>

Nastavení architektury aplikace

Z adresáře projektu:

  1. Přejděte do adresáře /src/main/java/com/blobs/quickstart.
  2. Otevřete soubor App.java v editoru.
  3. Odstranění System.out.println("Hello world!"); příkazu
  4. Přidání import direktiv

Tady je kód:

package com.blobs.quickstart;

/**
 * Azure blob storage v12 SDK quickstart
 */
import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import java.io.*;

public class App
{
    public static void main( String[] args ) throws IOException
    {
    }
}

Zkopírování přihlašovacích údajů z webu Azure Portal

Když ukázková aplikace vytvoří požadavek na Azure Storage, musí být autorizována. Pokud chcete požadavek autorizovat, přidejte do aplikace přihlašovací údaje svého účtu úložiště jako připojovací řetězec. Pokud chcete zobrazit přihlašovací údaje účtu úložiště, postupujte takto:

  1. Přihlaste se k webu Azure Portal.

  2. Vyhledejte svůj účet úložiště.

  3. V podokně nabídek účtu úložiště v části Zabezpečení a sítě vyberte Přístupové klíče. Tady můžete zobrazit přístupové klíče účtu a úplný připojovací řetězec pro každý klíč.

    Snímek obrazovky znázorňuje, kde se nachází nastavení přístupového klíče v Azure Portal

  4. V podokně Přístupové klíče vyberte Zobrazit klíče.

  5. V části key1 vyhledejte hodnotu Připojovací řetězec. Vyberte ikonu Zkopírovat do schránky a zkopírujte připojovací řetězec. Hodnotu připojovacího řetězce přidáte do proměnné prostředí v další části.

    Snímek obrazovky ukazující zkopírování připojovacího řetězce z webu Azure Portal

Konfigurace připojovacího řetězce úložiště

Po zkopírování připojovacího řetězce ho zapište do nové proměnné prostředí na místním počítači, na který běží aplikace. Proměnnou prostředí nastavíte tak, že otevřete okno konzoly a budete postupovat podle pokynů pro váš operační systém. Nahraďte <yourconnectionstring> skutečným připojovacím řetězcem.

Windows

setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"

Po přidání proměnné prostředí v Windows, je nutné spustit novou instanci příkazového okna.

Linux

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

macOS

export AZURE_STORAGE_CONNECTION_STRING="<yourconnectionstring>"

Restartování programů

Po přidání proměnné prostředí restartujte všechny spuštěné programy, které budou muset proměnnou prostředí přečíst. Před pokračováním například restartujte vývojové prostředí nebo editor.

Objektový model

Služba Azure Blob Storage optimalizovaná pro ukládání velkých objemů nestrukturovaných dat. Jde o data, která nevyhovují konkrétnímu datovému modelu nebo definici, například textová nebo binární data. Úložiště objektů blob nabízí tři typy prostředků:

  • Účet úložiště
  • Kontejner v účtu úložiště
  • Objekt blob v kontejneru

Na následujícím diagramu jsou vztahy těchto prostředků.

Diagram architektury úložiště objektů blob

K interakci s těmito prostředky použijte následující třídy Jazyka Java:

  • BlobServiceClient:Třída BlobServiceClient umožňuje manipulovat s Azure Storage a kontejnery objektů blob. Účet úložiště poskytuje obor názvů nejvyšší úrovně pro Blob service.
  • BlobServiceClientBuilder:Třída poskytuje rozhraní API fluent builderu, které pomáhá s konfigurací BlobServiceClientBuilder a vytvářením instancí BlobServiceClient objektů.
  • BlobContainerClient:Třída BlobContainerClient umožňuje manipulovat s Azure Storage kontejnery a jejich objekty blob.
  • BlobClient:Třída BlobClient umožňuje manipulovat s Azure Storage objekty blob.
  • BlobItem:Třída BlobItem představuje jednotlivé objekty blob vrácené voláním metody listBlobs.

Příklady kódu

Tyto příklady fragmentů kódu ukazují, jak pomocí klientské knihovny Azure Blob Storage pro Javu provést následující:

Získání připojovacího řetězce

Následující kód načte připojovací řetězec pro účet úložiště z proměnné prostředí vytvořené v části Konfigurace připojovacího řetězce úložiště.

Do metody přidejte tento Main kód:

System.out.println("Azure Blob Storage v12 - Java quickstart sample\n");

// Retrieve the connection string for use with the application. The storage
// connection string is stored in an environment variable on the machine
// running the application called AZURE_STORAGE_CONNECTION_STRING. If the environment variable
// is created after the application is launched in a console or with
// Visual Studio, the shell or application needs to be closed and reloaded
// to take the environment variable into account.
String connectStr = System.getenv("AZURE_STORAGE_CONNECTION_STRING");

Vytvoření kontejneru

Rozhodněte se o názvu nového kontejneru. Následující kód připojí k názvu kontejneru hodnotu UUID, aby se zajistilo, že bude jedinečný.

Důležité

Názvy kontejnerů musí být malými písmeny. Další informace o pojmenování kontejnerů a objektů blob najdete v tématu Názvy kontejnerů, objektů blob a metadat a odkazování na ně.

Dále vytvořte instanci třídy BlobContainerClient a potom zavolejte metodu create, která ve skutečnosti vytvoří kontejner ve vašem účtu úložiště.

Na konec metody přidejte tento Main kód:

// Create a BlobServiceClient object which will be used to create a container client
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder().connectionString(connectStr).buildClient();

//Create a unique name for the container
String containerName = "quickstartblobs" + java.util.UUID.randomUUID();

// Create the container and return a container client object
BlobContainerClient containerClient = blobServiceClient.createBlobContainer(containerName);

Upload objektů blob do kontejneru

Následující fragment kódu:

  1. Vytvoří textový soubor v místním adresáři dat.
  2. Získá odkaz na objekt BlobClient voláním metody getBlobClient v kontejneru z části Vytvoření kontejneru.
  3. Nahraje místní textový soubor do objektu blob voláním metody uploadFromFile. Tato metoda vytvoří objekt blob, pokud ještě neexistuje, ale nepřepíše ho, pokud už existuje.

Na konec metody přidejte tento Main kód:

// Create a local file in the ./data/ directory for uploading and downloading
String localPath = "./data/";
String fileName = "quickstart" + java.util.UUID.randomUUID() + ".txt";
File localFile = new File(localPath + fileName);

// Write text to the file
FileWriter writer = new FileWriter(localPath + fileName, true);
writer.write("Hello, World!");
writer.close();

// Get a reference to a blob
BlobClient blobClient = containerClient.getBlobClient(fileName);

System.out.println("\nUploading to Blob storage as blob:\n\t" + blobClient.getBlobUrl());

// Upload the blob
blobClient.uploadFromFile(localPath + fileName);

Seznam objektů blob v kontejneru

Vypište objekty blob v kontejneru voláním metody listBlobs. V tomto případě se do kontejneru přidal pouze jeden objekt blob, takže operace výpisu vrátí pouze tento jeden objekt blob.

Na konec metody přidejte tento Main kód:

System.out.println("\nListing blobs...");

// List the blob(s) in the container.
for (BlobItem blobItem : containerClient.listBlobs()) {
    System.out.println("\t" + blobItem.getName());
}

Stáhnout objekty blob

Stáhněte dříve vytvořený objekt blob voláním metody downloadToFile. Příklad kódu přidá k názvu souboru příponu "DOWNLOAD", abyste viděli oba soubory v místním systému souborů.

Na konec metody přidejte tento Main kód:

// Download the blob to a local file
// Append the string "DOWNLOAD" before the .txt extension so that you can see both files.
String downloadFileName = fileName.replace(".txt", "DOWNLOAD.txt");
File downloadedFile = new File(localPath + downloadFileName);

System.out.println("\nDownloading blob to\n\t " + localPath + downloadFileName);

blobClient.downloadToFile(localPath + downloadFileName);

Odstranění kontejneru

Následující kód vyčistí prostředky vytvořené aplikací odebráním celého kontejneru pomocí metody delete. Odstraní také místní soubory vytvořené aplikací.

Aplikace se pozastaví pro vstup uživatele zavolám před odstraněním objektu System.console().readLine() blob, kontejneru a místních souborů. Je to dobrá šance ověřit, že se prostředky před odstraněním správně vytvořily.

Na konec metody přidejte tento Main kód:

// Clean up
System.out.println("\nPress the Enter key to begin clean up");
System.console().readLine();

System.out.println("Deleting blob container...");
containerClient.delete();

System.out.println("Deleting the local source and downloaded files...");
localFile.delete();
downloadedFile.delete();

System.out.println("Done");

Spuštění kódu

Tato aplikace vytvoří testovací soubor v místní složce a nahraje ho do úložiště objektů blob. Příklad pak vypíše objekty blob v kontejneru a stáhne soubor s novým názvem, abyste mohli porovnat staré a nové soubory.

Přejděte do adresáře, který obsahujepom.xml a zkompilujte projekt pomocí následujícího mvn příkazu.

mvn compile

Pak Sestavte balíček.

mvn package

Spusťte následující mvn příkaz, který aplikaci spustí.

mvn exec:java -Dexec.mainClass="com.blobs.quickstart.App" -Dexec.cleanupDaemonThreads=false

Výstup aplikace je podobný následujícímu příkladu:

Azure Blob Storage v12 - Java quickstart sample

Uploading to Blob storage as blob:
        https://mystorageacct.blob.core.windows.net/quickstartblobsf9aa68a5-260e-47e6-bea2-2dcfcfa1fd9a/quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65.txt

Listing blobs...
        quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65.txt

Downloading blob to
        ./data/quickstarta9c3a53e-ae9d-4863-8b34-f3d807992d65DOWNLOAD.txt

Press the Enter key to begin clean up

Deleting blob container...
Deleting the local source and downloaded files...
Done

Než zahájíte proces vyčištění, vyhledejte tyto dva soubory ve složce dat . Můžete je otevřít a podívat se, že jsou identické.

Po ověření souborů stiskněte klávesu ENTER , aby se odstranily soubory testu, a dokončete ukázku.

Další kroky

V tomto rychlém startu jste zjistili, jak nahrávat, stahovat a vypisovat objekty BLOB pomocí Java.

Pokud chcete zobrazit ukázkové aplikace služby Blob Storage, pokračujte: