Usare Java e Gradle per creare e pubblicare una funzione in AzureUse Java and Gradle to create and publish a function to Azure

Questo articolo illustra come creare e pubblicare un progetto di funzione Java in funzioni di Azure con lo strumento da riga di comando Gradle.This article shows you how to build and publish a Java function project to Azure Functions with the Gradle command-line tool. Al termine, il codice della funzione viene eseguito in Azure in un piano di hosting serverless e viene attivato da una richiesta HTTP.When you're done, your function code runs in Azure in a serverless hosting plan and is triggered by an HTTP request.

Nota

Se Gradle non è lo strumento di sviluppo preferito, vedere le esercitazioni simili per gli sviluppatori Java che usano Maven, IntelliJ IDEA e vs code.If Gradle is not your prefered development tool, check out our similar tutorials for Java developers using Maven, IntelliJ IDEA and VS Code.

PrerequisitiPrerequisites

Per sviluppare funzioni con Java, è necessario che siano installati gli elementi seguenti:To develop functions using Java, you must have the following installed:

È anche necessaria una sottoscrizione di Azure attiva.You also need an active Azure subscription. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.If you don't have an Azure subscription, create a free account before you begin.

Importante

Per completare questa guida introduttiva, è necessario impostare la variabile di ambiente JAVA_HOME sul percorso di installazione di JDK.The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.

Preparare un progetto di funzioniPrepare a Functions project

Usare il comando seguente per clonare il progetto di esempio:Use the following command to clone the sample project:

git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/

Aprire build.gradle e modificare la appName sezione seguente in un nome univoco per evitare conflitti di nomi di dominio durante la distribuzione in Azure.Open build.gradle and change the appName in the following section to a unique name to avoid domain name conflict when deploying to 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.Open the new Function.java file from the src/main/java path in a text editor and review the generated code. Questo codice è una funzione attivata da HTTP che restituisce il corpo della richiesta.This code is an HTTP triggered function that echoes the body of the request.

Eseguire la funzione in localeRun the function locally

Eseguire il comando seguente per compilare ed eseguire il progetto di funzione:Run the following command to build then run the function project:

gradle jar --info
gradle azureFunctionsRun

Quando si esegue il progetto in locale, viene visualizzato un output di Azure Functions Core Tools simile al seguente:You see output like the following from Azure Functions Core Tools when you run the project locally:

...

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:Trigger the function from the command line using the following cURL command in a new terminal window:

curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions

L'output previsto è il seguente:The expected output is the following:

Hello, AzureFunctions

Nota

Se si imposta authLevel su FUNCTION o ADMIN , la chiave della funzione non è obbligatoria durante l'esecuzione in locale.If you set authLevel to FUNCTION or ADMIN, the function key isn't required when running locally.

Usare Ctrl+C nel terminal per interrompere il codice funzione.Use Ctrl+C in the terminal to stop the function code.

Distribuire la funzione in AzureDeploy the function to 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.A function app and related resources are created in Azure when you first deploy your function app. 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.Before you can deploy, use the az login Azure CLI command to sign in to your Azure subscription.

az login

Suggerimento

Se l'account può accedere a più sottoscrizioni, usare az account set per impostare quella predefinita per questa sessione.If your account can access multiple subscriptions, use az account set to set the default subscription for this session.

Usare il comando seguente per distribuire il progetto in una nuova app per le funzioni.Use the following command to deploy your project to a new function app.

gradle azureFunctionsDeploy

In questo esempio vengono create le risorse seguenti in Azure, in base ai valori nel file Build. gradle:This creates the following resources in Azure, based on the values in the build.gradle file:

  • Gruppo di risorse.Resource group. Con il nome resourceGroup specificato.Named with the resourceGroup you supplied.
  • Account di archiviazione.Storage account. Richiesto da Funzioni.Required by Functions. Il nome viene generato in modo casuale in base ai requisiti di denominazione degli account di archiviazione.The name is generated randomly based on Storage account name requirements.
  • Piano di servizio app.App Service plan. Piano a consumo senza server che ospita l'app per le funzioni nel appRegion specificato.Serverless Consumption plan hosting for your function app in the specified appRegion. Il nome viene generato in modo casuale.The name is generated randomly.
  • App per le funzioni.Function app. Un'app per le funzioni è l'unità di distribuzione ed esecuzione per le funzioni.A function app is the deployment and execution unit for your functions. Il nome è appName, con l'aggiunta finale di un numero generato in modo casuale.The name is your appName, appended with a randomly generated number.

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.The deployment also packages the project files and deploys them to the new function app using zip deployment, with run-from-package mode enabled.

Il trigger authLevel per HTTP nel progetto di esempio è ANONYMOUS , che ignorerà l'autenticazione.The authLevel for HTTP Trigger in sample project is ANONYMOUS, which will skip the authentication. Tuttavia, se si usano altri authLevel, ad esempio FUNCTION o ADMIN , è necessario ottenere il tasto funzione per chiamare l'endpoint della funzione su http.However, if you use other authLevel like FUNCTION or ADMIN, you need to get the function key to call the function endpoint over HTTP. Il modo più semplice per farlo è tramite il [portale di Azure].The easiest way to get the function key is from the Azure portal.

Ottenere l'URL del trigger HTTPGet the HTTP trigger URL

È possibile ottenere l'URL necessario per attivare la funzione, con la chiave della funzione, nel portale di Azure.You can get the URL required to trigger your function, with the function key, from the Azure portal.

  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.Browse to the Azure portal, sign in, type the appName of your function app into Search at the top of the page, and press enter.

  2. Nell'app per le funzioni selezionare funzioni, scegliere la funzione, quindi fare clic su </> ottenere l'URL della funzione in alto a destra.In your function app, select Functions, choose your function, then click </> Get Function Url at the top right.

    Creare l'URL della funzione dal portale di Azure

  3. Scegliere il valore predefinito (chiave della funzione) e selezionare Copia.Choose default (Function key) and select Copy.

È ora possibile usare l'URL copiato per accedere alla funzione.You can now use the copied URL to access your function.

Verificare la funzione in AzureVerify the function 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.To verify the function app running on Azure using cURL, replace the URL from the sample below with the URL that you copied from the portal.

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.This sends a POST request to the function endpoint with AzureFunctions in the body of the request. Verrà visualizzata la risposta seguente.You see the following response.

Hello, AzureFunctions

Passaggi successiviNext steps

È 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.You've created a Java functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. A questo punto, estendere la funzione effettuando l'operazione seguente.Now, extend your function by...