Quickstart: Een C#-functie maken in Azure vanaf de opdrachtregel

In dit artikel gebruikt u opdrachtregelprogramma's om een C#-functie te maken die reageert op HTTP-aanvragen. Nadat u de code lokaal hebt getest, implementeert u deze in de serverloze omgeving van Azure Functions.

In dit artikel wordt een door HTTP geactiveerde functie gemaakt die wordt uitgevoerd op .NET 8 in een geïsoleerd werkproces. Zie Ondersteunde versies voor meer informatie over .NET-versies die worden ondersteund voor C#-functies. Er is ook een visual Studio Code-versie van dit artikel.

Voor het voltooien van deze quickstart worden kosten van een paar dollarcent of minder in rekening gebracht bij uw Azure-account.

Uw lokale omgeving configureren

Voordat u begint, moet u het volgende hebben:

U hebt ook een Azure-account met een actief abonnement nodig. Gratis een account maken

Azure Functions Core Tools installeren

De aanbevolen manier om Core Tools te installeren, is afhankelijk van het besturingssysteem van uw lokale ontwikkelcomputer.

In de volgende stappen wordt een Windows Installer (MSI) gebruikt om Core Tools v4.x te installeren. Zie de leesmij voor Core Tools voor meer informatie over andere installatieprogramma's op basis van pakketten.

Download en voer het Core Tools-installatieprogramma uit op basis van uw versie van Windows:

Als u eerder Windows Installer (MSI) hebt gebruikt om Core Tools in Windows te installeren, moet u de oude versie verwijderen uit Programma's toevoegen voordat u de nieuwste versie installeert.

Een lokaal functieproject maken

In Azure Functions is een functieproject een container voor een of meer afzonderlijke functies die elk op een bepaalde trigger reageren. Alle functies in een project delen dezelfde lokale configuratie en hostingconfiguratie. In deze sectie maakt u een functieproject dat één functie bevat.

  1. Voer de opdracht func init als volgt uit om een functieproject te maken in een map met de naam LocalFunctionProj met de opgegeven runtime:

    func init LocalFunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
    
  2. Navigeer naar de projectmap:

    cd LocalFunctionProj
    

    Deze map bevat verschillende bestanden voor het project,waaronder configuratiebestanden met de naam local.settings.json en host.json. Omdat local.settings.json geheimen kan bevatten die zijn gedownload vanuit Azure, wordt het bestand standaard uitgesloten van broncodebeheer in het bestand .gitignore.

  3. Voeg een functie toe aan uw project met behulp van de volgende opdracht, waarbij het argument --name de unieke naam van de functie is (HttpExample) en het argument --template de trigger van de functie (HTTP).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    func new maakt een HttpExample.cs-codebestand.

(Optioneel) De inhoud van het bestand bekijken

Desgewenst kunt u doorgaan naar De functie lokaal uitvoeren en de inhoud van het bestand later bekijken.

HttpExample.cs

HttpExample.cs bevat een Run methode die aanvraaggegevens in de req variabele ontvangt als een HttpRequest-object. Deze parameter is ingericht met httpTriggerAttribute om het triggergedrag te definiëren.

using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

namespace Company.Function
{
    public class HttpExample
    {
        private readonly ILogger<HttpExample> _logger;

        public HttpExample(ILogger<HttpExample> logger)
        {
            _logger = logger;
        }

        [Function("HttpExample")]
        public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
        {            
            _logger.LogInformation("C# HTTP trigger function processed a request.");

            return new OkObjectResult("Welcome to Azure Functions!");
        }
    }
}

Het retourobject is een IActionResult-object dat de gegevens bevat die worden teruggestuurd naar het HTTP-antwoord.

Zie Azure Functions HTTP-triggers en -bindingen voor meer informatie.

De functie lokaal uitvoeren

  1. Voer uw functie uit door de lokale Azure Functions runtime host te starten vanuit de map LocalFunctionProj:

    func start
    

    Naar het einde van de uitvoer moeten de volgende regels worden weergegeven:

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

    Notitie

    Als HttpExample niet verschijnt zoals hierboven weergegeven, hebt u waarschijnlijk de host gestart van buiten de hoofdmap van het project. In dat geval gebruikt u Ctrl+C om de host te stoppen, gaat u naar de hoofdmap van het project en voert u de vorige opdracht opnieuw uit.

  2. Kopieer de URL van uw HttpExample functie vanuit deze uitvoer naar een browser en blader naar de functie-URL en ontvang een welkomstbericht over Azure Functions .

  3. Wanneer u klaar bent, gebruikt u Ctrl+C en kiest u y om de functiehost te stoppen.

Ondersteunende Azure-resources maken voor uw functie

Voordat u uw functiecode kunt implementeren in Azure, moet u drie resources maken:

  • Een resourcegroep, een logische container voor gerelateerde resources.
  • Een opslagaccount dat wordt gebruikt voor het onderhouden van de status en andere informatie over uw functies.
  • Een functie-app, die de omgeving biedt voor het uitvoeren van uw functiecode. Een functie-app wordt gekoppeld aan uw lokale functieproject en maakt het mogelijk om functies te groeperen als een logische eenheid, zodat u resources eenvoudiger kunt beheren, implementeren en delen.

Gebruik de volgende opdrachten om deze items te maken. Zowel Azure CLI als PowerShell worden ondersteund.

  1. Als u dit nog niet hebt gedaan, meldt u zich aan bij Azure:

    az login
    

    Met de opdracht az login meldt u zich aan bij uw Azure-account.

  2. Maak een resourcegroep met de naam AzureFunctionsQuickstart-rg in uw gekozen regio:

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    Met de opdracht az group create maakt u een resourcegroep. Vervang in de bovenstaande opdracht door <REGION> een regio bij u in de buurt met behulp van een beschikbare regiocode die wordt geretourneerd met de opdracht az account list-locations .

  3. Maak een algemeen opslagaccount in de resourcegroep en regio:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
    

    Met de opdracht az storage account create maakt u het opslagaccount.

    Vervang <STORAGE_NAME> in het vorige voorbeeld door een naam die voor u passend is en die uniek is in Azure Storage. Namen mogen drie tot 24 tekens bevatten en u mag alleen kleine letters gebruiken. Met Standard_LRS geeft u een account voor algemeen gebruik op dat wordt ondersteund door Functions.

Belangrijk

Het opslagaccount wordt gebruikt voor het opslaan van belangrijke app-gegevens, soms inclusief de toepassingscode zelf. U moet de toegang van andere apps en gebruikers tot het opslagaccount beperken.

  1. De functie-app maken in Azure:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    Maak de functie-app in Azure met behulp van de opdracht az functionapp create.

    Vervang in het vorige voorbeeld <STORAGE_NAME> door de naam van het account dat u in de vorige stap hebt gebruikt en vervang <APP_NAME> door een unieke naam die voor u van betekenis is. De <APP_NAME> is ook het standaard DNS-domein voor de functie-app.

    Met deze opdracht maakt u een functie-app die wordt uitgevoerd in de runtime van uw opgegeven taal binnen het Azure Functions-verbruiksplan. Dit is gratis voor het gebruik dat u hier maakt. Met de opdracht maakt u ook een gekoppeld Azure-toepassing Insights-exemplaar in dezelfde resourcegroep, waarmee u uw functie-app kunt bewaken en logboeken kunt bekijken. Zie Monitor Azure Functions (Azure Functions bewaken) voor meer informatie. Er worden pas kosten in rekening gebracht voor de instantie als u deze activeert.

Het functieproject implementeren in Azure

Nadat u uw functie-app in Azure hebt gemaakt, kunt u nu uw lokale functieproject implementeren met behulp van de opdracht func azure functionapp publish.

Vervang <APP_NAME> in het volgende voorbeeld door de naam van uw app.

func azure functionapp publish <APP_NAME>

Met de publicatieopdracht worden de resultaten weergegeven die vergelijkbaar zijn met de volgende uitvoer (afgekapt voor de leesbaarheid):

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

De functie aanroepen in Azure

Omdat uw functie gebruikmaakt van een HTTP-trigger en GET-aanvragen ondersteunt, roept u deze aan door een HTTP-aanvraag naar de URL te verzenden. U kunt dit het eenvoudigst doen in een browser.

Kopieer de volledige aanroep-URL die wordt weergegeven in de uitvoer van de opdracht Publiceren in een adresbalk van de browser. Wanneer u naar deze URL navigeert, moet de browser vergelijkbare uitvoer weergeven als toen u de functie lokaal uitvoerde.


Voer de volgende opdracht uit om bijna in realtime stroomlogboeken weer te geven:

func azure functionapp logstream <APP_NAME> 

Roep in een afzonderlijk terminalvenster of in de browser opnieuw de externe functie aan. In de terminal wordt een uitgebreid logboek weergegeven van de uitvoering van de functie in Azure.

Resources opschonen

Als u verdergaat met de volgende stap en een uitvoerbinding voor een Azure Storage-wachtrij toevoegt, kunt u alle resources het beste op dezelfde plaats laten staan. U gaat ze namelijk gebruiken in deze stap.

Gebruik anders de volgende opdracht om de resourcegroep en alle bijbehorende resources te verwijderen om te voorkomen dat er verdere kosten in rekening worden gebracht.

az group delete --name AzureFunctionsQuickstart-rg

Volgende stappen