Dela via


Distributionstekniker i Azure Functions

Du kan använda några olika tekniker för att distribuera din Azure Functions-projektkod till Azure. Den här artikeln innehåller en översikt över de distributionsmetoder som är tillgängliga för dig och rekommendationer för den bästa metoden att använda i olika scenarier. Den innehåller också en fullständig lista över och viktig information om de underliggande distributionsteknikerna.

Distributionsmetoder

Distributionstekniken som du använder för att publicera kod till din funktionsapp i Azure beror på dina specifika behov och poängen i utvecklingscykeln. Under utveckling och testning kan du till exempel distribuera direkt från ditt utvecklingsverktyg, till exempel Visual Studio Code. När din app är i produktion är det mer troligt att du publicerar kontinuerligt från källkontroll eller med hjälp av en automatiserad publiceringspipeline, som kan omfatta validering och testning.

I följande tabell beskrivs tillgängliga distributionsmetoder för kodprojektet.

Distributionstyp Metoder Bäst för...
Verktygsbaserad Publicera Visual Studio Code
Visual Studio publicera
Core Tools publicerar
Distributioner under utveckling och andra improviserade distributioner. Distribuera din kod på begäran med hjälp av lokala utvecklingsverktyg.
App Service-hanterad Distributionscenter (CI/CD)
Containerdistributioner
Kontinuerlig distribution (CI/CD) från källkontroll eller från ett containerregister. Distributioner hanteras av App Service-plattformen (Kudu).
Externa pipelines Azure Pipelines
GitHub Actions
Produktionspipelines som omfattar validering, testning och andra åtgärder som måste köras som en del av en automatiserad distribution. Distributioner hanteras av pipelinen.

Specifika distributioner bör använda den bästa tekniken baserat på det specifika scenariot. Många av distributionsmetoderna baseras på zip-distribution, vilket rekommenderas för distribution.

Tillgänglighet för distributionsteknik

Distributionsmetoden beror också på värdplanen och operativsystemet som du kör funktionsappen på.
För närvarande erbjuder Functions tre värdplaner:

Varje plan har olika beteenden. Alla distributionstekniker är inte tillgängliga för varje värdplan och operativsystem. Det här diagrammet innehåller information om de distributionstekniker som stöds:

Distributionsteknik Windows-förbrukning Windows Premium Windows Dedicated Linux-förbrukning Linux Premium Dedikerad Linux
Extern paket-URL1
Zip-distribution
Docker-container
Källkontroll
Lokal Git1
FTPS1
Redigeringi portalen 2

1 Distributionstekniker som kräver att du synkroniserar utlösare manuellt rekommenderas inte.
2 Redigering i portalen inaktiveras när kod distribueras till funktionsappen utanför portalen. Mer information, inklusive information om språkstöd för redigering i portalen, finns i Information om språkstöd.

Nyckelbegrepp

Vissa viktiga begrepp är viktiga för att förstå hur distributioner fungerar i Azure Functions.

Utlösarsynkronisering

När du ändrar någon av dina utlösare måste Functions-infrastrukturen vara medveten om ändringarna. Synkronisering sker automatiskt för många distributionstekniker. I vissa fall måste du dock synkronisera utlösarna manuellt.

Du måste synkronisera utlösare manuellt när du använder dessa distributionsalternativ:

Du kan synkronisera utlösare på något av tre sätt:

  • Starta om funktionsappen i Azure-portalen.
  • Skicka en HTTP POST-begäran till https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> med huvudnyckeln.
  • Skicka en HTTP POST-begäran till https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Ersätt platshållarna med ditt prenumerations-ID, resursgruppsnamn och namnet på funktionsappen. Den här begäran kräver en åtkomsttoken i begärandehuvudetAuthorization.

När du distribuerar en uppdaterad version av distributionspaketet och underhåller samma externa paket-URL måste du starta om funktionsappen manuellt. Detta anger för värden att den ska synkronisera och distribuera om dina uppdateringar från samma paket-URL. Functions-värden utför också en synkronisering av bakgrundsutlösare när programmet har startats. För värdplaner för förbrukning och Elastic Premium bör du dock även synkronisera utlösare manuellt i följande scenarier:

  • Distributioner med hjälp av en extern paket-URL med antingen ARM-mallar eller Terraform.
  • När du uppdaterar distributionspaketet på samma externa paket-URL.

Fjärrbygge

Azure Functions kan automatiskt utföra versioner av den kod som den tar emot efter zip-distributioner. Dessa versioner skiljer sig åt beroende på om din app körs i Windows eller Linux.

Alla funktionsappar som körs i Windows har en liten hanteringsapp, den scm webbplats som tillhandahålls av Kudu. Den här webbplatsen hanterar mycket av distributions- och bygglogik för Azure Functions.

När en app distribueras till Windows körs språkspecifika kommandon som dotnet restore (C#) eller npm install (JavaScript).

Följande överväganden gäller när du använder fjärrversioner under distributionen:

  • Fjärrversioner stöds för funktionsappar som körs på Linux i förbrukningsplanen. Distributionsalternativen är dock begränsade för dessa appar eftersom de inte har någon scm (Kudu) webbplats.
  • Funktionsappar som körs på Linux en Premium-plan eller i en dedikerad (App Service)-plan har en scm (Kudu)-webbplats, men den är begränsad jämfört med Windows.
  • Fjärrversioner utförs inte när en app använder run-from-package. Information om hur du använder fjärrbygge i dessa fall finns i Zip-distribution.
  • Du kan ha problem med fjärrbygge när din app skapades innan funktionen gjordes tillgänglig (1 augusti 2019). För äldre appar skapar du antingen en ny funktionsapp eller kör az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> för att uppdatera funktionsappen. Det här kommandot kan ta två försök att lyckas.

Lagring av appinnehåll

Flera distributionsmetoder lagrar den distribuerade eller byggda programnyttolasten på det lagringskonto som är associerat med funktionsappen. Functions försöker använda Azure Files-innehållsresursen när den konfigureras, men vissa metoder lagrar i stället nyttolasten i bloblagringsinstansen AzureWebJobsStorage som är associerad med anslutningen. Se informationen i avsnittet Var appinnehåll lagras i stycken för varje distributionsteknik som beskrivs i nästa avsnitt.

Viktigt!

Lagringskontot används för att lagra viktiga appdata, ibland inklusive själva programkoden. Du bör begränsa åtkomsten från andra appar och användare till lagringskontot.

Information om distributionsteknik

Följande distributionsmetoder är tillgängliga i Azure Functions.

Url för externt paket

Du kan använda en extern paket-URL för att referera till en fjärrpaketfil (.zip) som innehåller din funktionsapp. Filen laddas ned från den angivna URL:en och appen körs i läget Kör från paket .

Så här använder du det: Lägg till WEBSITE_RUN_FROM_PACKAGE i dina programinställningar. Värdet för den här inställningen ska vara en URL (platsen för den specifika paketfil som du vill köra). Du kan lägga till inställningar antingen i portalen eller med hjälp av Azure CLI.

Om du använder Azure Blob Storage använder du en privat container med en signatur för delad åtkomst (SAS) för att ge Functions åtkomst till paketet. Varje gång programmet startas om hämtar det en kopia av innehållet. Din referens måste vara giltig under programmets livslängd.

När du ska använda den: Extern paket-URL är den enda distributionsmetod som stöds för Azure Functions som körs på Linux i förbrukningsplanen, om användaren inte vill att en fjärrversion ska ske. När du distribuerar paketfilen som en funktionsapp refererar till måste du synkronisera utlösare manuellt, inklusive den inledande distributionen. När du ändrar innehållet i paketfilen och inte själva URL:en måste du även starta om funktionsappen för att synkronisera utlösare.

Var appinnehåll lagras: Appinnehåll lagras på den angivna URL:en. Detta kan finnas i Azure Blobs, eventuellt i det lagringskonto som anges av AzureWebJobsStorage anslutningen. Vissa klientverktyg kan som standard distribuera till en blob i det här kontot. För Linux-förbrukningsappar försöker Azure CLI till exempel distribuera via ett paket som lagras i en blob på det konto som anges av AzureWebJobsStorage.

Zip-distribution

Använd zip-distribution för att skicka en .zip fil som innehåller din funktionsapp till Azure. Du kan också ange att appen ska börja köras från paketet eller ange att en fjärrversion ska ske.

Så här använder du det: Distribuera med hjälp av ditt favoritklientverktyg: Visual Studio Code, Visual Studio eller från kommandoraden med hjälp av Azure Functions Core Tools. Som standard använder de här verktygen zip-distribution och kör från paket. Core Tools och Visual Studio Code-tillägget aktiverar både fjärrbygge vid distribution till Linux. Om du vill distribuera en .zip fil manuellt till funktionsappen följer du anvisningarna i Distribuera från en .zip fil eller URL.

När du distribuerar med zip-distribution kan du ange att appen ska köras från paketet. Om du vill köra från paketet anger du värdet för programinställningen WEBSITE_RUN_FROM_PACKAGE till 1. Vi rekommenderar zip-distribution. Det ger snabbare inläsningstider för dina program och är standard för VS Code, Visual Studio och Azure CLI.

När du ska använda den: Zip-distribution är den rekommenderade distributionstekniken för Azure Functions.

Där appinnehåll lagras: Appinnehåll från en zip-distribution lagras som standard i filsystemet, som kan säkerhetskopieras av Azure Files från det lagringskonto som angavs när funktionsappen skapades. I Linux-förbrukning sparas appinnehållet i stället på en blob i lagringskontot som anges av AzureWebJobsStorage anslutningen.

Docker-container

Du kan distribuera en funktionsapp som körs i en Linux-container.

Så här använder du den:Skapa dina funktioner i en Linux-container och distribuera sedan containern till en Premium- eller Dedikerad plan i Azure Functions eller en annan containervärd. Använd Azure Functions Core Tools för att skapa en anpassad Dockerfile för ditt projekt som du använder för att skapa en containerbaserad funktionsapp. Du kan använda containern i följande distributioner:

När du ska använda den: Använd alternativet Docker-container när du behöver mer kontroll över Linux-miljön där funktionsappen körs och var containern finns. Den här distributionsmekanismen är endast tillgänglig för funktioner som körs i Linux.

Där appinnehåll lagras: Appinnehåll lagras i det angivna containerregistret som en del av avbildningen.

Källkontroll

Du kan aktivera kontinuerlig integrering mellan din funktionsapp och en källkodslagringsplats. När källkontrollen är aktiverad utlöser en uppdatering av kod i den anslutna källlagringsplatsen distributionen av den senaste koden från lagringsplatsen. Mer information finns i Kontinuerlig distribution för Azure Functions.

Så här använder du det: Det enklaste sättet att konfigurera publicering från källkontroll är från Distributionscenter i området Funktioner i portalen. Mer information finns i Kontinuerlig distribution för Azure Functions.

När du ska använda den: Att använda källkontroll är bästa praxis för team som samarbetar i sina funktionsappar. Källkontroll är ett bra distributionsalternativ som möjliggör mer avancerade distributionspipelines. Källkontrollen är vanligtvis aktiverad på en mellanlagringsplats, som kan växlas till produktion efter validering av uppdateringar från lagringsplatsen. Mer information finns i Distributionsfack för Azure Functions.

Var appinnehåll lagras: Appinnehållet finns i källkontrollsystemet, men ett lokalt klonat och byggt appinnehåll från lagras i appfilsystemet, som kan backas upp av Azure Files från lagringskontot som angavs när funktionsappen skapades.

Lokal Git

Du kan använda lokal Git för att skicka kod från din lokala dator till Azure Functions med hjälp av Git.

Så här använder du den: Följ anvisningarna i Lokal Git-distribution till Azure App Service.

När du ska använda det: För att minska risken för fel bör du undvika att använda distributionsmetoder som kräver ytterligare steg för att synkronisera utlösare manuellt. Använd zip-distribution när det är möjligt.

Där appinnehåll lagras: Appinnehåll lagras i filsystemet, som kan säkerhetskopieras av Azure Files från det lagringskonto som angavs när funktionsappen skapades.

FTP/S

Du kan använda FTP/S för att direkt överföra filer till Azure Functions, men den här distributionsmetoden rekommenderas inte. När du inte planerar att använda FTP bör du inaktivera det. Om du väljer att använda FTP bör du framtvinga FTPS. Mer information om hur du använder Azure-portalen finns i Framtvinga FTPS.

Så här använder du den: Följ anvisningarna i FTPS-distributionsinställningarna för att hämta den URL och de autentiseringsuppgifter som du kan använda för att distribuera till funktionsappen med FTPS.

När du ska använda det: För att minska risken för fel bör du undvika att använda distributionsmetoder som kräver ytterligare steg för att synkronisera utlösare manuellt. Använd zip-distribution när det är möjligt.

Där appinnehåll lagras: Appinnehåll lagras i filsystemet, som kan säkerhetskopieras av Azure Files från det lagringskonto som angavs när funktionsappen skapades.

Portalredigering

I den portalbaserade redigeraren kan du direkt redigera de filer som finns i funktionsappen (i princip distribuera varje gång du sparar ändringarna).

Så här använder du den: För att kunna redigera dina funktioner i Azure-portalen måste du ha skapat dina funktioner i portalen. Om du vill bevara en enda sanningskälla gör du funktionen skrivskyddad med någon annan distributionsmetod och förhindrar fortsatt portalredigering. Om du vill återgå till ett tillstånd där du kan redigera dina filer i Azure-portalen kan du manuellt återställa redigeringsläget till Read/Write och ta bort eventuella distributionsrelaterade programinställningar (till exempel WEBSITE_RUN_FROM_PACKAGE).

När du ska använda den: Portalen är ett bra sätt att komma igång med Azure Functions. För mer avancerat utvecklingsarbete rekommenderar vi att du använder något av följande klientverktyg:

Där appinnehåll lagras: Appinnehåll lagras i filsystemet, som kan säkerhetskopieras av Azure Files från det lagringskonto som angavs när funktionsappen skapades.

I följande tabell visas de operativsystem och språk som stöder redigering i portalen:

Språk Windows-förbrukning Windows Premium Windows Dedicated Linux-förbrukning Linux Premium Dedikerad Linux
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 Redigering i portalen stöds endast för C#-skriptfiler som körs i processen med värden. Mer information finns i utvecklarreferensen för Azure Functions C#-skript (.csx).
2 Redigering i portalen stöds endast för python-programmeringsmodellen v1.

Distributionsbeteenden

När du distribuerar uppdateringar av funktionsappens kod avslutas de funktioner som körs för närvarande. När distributionen är klar läses den nya koden in för att börja bearbeta begäranden. Läs Förbättra prestanda och tillförlitlighet för Azure Functions för att lära dig hur du skriver tillståndslösa och defensiva funktioner.

Om du behöver mer kontroll över den här övergången bör du använda distributionsfack.

Distributionsfack

När du distribuerar din funktionsapp till Azure kan du distribuera till ett separat distributionsfack i stället för direkt till produktion. Att distribuera till ett distributionsfack och sedan växla till produktion efter verifiering är det rekommenderade sättet att konfigurera kontinuerlig distribution.

Hur du distribuerar till ett fack beror på vilket distributionsverktyg du använder. När du till exempel använder Azure Functions Core Tools inkluderar--slot du alternativet för att ange namnet på ett specifikt fack för func azure functionapp publish kommandot.

Mer information om distributionsplatser finns i dokumentationen för Distributionsfack för Azure Functions för mer information.

Nästa steg

Läs de här artiklarna om du vill veta mer om hur du distribuerar dina funktionsappar: