Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
L'opzione Build from Scratch ti guida nella creazione di un progetto, nell'installazione di pacchetti, nella scrittura di codice e nell'esecuzione di un'app console di base. Scegli questa opzione per capire come creare un'app che si connetta a Archiviazione BLOB di Azure. Per automatizzare le attività di distribuzione e iniziare con un progetto completato, scegli Inizia con un template.
Nota
L'opzione Start with a template utilizza la CLI Azure Developer per automatizzare i compiti di distribuzione e fornisce un progetto completato. Scegli questa opzione per esplorare il codice senza completare i compiti di configurazione. Per istruzioni passo dopo passo per costruire l'app, scegli Costruisci da zero.
Introduzione alla libreria client di Archiviazione BLOB di Azure per Java per gestire BLOB e contenitori.
In questo articolo, vengono illustrati i passaggi per installare il pacchetto e provare il codice di esempio per le attività di base.
In questo articolo si usa Azure Developer CLI per distribuire le risorse di Azure ed eseguire un'app console completata con pochi comandi.
Suggerimento
Per le applicazioni Spring che utilizzano risorse Archiviazione di Azure, considera Spring Cloud Azure. Questo progetto open-source integra Spring con i servizi Azure. Per un esempio di gestione rete virtuale di Azure, vedi Upload a file to a Archiviazione di Azure Blob.
Documentazione di riferimento dell'API | Codice sorgente della libreria | Pacchetto (Maven) | Esempi
Prerequisiti
- Account Azure con una sottoscrizione attiva: creare un account gratuito
- Account di archiviazione di Azure: creare un account di archiviazione.
- Java Development Kit (JDK) versione 1.8_101 o successiva
- Apache Maven
- Sottoscrizione di Azure: creare un account gratuito
- Java Development Kit (JDK) versione 1.8_101 o successiva
- Apache Maven
- CLI per sviluppatori di Azure
Configurazione
Questa sezione illustra come preparare un progetto da usare con la libreria client di Archiviazione BLOB di Azure per Java.
Creare il progetto
Creare un'applicazione Java denominata blob-quickstart.
Nella finestra di una console (ad esempio PowerShell o Bash) usare Maven per creare una nuova app console con il nome blob-quickstart. Digitare il comando mvn seguente per creare un progetto Java "Hello world!" .
mvn archetype:generate ` --define interactiveMode=n ` --define groupId=com.blobs.quickstart ` --define artifactId=blob-quickstart ` --define archetypeArtifactId=maven-archetype-quickstart ` --define archetypeVersion=1.4Rivedi i risultati derivanti dalla generazione del progetto.
[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] ------------------------------------------------------------------------ ```Passare alla cartella blob-quickstart appena creata.
cd blob-quickstartAll'interno della cartella blob-quickstart , crea un'altra directory chiamata data. Questa cartella è dove vengono creati e memorizzati i file dati blob.
mkdir data
Installare i pacchetti
Aprire il file pom.xml nell'editor di testo.
Aggiungere azure-sdk-bom per inserire una dipendenza dall'ultima versione della libreria. Nel frammento di codice seguente sostituire il segnaposto {bom_version_to_target} con il numero di versione. Usando azure-sdk-bom, non è necessario specificare la versione di ogni singola dipendenza. Per saperne di più sulla BOM, consulta il README della BOM di 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>
Poi, aggiungere gli elementi di dipendenza seguenti al gruppo di dipendenze. Serve la dipendenza Azure-identity per le connessioni senza password ai servizi Azure.
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-storage-blob</artifactId>
</dependency>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
Configurare il framework dell'app
Nella directory del progetto seguire questa procedura per creare la struttura di base dell'app:
- Passare alla directory
/src/main/java/com/blobs/quickstart - Aprire il file
App.javanell'editor - Eliminare la riga
System.out.println("Hello world!"); - Aggiungere le direttive necessarie
import
Il codice dovrebbe essere simile a questo framework:
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
}
}
Utilizzando la CLI di Azure Developer, puoi creare un account di archiviazione ed eseguire il codice di esempio con pochi comandi. Puoi eseguire il progetto nel tuo ambiente di sviluppo locale o in un DevContainer.
Inizializzare il modello Azure Developer CLI e distribuire le risorse
Da una directory vuota seguire questa procedura per inizializzare il modello azd, effettuare il provisioning delle risorse di Azure e iniziare a usare il codice:
Clona le risorse del repository quickstart da GitHub e inizializza il modello localmente:
azd init --template blob-storage-quickstart-javaVengono richieste le informazioni seguenti:
- Nome dell'ambiente: Azure Developer CLI usa questo valore come prefisso per tutte le risorse di Azure che crea. Il nome deve essere univoco in tutte le sottoscrizioni Azure e deve avere una lunghezza compresa tra 3 e 24 caratteri. Il nome può contenere solo lettere minuscole e numeri.
Accedere a Azure:
azd auth loginEffettuare il provisioning e distribuire le risorse in Azure:
azd upVengono richieste le informazioni seguenti:
- Abbonamento: l'abbonamento Azure per distribuire le tue risorse.
- Posizione: La regione Azure per distribuire le tue risorse.
Il completamento della distribuzione può richiedere alcuni minuti. L'output del
azd upcomando include il nome dell'account di archiviazione appena creato, necessario in un secondo momento per eseguire il codice.
Eseguire il codice di esempio
A questo punto, le risorse vengono distribuite in Azure e il codice è quasi pronto per l'esecuzione. Seguire questa procedura per aggiornare il nome dell'account di archiviazione nel codice ed eseguire l'app console di esempio:
-
Eseguire l’aggiornamento del nome dell'account di archiviazione:
- Nella directory locale, passare alla directory blob-quickstart/src/main/java/com/blobs/quickstart.
- Aprire il file denominato App.java nell'editor. Trovare il segnaposto
<storage-account-name>e sostituirlo con il nome effettivo dell'account di archiviazione creato dal comandoazd up. - Salvare le modifiche.
-
Eseguire il progetto:
- Passare alla directory blob-quickstart che contiene il file
pom.xml. Compilare il progetto usando il comandomvnseguente:mvn compile - Creare un pacchetto del codice compilato nel formato distribuibile:
mvn package - Eseguire il comando
mvnseguente per eseguire l'app:mvn exec:java
- Passare alla directory blob-quickstart che contiene il file
- Osserva l'output: l'app crea un file di test nella cartella locale data e lo carica in un contenitore nell'account di archiviazione. L'esempio elenca quindi i BLOB presenti nel contenitore e scarica il file con un nuovo nome per consentire il confronto tra i nuovi file e quelli precedenti.
Per altre informazioni sul funzionamento del codice di esempio, vedere Esempi di codice.
Al termine del test del codice, vedere la sezione Pulire le risorse per eliminare le risorse create dal comando azd up.
Modello a oggetti
Il servizio Archiviazione BLOB di Azure è ottimizzato per archiviare enormi quantità di dati non strutturati. I dati non strutturati non seguono una definizione o un modello di dati specifico, ad esempio dati di testo o binari. L'archiviazione BLOB offre tre tipi di risorse:
- L'account di archiviazione
- Un contenitore nell'account di archiviazione
- Un BLOB in un contenitore
Il diagramma seguente mostra la relazione tra queste risorse.
Per interagire con queste risorse, usare le classi Java seguenti:
-
BlobServiceClient: La
BlobServiceClientclasse gestisce le risorse e i container blob di Archiviazione di Azure. L'account di archiviazione fornisce il namespace di primo livello per il servizio Blob. -
BlobServiceClientBuilder: La
BlobServiceClientBuilderclasse fornisce un'API fluida per configurare e creareBlobServiceClientoggetti. -
BlobContainerClient: La
BlobContainerClientclasse gestisce i container di Archiviazione di Azure e i loro blob. -
BlobClient: La
BlobClientclasse gestisce i blob di Archiviazione di Azure. -
BlobItem: la classe
BlobItemrappresenta singoli BLOB restituiti da una chiamata a listBlobs.
Esempi di codice
Questi frammenti di codice di esempio illustrano come eseguire le azioni seguenti con la libreria client di Archiviazione BLOB di Azure per Java:
- Eseguire l'autenticazione in Azure e autorizzare l'accesso ai dati BLOB
- Creare un contenitore
- Carica blob in un contenitore
- Elencare i BLOB in un contenitore
- Scaricare i BLOB
- Eliminare un contenitore
Importante
Aggiungi le dipendenze e le direttive descritte in Configurazione prima di usare i campioni di codice.
Nota
Il modello Azure Developer CLI include un file con codice di esempio già disponibile. Negli esempi seguenti vengono forniti dettagli per ogni parte del codice di esempio. Il modello implementa il metodo di autenticazione senza password consigliato, come descritto nella sezione Eseguire l'autenticazione in Azure. Il metodo della stringa di connessione viene visualizzato come alternativa, ma non viene usato nel modello e non è consigliato per il codice di produzione.
Eseguire l'autenticazione in Azure e autorizzare l'accesso ai dati BLOB
Le richieste dell'applicazione all'Archiviazione BLOB di Azure devono essere autorizzate. L'uso della classe DefaultAzureCredential fornita dalla libreria client Azure Identity è l'approccio consigliato per implementare connessioni senza password ai servizi di Azure nel proprio codice, incluso gestione rete virtuale di Azure.
È anche possibile autorizzare le richieste all'Archiviazione BLOB di Azure usando la chiave di accesso dell'account. Tuttavia, questo approccio deve essere usato con cautela. Gli sviluppatori devono essere diligenti per non esporre mai la chiave di accesso in una posizione non sicura. Chiunque abbia la chiave di accesso può autorizzare richieste all'account di archiviazione e di fatto ha accesso a tutti i dati.
DefaultAzureCredential offre maggiore sicurezza e semplicità di gestione rispetto alla chiave dell'account per consentire l'autenticazione senza password. Entrambe le opzioni sono mostrate nell'esempio seguente.
DefaultAzureCredential è una classe fornita dalla libreria client di Azure Identity per Java.
DefaultAzureCredential supporta più metodi di autenticazione e determina il metodo da usare in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (locale e di produzione) senza implementare codice specifico dell'ambiente.
È possibile trovare l'ordine e le posizioni in cui DefaultAzureCredential cerca le credenziali nella panoramica della libreria delle identità Azure.
Ad esempio, la tua app può autenticarsi utilizzando le credenziali di accesso Visual Studio Code durante lo sviluppo locale. La tua app può quindi usare un'identità gestita dopo il deployment su Azure. Per questa transizione non sono necessarie modifiche al codice.
Assegnare ruoli all'account utente di Microsoft Entra
Quando si esegue lo sviluppo in locale, assicurarsi che l'account utente che accede ai dati BLOB disponga delle autorizzazioni corrette. Per leggere e scrivere dati BLOB, è necessario disporre del ruolo Collaboratore ai dati dei BLOB di archiviazione. Per assegnarti questo ruolo, devi disporre del ruolo Amministratore dell'accesso utente oppure di un altro ruolo che includa l'azione Microsoft.Authorization/roleAssignments/write. È possibile assegnare ruoli del Controllo degli accessi in base al ruolo di Azure a un utente usando il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell. Per ulteriori informazioni sul ruolo di Collaboratore ai dati BLOB, vedere Collaboratore ai dati BLOB. Per altre informazioni sugli ambiti disponibili per le assegnazioni di ruolo, vedere Comprendere l'ambito per Azure RBAC.
In questo scenario, assegnerai le autorizzazioni al tuo account utente, limitate all'account di archiviazione, per seguire il Principio del privilegio minimo. Questa procedura offre agli utenti solo le autorizzazioni minime necessarie e crea ambienti di produzione più sicuri.
L'esempio seguente assegnerà il ruolo Storage Blob Data Contributor al tuo account utente, che fornisce l'accesso in lettura e scrittura ai dati dei BLOB nel tuo account di archiviazione.
Importante
Nella maggior parte dei casi, la propagazione dell'assegnazione di ruolo in Azure richiederà almeno due minuti, ma in rari casi può richiedere fino a otto minuti. Se si ricevono errori di autenticazione quando si esegue il codice per la prima volta, attendere alcuni istanti e riprovare.
Nel portale di Azure, individua il tuo account di archiviazione tramite la barra di ricerca principale o il menu di navigazione a sinistra.
Nella pagina di panoramica dell'account di archiviazione selezionare Controllo di accesso (IAM) dal menu a sinistra.
Nella pagina Controllo di accesso (IAM), selezionare la scheda Assegnazioni di ruolo.
Selezionare + Aggiungi dal menu in alto e quindi Aggiungi assegnazione di ruolo dal menu a discesa risultante.
Usare la casella di ricerca per filtrare i risultati in base al ruolo desiderato. In questo esempio, cercare Storage Blob Data Contributor e selezionare il risultato corrispondente, quindi scegliere Avanti.
In Assegna accesso a selezionare Utente, gruppo o entità servizio e quindi scegliere + Seleziona membri.
Nella finestra di dialogo cercare il nome utente di Microsoft Entra (in genere l'indirizzo di posta elettronica user@domain) e quindi scegliere Selezionare nella parte inferiore della finestra di dialogo.
Selezionare Rivedi e assegna per passare alla pagina finale e quindi Rivedi e assegna di nuovo per completare il processo.
Accedere e connettere il codice dell'app a Azure usando DefaultAzureCredential
Autorizza l'accesso ai dati nel tuo account di archiviazione seguendo questi passaggi:
Autentica usando lo stesso account Microsoft Entra a cui hai assegnato il ruolo dell'account storage. Usa interfaccia della riga di comando di Azure, Visual Studio Code o Azure PowerShell.
Accedere ad Azure tramite l'interfaccia della riga di comando di Azure usando il comando seguente:
az loginPer usare
DefaultAzureCredential, aggiungi la dipendenza azure-identity apom.xml:<dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> </dependency>Aggiungere questo codice al metodo
main. Quando il codice viene eseguito sulla tua workstation locale, utilizza le credenziali di sviluppo dello strumento prioritario a cui sei connesso per autenticarti su Azure, come interfaccia della riga di comando di Azure o 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();Aggiorna il nome dell'account di archiviazione nell'URI del tuo
BlobServiceClient. Trova il nome dell'account di archiviazione nella pagina panoramica del portale Azure.
Nota
Quando viene distribuito in Azure, questo stesso codice può essere usato per autorizzare le richieste ad Archiviazione di Azure da un'applicazione in esecuzione in Azure. Tuttavia, è necessario abilitare l'identità gestita nell'app in Azure. Configurare quindi l'account di archiviazione per consentire la connessione a tale identità gestita. Per istruzioni dettagliate sulla configurazione di questa connessione tra i servizi di Azure, vedere l'esercitazione Autenticazione dalle app ospitate in Azure.
Creazione di un contenitore
Creare un nuovo contenitore nell'account di archiviazione chiamando il metodo createBlobContainer sull'oggetto blobServiceClient. In questo esempio il codice aggiunge un valore GUID al nome del contenitore per assicurarsi che sia univoco.
Aggiungere questo codice alla fine del metodo main:
// 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);
Per ulteriori informazioni ed esempi, vedi Creare un contenitore blob con Java.
Importante
I nomi dei contenitori devono essere in minuscolo. Per altre informazioni sulla denominazione di contenitori e BLOB, vedere Naming and Referencing Containers, Blobs, and Metadata (Assegnazione di nome e riferimento a contenitori, BLOB e metadati).
Carica i blob in un contenitore
Caricare un BLOB in un contenitore chiamando il metodo uploadFromFile. Il codice di esempio crea un file di testo nella directory dati locale da caricare nel contenitore.
Aggiungere questo codice alla fine del metodo main:
// 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);
Per ulteriori informazioni ed esempi, vedi Carica un blob con Java.
Elencare i BLOB in un contenitore
Elencare i BLOB presenti nel contenitore chiamando il metodo listBlobs. In questo caso, hai aggiunto un solo blob al contenitore, quindi l'operazione di elenco restituisce solo quel blob.
Aggiungere questo codice alla fine del metodo main:
System.out.println("\nListing blobs...");
// List the blob(s) in the container.
for (BlobItem blobItem : blobContainerClient.listBlobs()) {
System.out.println("\t" + blobItem.getName());
}
Per ulteriori informazioni ed esempi, consulta Elencare i BLOB con Java.
Scaricare i BLOB
Scaricare il BLOB creato in precedenza chiamando il metodo downloadToFile. Il codice di esempio aggiunge un suffisso di DOWNLOAD al nome del file in modo che tu possa vedere entrambi i file nel file system locale.
Aggiungere questo codice alla fine del metodo main:
// 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);
Per ulteriori informazioni ed esempi, vedi Download a blob with Java.
Eliminare un contenitore
Il codice seguente risolve le risorse create dall'app rimuovendo l'intero container utilizzando il metodo di eliminazione . Elimina anche i file locali creati dall'app.
L'app si interrompe in attesa dell'input dell'utente chiamando System.console().readLine() prima di eliminare il blob, il contenitore e i file locali. Questa pausa ti dà la possibilità di verificare che l'app abbia creato correttamente le risorse prima di eliminarle.
Aggiungere questo codice alla fine del metodo main:
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");
Per ulteriori informazioni ed esempi, vedi Elimina e ripristina un contenitore blob con Java.
Eseguire il codice
Questa app crea un file di test nella cartella locale e lo carica nell'archiviazione BLOB. L'esempio elenca quindi i BLOB presenti nel contenitore e scarica il file con un nuovo nome per consentire il confronto tra i nuovi file e quelli precedenti.
Segui questi passaggi per compilare, impacchettare ed eseguire il codice:
- Passare alla directory contenente il file
pom.xmle compilare il progetto tramite il comandomvnseguente:mvn compile - Creare un pacchetto del codice compilato nel formato distribuibile:
mvn package - Eseguire il comando
mvnseguente per eseguire l'app:
Per semplificare il passo di esecuzione, aggiungetemvn exec:java -D exec.mainClass=com.blobs.quickstart.App -D exec.cleanupDaemonThreads=falseexec-maven-pluginapom.xmle configuratelo come mostrato nel seguente codice:
Con questa configurazione, esegui l'app con il seguente comando:<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>mvn exec:java
L'output dell'app è simile all'esempio seguente (i valori UUID omessi per la leggibilità):
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
Prima di iniziare il processo di pulizia, controllare che nella cartella dati siano presenti due file. È possibile confrontarli e osservare che sono identici.
Pulire le risorse
Dopo aver verificato i file e aver completato il test, premere INVIO per eliminare i file di test insieme al contenitore creato nell'account di archiviazione. È anche possibile usare l'interfaccia della riga di comando di Azure per eliminare le risorse.
Al termine dell'avvio rapido, pulire le risorse create eseguendo il comando seguente:
azd down
Ricevi un prompt per confermare la cancellazione delle risorse. Immettere y per confermare.