Usare Java e Gradle per creare e pubblicare una funzione in Azure

Questo articolo illustra come compilare e pubblicare un progetto di funzione Java per 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 Gradle non è lo strumento di sviluppo preferito, 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:

È 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 della funzione 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.

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.

  1. 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.

  2. Nell'app per le funzioni selezionare Funzioni, scegliere la funzione e quindi fare clic su Recupera URL funzione in alto a destra.

    Copy the function URL from the Azure portal

  3. 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.