Java en Gradle gebruiken om een functie te maken en te publiceren in Azure

In dit artikel leest u hoe u een Java-functieproject bouwt en publiceert naar Azure Functions met het opdrachtregelprogramma Gradle. Wanneer u klaar bent, wordt uw functiecode uitgevoerd in Azure in een serverloos hostingabonnement en wordt deze geactiveerd door een HTTP-aanvraag.

Notitie

Als Gradle niet uw voorkeur heeft voor het ontwikkelhulpprogramma, raadpleegt u onze vergelijkbare zelfstudies voor Java-ontwikkelaars die Gebruikmaken van Maven, IntelliJ IDEA en VS Code.

Vereisten

Als u functies wilt ontwikkelen met behulp van Java, moet het volgende zijn geïnstalleerd:

U hebt ook een actief Azure-abonnement nodig. Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Belangrijk

De omgevingsvariabele JAVA_HOME moet zijn ingesteld op de installatielocatie van de JDK om deze quickstart te kunnen voltooien.

Een Functions-project voorbereiden

Gebruik de volgende opdracht om het voorbeeldproject te klonen:

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

Open build.gradle en wijzig de appName in de volgende sectie in een unieke naam om te voorkomen dat domeinnaamconflicten optreden bij de implementatie 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"
}

Open het nieuwe Function.java-bestand vanuit het pad src/main/java in een teksteditor en controleer de gegenereerde code. Deze code is een door HTTP geactiveerde functie die de hoofdtekst van de aanvraag weergeeft.

De functie lokaal uitvoeren

Voer de volgende opdracht uit om vervolgens het functieproject te bouwen:

gradle jar --info
gradle azureFunctionsRun

U ziet uitvoer zoals de volgende van Azure Functions Core Tools wanneer u het project lokaal uitvoert:

...

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

Activeer de functie vanaf de opdrachtregel met behulp van de volgende cURL-opdracht in een nieuw terminalvenster:

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

De verwachte uitvoer is het volgende:

Hello, AzureFunctions

Notitie

Als u authLevel instelt op FUNCTION of ADMIN, is de functiesleutel niet vereist wanneer u lokaal wordt uitgevoerd.

Gebruik Ctrl+C in de terminal om de functiecode te stoppen.

De functie implementeren in Azure

Een functie-app en gerelateerde resources worden gemaakt in Azure wanneer u uw functie-app voor het eerst implementeert. Voordat u de implementeren kunt starten moet u de Azure CLI-opdracht az login gebruiken om u aan te melden bij uw Azure-abonnement.

az login

Tip

Als uw account toegang heeft tot meerdere abonnementen, gebruikt u az account set om het standaardabonnement voor deze sessie in te stellen.

Gebruik de volgende opdracht om uw project te implementeren in een nieuwe functie-app.

gradle azureFunctionsDeploy

Hiermee maakt u de volgende resources in Azure op basis van de waarden in het bestand build.gradle:

  • Resourcegroep. Benoemd met de resourceGroup die u hebt opgegeven.
  • Opslagaccount. Vereist door Funtions. De naam wordt willekeurig gegenereerd op basis van de vereisten van het opslagaccount.
  • App Service-plan. Serverloos verbruiksabonnement dat als host fungeert voor uw functie-app in de opgegeven regio. De naam wordt willekeurig gegenereerd.
  • Functie-app. Een functie-app is de implementatie- en uitvoeringseenheid voor uw functies. De naam is uw appName, toegevoegd met een willekeurig gegenereerd nummer.

De implementatie verpakt ook de projectbestanden en implementeert deze in de nieuwe functie-app met behulp van zip-implementatie, waarbij de modus Uitvoeren vanaf pakket is ingeschakeld.

Het authLevel voor HTTP-trigger in het voorbeeldproject is ANONYMOUS, waardoor de verificatie wordt overgeslagen. Als u echter andere authLevel gebruikt, moet FUNCTIONADMINu de functiesleutel ophalen om het functie-eindpunt aan te roepen via HTTP. De eenvoudigste manier om de functiesleutel op te halen, is via Azure Portal.

De HTTP-trigger-URL ophalen

U kunt de URL ophalen die is vereist voor het activeren van uw functie, met de functiesleutel, vanuit Azure Portal.

  1. Blader naar Azure Portal, meld u aan, typ de appName van uw functie-app in Zoeken boven aan de pagina en druk op Enter.

  2. Selecteer Functions in uw functie-app, kies uw functie en klik vervolgens rechtsboven op Functie-URL ophalen.

    Copy the function URL from the Azure portal

  3. Kies de standaardwaarde (functietoets) en selecteer Kopiëren.

U kunt nu de gekopieerde URL gebruiken om toegang te krijgen tot uw functie.

De functie controleren in Azure

Als u wilt controleren of de functie-app wordt uitgevoerd in Azure met behulp van cURL, vervangt u de URL uit het onderstaande voorbeeld door de URL die u hebt gekopieerd uit de portal.

curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions

Hiermee wordt een POST-aanvraag verzonden naar het functie-eindpunt met AzureFunctions in de hoofdtekst van de aanvraag. U ziet het volgende antwoord.

Hello, AzureFunctions

Volgende stappen

U hebt een Java-functieproject gemaakt met een met HTTP geactiveerde functie, deze uitgevoerd op de lokale computer en geïmplementeerd in Azure. Breid uw functie nu uit door...