Usare Java e Gradle per creare e pubblicare una funzione in Azure
Questo articolo illustra come creare e pubblicare un progetto della funzione Java in Funzioni di Azure con lo strumento da riga di comando Gradle. Al termine, il codice della funzione viene eseguito in Azure in un piano di hosting serverless e viene attivato da una richiesta HTTP.
Nota
Se si preferisce non usare Gradle come strumento di sviluppo, vedere le esercitazioni simili per sviluppatori Java che usano Maven, IntelliJ IDEA e VS Code.
Prerequisiti
Per sviluppare funzioni con Java, è necessario che siano installati gli elementi seguenti:
- Java Developer Kit, versione 8, 11, 17 o 21. Java 21 è attualmente supportato in anteprima solo in Linux.
- Interfaccia della riga di comando di Azure
- Azure Functions Core Tools versione 2.6.666 o successive
- Gradle versione 6.8 e successive
È anche necessaria una sottoscrizione di Azure attiva. Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Importante
Per completare questa guida introduttiva, è necessario impostare la variabile di ambiente JAVA_HOME sul percorso di installazione di JDK.
Preparare un progetto di Funzioni
Usare il comando seguente per clonare il progetto di esempio:
git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/
Aprire build.gradle
e nella sezione seguente impostare appName
su un nome univoco per evitare conflitti di nomi di dominio durante la distribuzione in Azure.
azurefunctions {
resourceGroup = 'java-functions-group'
appName = 'azure-functions-sample-demo'
pricingTier = 'Consumption'
region = 'westus'
runtime {
os = 'windows'
}
localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}
Aprire il nuovo file Function.java dal percorso src/main/java in un editor di testo e rivedere il codice generato. Questo codice è una funzione attivata da HTTP che restituisce il corpo della richiesta.
Eseguire la funzione in locale
Eseguire il comando seguente per creare e quindi eseguire il progetto di funzione:
gradle jar --info
gradle azureFunctionsRun
Quando si esegue il progetto in locale, viene visualizzato un output di Azure Functions Core Tools simile al seguente:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
Attivare la funzione dalla riga di comando usando il comando cURL seguente in una nuova finestra del terminale:
curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions
L'output previsto è il seguente:
Hello, AzureFunctions
Nota
Se si imposta authLevel su FUNCTION
o ADMIN
, la chiave di accesso non è necessaria durante l'esecuzione in locale.
Usare Ctrl+C
nel terminal per interrompere il codice funzione.
Distribuire la funzione in Azure
La prima volta che si distribuisce la nuova app per le funzioni, in Azure vengono create un'app per le funzioni e le risorse correlate. Prima di procedere alla distribuzione, è necessario usare il comando az login dell'interfaccia della riga di comando di Azure per accedere alla sottoscrizione di Azure.
az login
Suggerimento
Se l'account può accedere a più sottoscrizioni, usare az account set per impostare quella predefinita per questa sessione.
Usare il comando seguente per distribuire il progetto in una nuova app per le funzioni.
gradle azureFunctionsDeploy
In questo modo vengono create le risorse seguenti in Azure, in base ai valori nel file build.gradle:
- Gruppo di risorse. Con il nome resourceGroup specificato.
- Account di archiviazione. Richiesto da Funzioni. Il nome viene generato in modo casuale in base ai requisiti di denominazione degli account di archiviazione.
- Piano di servizio app. Hosting del piano a consumo serverless per l'app per le funzioni nell'area specificata. Il nome viene generato in modo casuale.
- App per le funzioni. Un'app per le funzioni è l'unità di distribuzione ed esecuzione per le funzioni. Il nome è appName, con l'aggiunta finale di un numero generato in modo casuale.
La distribuzione inserisce inoltre i file di progetto in un pacchetto e li distribuisce nella nuova app per le funzioni tramite ZipDeploy, con la modalità run-from-package abilitata.
L’authLevel per il trigger HTTP nel progetto di esempio è ANONYMOUS
, che ignorerà l'autenticazione. Tuttavia, se si usa un altro authLevel come FUNCTION
o ADMIN
, è necessario ottenere la chiave di funzione per chiamare l'endpoint della funzione su HTTP. Il modo più semplice per farlo è tramite il portale di Azure.
Ottenere l'URL del trigger HTTP
È possibile ottenere l'URL necessario per attivare la funzione, con la chiave della funzione, nel portale di Azure.
Passare al portale di Azure, accedere, digitare il nome appName dell'app per le funzioni nella casella Cerca nella parte superiore della pagina, quindi premere INVIO.
Nell'app per le funzioni selezionare Funzioni, scegliere la funzione e quindi fare clic su Recupera URL funzione in alto a destra.
Scegliere il valore predefinito (chiave della funzione) e selezionare Copia.
È ora possibile usare l'URL copiato per accedere alla funzione.
Verificare la funzione in Azure
Per verificare l'app per le funzioni in esecuzione in Azure tramite cURL
, sostituire l'URL dell'esempio seguente con l'URL copiato dal portale.
curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions
Viene inviata una richiesta POST all'endpoint della funzione con AzureFunctions
nel corpo. Verrà visualizzata la risposta seguente.
Hello, AzureFunctions
Passaggi successivi
È stato creato un progetto di funzioni Java con una funzione attivata tramite HTTP. Il progetto è stato quindi eseguito in un computer locale e distribuito in Azure. A questo punto, estendere la funzione effettuando l'operazione seguente.