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:
- .NET 6.0 SDK
- Azure CLI version 2.4 eller senare
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:
- v4.x – Windows 64-bitars (rekommenderas. Felsökning av Visual Studio Code kräver 64-bitars.)
- v4.x – Windows 32-bitars
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.
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
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.
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
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:
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.
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 exempelhttp://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.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 func azure functionapp publish
i Azure är du nu redo att distribuera ditt lokala funktionsprojekt med hjälp av kommandot .
Kör det här func azure functionapp publish
kommandot i rotprojektmappen:
func azure functionapp publish <APP_NAME>
I det här exemplet ersätter du <APP_NAME>
med namnet på din app. En lyckad distribution 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.
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.