Szybki start: biblioteka klienta usługi Azure Blob Storage dla środowiska Java SE

Uwaga

Opcja Buduj od zera prowadzi Cię przez tworzenie projektu, instalację pakietów, pisanie kodu i uruchamianie podstawowej aplikacji konsolowej. Wybierz tę opcję, aby dowiedzieć się, jak stworzyć aplikację łączącą się z Azure Blob Storage. Aby zautomatyzować zadania wdrożenia i rozpocząć od ukończonego projektu, wybierz Start od szablonu.

Uwaga

Opcja Start with the template wykorzystuje Azure Developer CLI do automatyzacji zadań wdrożenia i zapewnia ukończony projekt. Wybierz tę opcję, aby eksplorować kod bez wykonywania zadań konfiguracyjnych. Aby uzyskać instrukcje krok po kroku, jak zbudować aplikację, wybierz Build from scratch.

Rozpocznij pracę z biblioteką klienta usługi Azure Blob Storage dla języka Java, aby zarządzać obiektami blob i kontenerami.

W tym artykule wykonasz kroki, aby zainstalować pakiet i wypróbować przykładowy kod dla podstawowych zadań.

W tym artykule użyjesz Azure Developer CLI, aby wdrożyć zasoby Azure i uruchomić gotową aplikację konsolową, wykorzystując tylko kilka poleceń.

Napiwek

Dla aplikacji Spring korzystających z zasobów Azure Storage rozważ Spring Cloud Azure. Ten projekt open-source integruje Spring z usługami Azure. Przykład usługi Blob Storage można znaleźć tutaj: Przekazywanie pliku do obiektu blob usługi Azure Storage.

Dokumentacja referencyjna API | Kod źródłowy biblioteki | Pakiet (Maven) | Przykłady

Wymagania wstępne

Konfigurowanie

Ta sekcja przeprowadzi Cię przez proces przygotowywania projektu do pracy z biblioteką klienta usługi Azure Blob Storage dla języka Java.

Tworzenie projektu

Utwórz aplikację Java o nazwie blob-quickstart.

  1. W oknie konsoli (takim jak program PowerShell lub powłoka Bash) użyj narzędzia Maven, aby utworzyć nową aplikację konsolową z nazwą blob-quickstart. Wpisz następujące polecenie mvn , aby utworzyć "Hello world!" Projekt Java.

    mvn archetype:generate `
        --define interactiveMode=n `
        --define groupId=com.blobs.quickstart `
        --define artifactId=blob-quickstart `
        --define archetypeArtifactId=maven-archetype-quickstart `
        --define archetypeVersion=1.4
    
  2. Przeanalizuj wyniki generowania projektu.

    [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
    [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
    [INFO] Project created from Archetype in dir: C:\QuickStarts\blob-quickstart
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  7.056 s
    [INFO] Finished at: 2019-10-23T11:09:21-07:00
    [INFO] ------------------------------------------------------------------------
        ```
    
    
  3. Przejdź do nowo utworzonego folderu blob-quickstart .

    cd blob-quickstart
    
  4. W katalogu blob-quickstart utwórz kolejny katalog o nazwie data. W tym folderze tworzone i przechowywane są pliki danych blob.

    mkdir data
    

Instalowanie pakietów

pom.xml Otwórz plik w edytorze tekstów.

Dodaj azure-sdk-bom , aby uzyskać zależność od najnowszej wersji biblioteki. W poniższym fragmencie kodu zastąp {bom_version_to_target} symbol zastępczy numerem wersji. Używając azure-sdk-bom, nie musisz określać wersji każdej zależności indywidualnie. Aby dowiedzieć się więcej na temat BOM, zobacz README BOM Azure SDK.

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.azure</groupId>
            <artifactId>azure-sdk-bom</artifactId>
            <version>{bom_version_to_target}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Następnie dodaj następujące elementy zależności do grupy zależności. Potrzebujesz zależności Azure-identity do połączeń bezhasłowych z usługami Azure.

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

Konfigurowanie struktury aplikacji

W katalogu projektu wykonaj następujące kroki, aby utworzyć podstawową strukturę aplikacji:

  1. Przejdź do katalogu /src/main/java/com/blobs/quickstart
  2. App.java Otwórz plik w edytorze
  3. Usuwanie wiersza System.out.println("Hello world!");
  4. Dodaj niezbędne dyrektywy import

Kod powinien przypominać następującą strukturę:

package com.blobs.quickstart;

/**
 * Azure Blob Storage quickstart
 */
import com.azure.identity.*;
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
    {
        // Quickstart code goes here
    }
}

Korzystając z CLI dla deweloperów Azure, możesz utworzyć konto pamięci masowej i uruchomić przykładowy kod za pomocą kilku poleceń. Możesz uruchomić projekt w lokalnym środowisku deweloperskim lub w DevContainer.

Inicjowanie szablonu interfejsu wiersza polecenia dewelopera platformy Azure i wdrażanie zasobów

W pustym katalogu wykonaj następujące kroki, aby zainicjować azd szablon, aprowizować zasoby platformy Azure i rozpocząć pracę z kodem:

  • Sklonuj zasoby repozytorium szybkiego startu z usługi GitHub i zainicjuj szablon lokalnie:

    azd init --template blob-storage-quickstart-java
    

    Zostanie wyświetlony monit o podanie następujących informacji:

    • Nazwa środowiska: interfejs wiersza polecenia Azure Developer CLI używa tej wartości jako prefiksu dla wszystkich zasobów Azure, które tworzy. Nazwa musi być unikatowa we wszystkich subskrypcjach Azure i mieć długość od 3 do 24 znaków. Nazwa może zawierać tylko cyfry i małe litery.
  • Zaloguj się do platformy Azure:

    azd auth login
    
  • Aprowizuj i wdróż zasoby na platformie Azure:

    azd up
    

    Zostanie wyświetlony monit o podanie następujących informacji:

    • Subskrypcja: Subskrypcja platformy Azure służąca do wdrażania twoich zasobów.
    • Lokalizacja: Region Azure używany do wdrażania zasobów.

    Ukończenie wdrożenia może potrwać kilka minut. Dane wyjściowe z polecenia azd up zawierają nazwę nowo utworzonego konta magazynu danych, która będzie później potrzebna, aby uruchomić kod.

Uruchamianie przykładowego kodu

Na tym etapie zasoby są wdrażane na platformie Azure, a kod jest prawie gotowy do uruchomienia. Wykonaj następujące kroki, aby zaktualizować nazwę konta przechowywania w kodzie i uruchomić przykładową aplikację konsolową:

  • Zaktualizuj nazwę konta przechowywania
    1. W katalogu lokalnym przejdź do katalogu blob-quickstart/src/main/java/com/blobs/quickstart .
    2. Otwórz plik o nazwie App.java w edytorze. Znajdź symbol zastępczy <storage-account-name> i zastąp go rzeczywistą nazwą konta magazynu utworzonego przez polecenie azd up.
    3. Zapisz zmiany.
  • Uruchom projekt:
    1. Przejdź do katalogu blob-quickstart zawierającego pom.xml plik. Skompiluj projekt przy użyciu następującego mvn polecenia:
      mvn compile
      
    2. Spakuj skompilowany kod w formacie dystrybucyjnym:
      mvn package
      
    3. Uruchom następujące mvn polecenie, aby wykonać aplikację:
      mvn exec:java
      
  • Obserwuj wynik: Ta aplikacja tworzy plik testowy w lokalnym folderze danych i przesyła go do kontenera na koncie przechowywania. Przykład następnie wymienia obiekty blob w kontenerze i pobiera plik z nową nazwą, aby można było porównać stare i nowe pliki.

Aby dowiedzieć się więcej o sposobie działania przykładowego kodu, zobacz Przykłady kodu.

Po zakończeniu testowania kodu zobacz sekcję Czyszczenie zasobów , aby usunąć zasoby utworzone za azd up pomocą polecenia .

Model obiektów

Usługa Azure Blob Storage jest zoptymalizowana pod kątem przechowywania ogromnych ilości danych bez struktury. Dane bez struktury nie są zgodne z określonym modelem lub definicją danych, takimi jak dane tekstowe lub binarne. Magazyn obiektów blob oferuje trzy typy zasobów:

  • Konto magazynu
  • Kontener na koncie magazynowym
  • Obiekt blob w kontenerze

Na poniższym diagramie przedstawiono relacje między tymi zasobami.

Schemat przedstawiający konto pamięci masowej, które zawiera kontener blob i blob.

Użyj następujących klas języka Java, aby wchodzić w interakcje z tymi zasobami:

  • BlobServiceClient: Klasa BlobServiceClient zarządza zasobami Azure Storage oraz kontenerami blob. Konto magazynu zapewnia przestrzeń nazw najwyższego poziomu dla usługi Blob Service.
  • BlobServiceClientBuilder: Klasa oferuje BlobServiceClientBuilder płynne API do konfigurowania i tworzenia BlobServiceClient obiektów.
  • BlobContainerClient: Klasa zarządza BlobContainerClient kontenerami Azure Storage i ich blobami.
  • BlobClient: Klasa BlobClient zarządza blobami Azure Storage.
  • BlobItem: BlobItem klasa reprezentuje pojedyncze obiekty blob zwracane z wywołania funkcji listBlobs.

Przykłady kodu

Te przykładowe fragmenty kodu pokazują, jak wykonać następujące akcje za pomocą biblioteki klienta usługi Azure Blob Storage dla języka Java:

Ważne

Dodaj zależności i dyrektywy opisane w sekcji Ustawianie przed użyciem próbek kodu.

Uwaga

Szablon CLI dla deweloperów platformy Azure zawiera plik z przykładowym kodem, który jest już dostępny. Poniższe przykłady zawierają szczegółowe informacje dotyczące każdej części przykładowego kodu. Szablon implementuje zalecaną metodę uwierzytelniania bez hasła zgodnie z opisem w sekcji Uwierzytelnianie na platformie Azure . Metoda parametru połączenia jest wyświetlana jako alternatywa, ale nie jest używana w szablonie i nie zaleca się jej dla kodu produkcyjnego.

Uwierzytelnianie w Azure i autoryzacja dostępu do danych Blob

Żądania aplikacji do usługi Azure Blob Storage muszą być autoryzowane. DefaultAzureCredential Użycie klasy udostępnionej przez bibliotekę klienta tożsamości platformy Azure jest zalecanym podejściem do implementowania połączeń bez hasła z usługami platformy Azure w kodzie, w tym usługi Blob Storage.

Możesz również autoryzować żądania do usługi Azure Blob Storage przy użyciu klucza dostępu do konta. Należy jednak zachować ostrożność przy użyciu tego podejścia. Deweloperzy muszą być sumienni, aby nigdy nie ujawniać klucza dostępu w niezabezpieczonej lokalizacji. Każdy, kto ma klucz dostępu, może autoryzować żądania w odniesieniu do konta magazynowego i tym samym mieć dostęp do wszystkich danych. DefaultAzureCredential oferuje ulepszone korzyści związane z zarządzaniem i zabezpieczeniami za pośrednictwem klucza konta, aby umożliwić uwierzytelnianie bez hasła. Obie opcje przedstawiono w poniższym przykładzie.

DefaultAzureCredential jest klasą dostarczaną przez bibliotekę klienta tożsamości platformy Azure dla języka Java. DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa, która metoda ma być używana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (lokalnych i produkcyjnych) bez implementowania kodu specyficznego dla środowiska.

Informacje o kolejności i lokalizacjach, w jakich DefaultAzureCredential szuka poświadczeń, można znaleźć w omówieniu biblioteki Azure Identity.

Na przykład podczas programowania lokalnego aplikacja może używać poświadczeń logowania do programu Visual Studio Code do uwierzytelniania. Twoja aplikacja może wtedy korzystać z zarządzanej tożsamości po wdrożeniu na Azure. Do tego przejścia nie są wymagane żadne zmiany kodu.

Przypisywanie ról do konta użytkownika usługi Microsoft Entra

Podczas tworzenia aplikacji lokalnie upewnij się, że konto użytkownika, które uzyskuje dostęp do danych obiektów blob, ma odpowiednie uprawnienia. Będziesz potrzebować Współautora danych obiektu Blob Storage, aby odczytywać i zapisywać dane obiektów blob. Aby przypisać sobie tę rolę, musisz mieć przypisaną rolę Administratora dostępu użytkowników lub inną rolę obejmującą akcję Microsoft.Authorization/roleAssignments/write . Role RBAC platformy Azure można przypisać użytkownikowi przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Aby uzyskać więcej informacji na temat roli Współautor danych obiektu blob usługi Storage , zobacz Współautor danych obiektu blob usługi Storage. Aby uzyskać więcej informacji na temat dostępnych zakresów przypisań ról, zobacz Zrozumienie zakresu dla Azure RBAC.

W tym scenariuszu przypiszesz uprawnienia do konta użytkownika w odniesieniu do konta magazynu, zgodnie z zasadą najniższych uprawnień. Ta praktyka zapewnia użytkownikom tylko minimalne wymagane uprawnienia i tworzy bezpieczniejsze środowiska produkcyjne.

W poniższym przykładzie do konta użytkownika zostanie przypisana rola Współautora danych obiektu blob Storage, która zapewnia zarówno dostęp do odczytu, jak i zapisu danych obiektów blob w twoim koncie magazynu.

Ważne

W większości przypadków propagacja przypisania roli na platformie Azure potrwa minutę lub dwie, ale w rzadkich przypadkach może upłynąć do ośmiu minut. Jeśli podczas pierwszego uruchomienia kodu wystąpią błędy uwierzytelniania, zaczekaj chwilę i spróbuj ponownie.

  1. W portalu Azure znajdź konto przechowywania przy użyciu paska wyszukiwania lub nawigacji po lewej.

  2. Na stronie przeglądu konta magazynowego wybierz pozycję Kontrola dostępu (IAM) z lewego menu.

  3. Na stronie Kontrola dostępu (IAM) wybierz kartę Przypisania ról.

  4. Wybierz + Dodaj z górnego menu, a następnie Dodaj przypisanie roli z wyświetlonego menu rozwijanego.

    Zrzut ekranu przedstawiający sposób przypisywania roli.

  5. Użyj pola wyszukiwania, aby filtrować wyniki do żądanej roli. W tym przykładzie wyszukaj pozycję Współautor danych obiektu blob usługi Storage i wybierz pasujący wynik, a następnie wybierz pozycję Dalej.

  6. W obszarze Przypisz dostęp do wybierz pozycję Użytkownik, grupa lub jednostka główna usługi, a następnie wybierz pozycję + Wybierz członków.

  7. W oknie dialogowym wyszukaj nazwę użytkownika firmy Microsoft Entra (zazwyczaj adres e-mail user@domain ), a następnie wybierz pozycję Wybierz w dolnej części okna dialogowego.

  8. Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.

Zaloguj się i połącz kod aplikacji z platformą Azure za pomocą DefaultAzureCredential

Autoryzuj dostęp do danych w swoim koncie pamięci, wykonując następujące kroki:

  1. Uwierzytelnij się, używając tego samego konta Microsoft Entra, do którego przypisałeś rolę konta magazynowego. Użyj Azure CLI, Visual Studio Code lub Azure PowerShell.

    Zaloguj się do platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu następującego polecenia:

    az login
    
  2. Aby użyć DefaultAzureCredential, dodaj zależność azure-identity do pom.xml:

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
    </dependency>
    
  3. Dodaj ten kod do main metody . Gdy kod jest uruchamiany na lokalnej stacji roboczej, używa poświadczeń dewelopera z narzędzia o najwyższym priorytecie, do którego jesteś zalogowany, aby uwierzytelnić się w usłudze Azure, na przykład za pomocą Azure CLI lub Visual Studio Code.

    /*
     * The default credential first checks environment variables for configuration
     * If environment configuration is incomplete, it will try managed identity
     */
    DefaultAzureCredential defaultCredential = new DefaultAzureCredentialBuilder().build();
    
    // Azure SDK client builders accept the credential as a parameter
    // TODO: Replace <storage-account-name> with your actual storage account name
    BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
            .endpoint("https://<storage-account-name>.blob.core.windows.net/")
            .credential(defaultCredential)
            .buildClient();
    
  4. Zaktualizuj nazwę konta pamięci w URI twojego BlobServiceClient. Nazwę konta magazynowego znajdziesz na stronie przeglądowej w portalu Azure.

    Zrzut ekranu pokazujący, jak znaleźć nazwę konta pamięci.

    Uwaga

    Po wdrożeniu na platformie Azure ten sam kod może służyć do autoryzowania żądań do usługi Azure Storage z aplikacji działającej na platformie Azure. Należy jednak włączyć tożsamość zarządzaną w aplikacji w Azure. Następnie skonfiguruj konto magazynu, aby umożliwić tej tożsamości zarządzanej nawiązanie połączenia. Aby uzyskać szczegółowe instrukcje dotyczące konfigurowania tego połączenia między usługami platformy Azure, zobacz samouczek "Uwierzytelnianie w aplikacjach hostowanych na platformie Azure".

Tworzenie kontenera

Utwórz nowy kontener w koncie magazynowym, wywołując metodę createBlobContainer na obiekcie blobServiceClient. W tym przykładzie kod dołącza wartość identyfikatora GUID do nazwy kontenera, aby upewnić się, że jest on unikatowy.

Dodaj ten kod na końcu main metody:

// 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);

Więcej informacji i przykładów można znaleźć w artykule Utwórz kontener blob w Javi.

Ważne

Nazwy kontenerów muszą być zapisane małymi literami. Aby uzyskać więcej informacji o nazewnictwie kontenerów i obiektów blob, zobacz temat Nazewnictwo i odwoływanie się do kontenerów, obiektów blob i metadanych.

Przesyłanie blobów do kontenera

Załaduj obiekt blob do kontenera, wywołując metodę uploadFromFile. Przykładowy kod tworzy plik tekstowy w lokalnym katalogu danych w celu przekazania do kontenera.

Dodaj ten kod na końcu main metody:

// 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);

Więcej informacji i przykładów znajdziesz w artykule Upload a blob with Java.

Wyświetl listę blobów w kontenerze

Wyświetl listę blobów w kontenerze, wywołując metodę listBlobs. W tym przypadku dodałeś tylko jeden blob do kontenera, więc operacja listing zwraca tylko ten jeden blob.

Dodaj ten kod na końcu main metody:

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

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

Aby uzyskać więcej informacji i przykłady, zobacz Wyświetlanie listy obiektów blob za pomocą języka Java.

Pobieranie blobów

Pobierz utworzony wcześniej obiekt blob, wywołując metodę downloadToFile. Przykładowy kod dodaje przyrostek do DOWNLOAD nazwy pliku, dzięki czemu można zobaczyć oba pliki w lokalnym systemie plików.

Dodaj ten kod na końcu main metody:

// 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);

Więcej informacji i przykładów znajdziesz w artykule Pobierz blob za pomocą Javy.

Usuwanie kontenera

Poniższy kod oczyszcza zasoby stworzone przez aplikację, usuwając cały kontener za pomocą metody usuwania . Usuwa również pliki lokalne utworzone przez aplikację.

Aplikacja wstrzymuje działanie, czekając na dane wejściowe użytkownika, wywołując System.console().readLine(), zanim usunie obiekt blob, kontener i pliki lokalne. Ta pauza daje Ci szansę na sprawdzenie, czy aplikacja poprawnie utworzyła zasoby, zanim je usunie.

Dodaj ten kod na końcu main metody:

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");

Więcej informacji i przykładów można znaleźć w artykule Usuń i przywróć kontener blob w Javi.

Uruchamianie kodu

Ta aplikacja tworzy plik testowy w folderze lokalnym i przekazuje go do usługi Blob Storage. Przykład następnie wymienia obiekty blob w kontenerze i pobiera plik z nową nazwą, aby można było porównać stare i nowe pliki.

Postępuj zgodnie z następującymi krokami, aby skompilować, zapakować i uruchomić kod:

  1. Przejdź do katalogu zawierającego pom.xml plik i skompiluj projekt przy użyciu następującego mvn polecenia:
    mvn compile
    
  2. Spakuj skompilowany kod w formacie dystrybucyjnym:
    mvn package
    
  3. Uruchom następujące mvn polecenie, aby wykonać aplikację:
    mvn exec:java -D exec.mainClass=com.blobs.quickstart.App -D exec.cleanupDaemonThreads=false
    
    Aby uprościć krok uruchamiania, dodaj exec-maven-plugin do pom.xml i skonfiguruj go w sposób pokazany w poniższym kodzie:
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>exec-maven-plugin</artifactId>
      <version>1.4.0</version>
      <configuration>
        <mainClass>com.blobs.quickstart.App</mainClass>
        <cleanupDaemonThreads>false</cleanupDaemonThreads>
      </configuration>
    </plugin>
    
    W tej konfiguracji uruchom aplikację za pomocą następującego polecenia:
    mvn exec:java
    

Dane wyjściowe aplikacji są podobne do następujących przykładów (wartości UUID pominięte w celu zapewnienia czytelności):

Azure Blob Storage - Java quickstart sample

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

Przed rozpoczęciem procesu oczyszczania sprawdź, czy folder danych zawiera dwa pliki. Można je porównać i zaobserwować, że są identyczne.

Czyszczenie zasobów

Po zweryfikowaniu plików i zakończeniu testowania naciśnij klawisz Enter , aby usunąć pliki testowe wraz z kontenerem utworzonym na koncie magazynu. Możesz również użyć interfejsu wiersza polecenia platformy Azure, aby usunąć zasoby.

Po zakończeniu pracy z przewodnikiem Szybki start wyczyść utworzone zasoby, uruchamiając następujące polecenie:

azd down

Otrzymujesz komunikat potwierdzający usunięcie zasobów. Wprowadź , y aby potwierdzić.

Następny krok