Skapa din första funktion på Azure Arc (förhandsversion)

I den här snabbstarten skapar du ett Azure Functions-projekt och distribuerar det till en funktionsapp som körs i ett Azure Arc-aktiverat Kubernetes-kluster. Mer information finns i App Service, Functions och Logic Apps i Azure Arc. Det här scenariot stöder endast funktionsappar som körs på Linux.

Kommentar

Stöd för att köra funktioner i ett Azure Arc-aktiverat Kubernetes-kluster finns för närvarande i förhandsversion.

Publicering av PowerShell-funktionsprojekt till Azure Arc-aktiverade Kubernetes-kluster stöds inte för närvarande. Om du behöver distribuera PowerShell-funktioner till Azure Arc-aktiverade Kubernetes-kluster skapar du funktionsappen i en container.

Om du behöver anpassa containern där funktionsappen körs kan du i stället läsa Skapa dina första containerbaserade funktioner i Azure Arc (förhandsversion).

Förutsättningar

På den lokala datorn:

Installera Azure Functions Core Tools

Det rekommenderade sättet att installera Core Tools beror på operativsystemet på din lokala utvecklingsdator.

Följande steg använder ett Windows-installationsprogram (MSI) för att installera Core Tools v4.x. Mer information om andra paketbaserade installationsprogram finns i Core Tools readme.

Ladda ned och kör installationsprogrammet för Core Tools baserat på din version av Windows:

Om du tidigare använde Windows-installationsprogrammet (MSI) för att installera Core Tools i Windows bör du avinstallera den gamla versionen från Lägg till Ta bort program innan du installerar den senaste versionen.

Skapa en App Service Kubernetes-miljö

Innan du börjar måste du skapa en App Service Kubernetes-miljö för ett Azure Arc-aktiverat Kubernetes-kluster.

Kommentar

När du skapar miljön bör du anteckna både det anpassade platsnamnet och namnet på den resursgrupp som innehåller den anpassade platsen. Du kan använda dessa för att hitta det anpassade plats-ID som du behöver när du skapar din funktionsapp i miljön.

Om du inte skapade miljön kontrollerar du med klusteradministratören.

Lägga till Azure CLI-tillägg

Starta Bash-miljön i Azure Cloud Shell.

Eftersom dessa CLI-kommandon ännu inte är en del av cli-kärnuppsättningen lägger du till dem med följande kommandon:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Skapa det lokala funktionsprojektet

I Azure Functions är ett funktionsprojekt enheten för distribution och körning för en eller flera enskilda funktioner som var och en svarar på en specifik utlösare. Alla funktioner i ett projekt delar samma lokala konfigurationer och värdkonfigurationer. I det här avsnittet skapar du ett funktionsprojekt som innehåller en enda funktion.

  1. func init Kör kommandot så här för att skapa ett funktionsprojekt i en mapp med namnet LocalFunctionProj med den angivna körningen:

    func init LocalFunctionProj --dotnet
    
  2. Navigera till projektmappen:

    cd LocalFunctionProj
    

    Den här mappen innehåller olika filer för projektet, inklusive konfigurationsfiler med namnet local.settings.json och host.json. Som standard undantas local.settings.json-filen från källkontrollen i .gitignore-filen. Det här undantaget beror på att filen kan innehålla hemligheter som laddas ned från Azure.

  3. Lägg till en funktion i projektet med hjälp av följande kommando, där --name argumentet är det unika namnet på din funktion (HttpExample) och --template argumentet anger funktionens utlösare (HTTP).

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

Kör funktionen lokalt

  1. Kör funktionen genom att starta den lokala Azure Functions-körningsvärden från mappen LocalFunctionProj .

    func start
    

    Mot slutet av utdata måste följande rader visas:

    Screenshot of terminal window output when running function locally.

    Kommentar

    Om HttpExample inte visas som ovan startade du förmodligen värden utanför rotmappen i projektet. I så fall använder du Ctrl+C för att stoppa värden, går till projektets rotmapp och kör föregående kommando igen.

  2. Kopiera URL:en för HTTP-funktionen från den här utdatan till en webbläsare och lägg till frågesträngen ?name=<YOUR_NAME>, vilket gör den fullständiga URL:en till exempel http://localhost:7071/api/HttpExample?name=Functions. Webbläsaren bör visa ett svarsmeddelande som upprepar frågesträngsvärdet. Terminalen där du startade projektet visar även loggutdata när du gör begäranden.

  3. När du är klar trycker du på Ctrl + C och skriver y för att stoppa funktionsvärden.

Hämta den anpassade platsen

För att kunna skapa en funktionsapp på en anpassad plats måste du få information om miljön.

Hämta följande information om den anpassade platsen från klusteradministratören (se Skapa en anpassad plats).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

Hämta det anpassade plats-ID:t för nästa steg.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Skapa Azure-resurser

Innan du kan distribuera funktionskoden till den nya App Service Kubernetes-miljön måste du skapa ytterligare två resurser:

  • Ett lagringskonto. Även om den här artikeln skapar ett lagringskonto kanske det i vissa fall inte krävs något lagringskonto. Mer information finns i Azure Arc-aktiverade kluster i artikeln om lagringsöverväganden.
  • En funktionsapp som tillhandahåller kontexten för att köra funktionskoden. Funktionsappen körs i App Service Kubernetes-miljön och mappar till ditt lokala funktionsprojekt. I en funktionsapp kan du gruppera funktioner som en logisk enhet så att det blir enklare att hantera, distribuera och dela resurser.

Kommentar

Funktionsappar körs i en App Service Kubernetes-miljö på en dedikerad plan (App Service). När du skapar din funktionsapp utan en befintlig plan skapas rätt plan åt dig.

Skapa lagringskonto

Använd kommandot az storage account create för att skapa ett allmänt lagringskonto i din resursgrupp och region:

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Kommentar

I vissa fall kanske inte ett lagringskonto krävs. Mer information finns i Azure Arc-aktiverade kluster i artikeln om lagringsöverväganden.

I föregående exempel ersätter du <STORAGE_NAME> med ett namn som är lämpligt för dig och unikt i Azure Storage. Namn får endast innehålla siffror med tre till 24 tecken och gemener. Standard_LRS anger ett konto för generell användning som stöds av Functions. Värdet --location är en Azure-standardregion.

Skapa funktionsappen

Kör kommandot az functionapp create för att skapa en ny funktionsapp i miljön.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

I det här exemplet ersätter <CUSTOM_LOCATION_ID> du med ID:t för den anpassade plats som du fastställde för App Service Kubernetes-miljön. Ersätt <STORAGE_NAME> också med namnet på det konto som du använde i föregående steg och ersätt <APP_NAME> med ett globalt unikt namn som passar dig.

Distribuera funktionsprojektet till Azure

När du har skapat funktionsappen i Azure är du nu redo att distribuera ditt lokala funktionsprojekt med hjälp av kommandot func azure functionapp publish .

I följande exempel ersätter du <APP_NAME> med namnet på din app.

func azure functionapp publish <APP_NAME>

Publiceringskommandot visar resultat som liknar följande utdata (trunkerade för enkelhetens skull):

...

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

Eftersom det kan ta lite tid för en fullständig distribution att slutföras i ett Azure Arc-aktiverat Kubernetes-kluster kanske du vill köra följande kommando igen för att verifiera dina publicerade funktioner:

func azure functionapp list-functions

Anropa funktionen i Azure

Eftersom funktionen använder en HTTP-utlösare anropar du den genom att göra en HTTP-begäran till dess URL i webbläsaren eller med ett verktyg som curl.

Kopiera den fullständiga Anropa URL:en som visas i utdata från publiceringskommandot till ett webbläsaradressfält och lägga till frågeparametern ?name=Functions. Webbläsaren bör visa liknande utdata som när du körde funktionen lokalt.

The output of the function run on Azure in a browser

Nästa steg

Nu när din funktionsapp körs i en container i en Azure Arc-aktiverad App Service Kubernetes-miljö kan du ansluta den till Azure Storage genom att lägga till en Queue Storage-utdatabindning.