Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan använda flera olika tekniker för att distribuera din Azure Functions projektkod för att 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 omfattande lista med och viktig information om de underliggande distributionsteknikerna.
Distributionsmetoder
Distributionstekniken som du använder för att publicera kod till funktionsappen i Azure beror på dina specifika behov och punkten 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 | • Azure CLI • Visual Studio Code publicera • Visual Studio publicera • Utgivning av Core Tools |
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) • Containerutplaceringar |
Kontinuerlig distribution (CI/CD) från källkontroll eller från ett containerregister. App Service-plattformen (Kudu) hanterar distributioner. |
| Externa pipelines | • Azure-pipelines • GitHub Actions |
Produktionspipelines som omfattar validering, testning och andra åtgärder som behöver köras som en del av ett automatiserat distributionsflöde. Pipelinen hanterar distributioner. |
Använd den bästa tekniken för ditt specifika scenario. 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 fem alternativ för att vara värd för dina funktionsappar:
- Flexibel förbrukningsplan
- Elastic Premium-plan
- Dedikerad plan (App Service)
- Azure Container Apps
- Förbrukningsplan (äldre)
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 | Flex-förbrukning | Förbrukning | Elastic Premium | Dedikerad | Containerapplikationer |
|---|---|---|---|---|---|
| En driftsättning | ✔ | ||||
| Zip-distribution | ✔ | ✔ | ✔ | ||
| Extern URL för paket1 | ✔ | ✔ | ✔ | ||
| Docker-container | Endast Linux | Endast Linux | Endast Linux | ✔ | |
| Källkontroll | endast Windows | ✔ | ✔ | ||
| Lokal Git1 | endast Windows | ✔ | ✔ | ||
| FTPS1 | endast Windows | ✔ | ✔ | ||
| 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 alltid synkronisera utlösare manuellt när du använder följande distributionsalternativ:
Du kan synkronisera utlösare manuellt på något av följande sätt:
Starta om funktionsappen i Azure-portalen. Functions-värden utför en synkronisering av bakgrundsutlösare när programmet startas.
az restAnvänd kommandot för att skicka en HTTP POST-begäran som anropar API:etsyncfunctiontriggers, som i det här exemplet:az rest --method post --url https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Web/sites/<APP_NAME>/syncfunctiontriggers?api-version=2016-08-01
Tänk på följande när det gäller åtgärden för synkroniseringsutlösare:
- Du måste starta om funktionsappen manuellt när du distribuerar en uppdaterad version av distributionspaketet med hjälp av samma externa paket-URL.
- För appar som körs i en förbruknings- eller Elastic Premium-plan måste du även synkronisera utlösare manuellt i följande scenarier:
- När distributioner använder en extern paket-URL med en resource manager-baserad distribution med hjälp av ARM-mallar eller Bicep- eller Terraform-filer.
- När du uppdaterar distributionspaketet på plats genom att använda samma externa paket-URL.
- När du lägger till nätverksbegränsningar i en befintlig funktionsapp måste du garantera anslutningen till standardinställningen för värdlagringskontot i appinställningen
AzureWebJobsStorage. Mer information finns i Så här använder du ett skyddat lagringskonto med Azure Functions.
Fjärrbygge
Du kan begära Azure Functions att utföra en fjärrversion av kodprojektet under distributionen. I dessa scenarier begär du en fjärrversion i stället för att bygga lokalt:
- Du distribuerar en app till en Linux-baserad funktionsapp som du har utvecklat på en Windows dator. Den här situationen är ofta fallet för Python apputveckling. Du kan få felaktiga bibliotek när du skapar distributionspaketet lokalt på Windows.
- Projektet har beroenden för ett anpassat paketindex.
- Du vill minska storleken på distributionspaketet.
Hur du begär en fjärrversion beror på om din app körs i Azure på Windows eller Linux.
Alla funktionsappar som körs på Windows har en liten hanteringsapp, webbplatsen scm som tillhandahålls av Kudu. Den här webbplatsen hanterar mycket av distributions- och bygglogik för Azure Functions.
När du distribuerar en app till Windows kör distributionsprocessen språkspecifika kommandon, till exempel 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 i en Premium plan eller i en Dedicated (App Service) plan har en
scm(Kudu) webbplats, men den är begränsad jämfört med Windows. - Fjärrversioner sker 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
Paketbaserade distributionsmetoder lagrar paketet i lagringskontot som är associerat med funktionsappen, som inställningen AzureWebJobsStorage definierar. När det är tillgängligt försöker appar med Förbruknings- och Elastic Premium-abonnemang använda innehållsdelning i Azure Files från det här kontots konto, men du kan också bibehålla paketet på en annan plats. Flex Consumption Plan-appar använder en lagringscontainer i standardlagringskontot, såvida du inte konfigurerar ett annat lagringskonto som ska användas för distribution. Mer information finns i Artikeln om var appinnehåll lagras i 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.
Skyddade virtuella nätverk
När din funktionsapp har privata slutpunkter aktiverade och åtkomsten till det offentliga nätverket är inaktiverad kan scm distributionsplatsen (Kudu) inte nås offentligt. När lagringskontot som används av funktionsappen också skyddas bakom privata slutpunkter blockeras tekniker som måste komma åt lagring på samma sätt. På grund av dessa begränsningar kan de distributionstekniker som beskrivs i den här artikeln inte nå en helt nätverksskyddad funktionsapp utanför det virtuella nätverket.
Om du vill distribuera kod till en nätverksskyddad funktionsapp måste distributionsverktygen ha anslutning till det virtuella nätverket. Du kan uppnå den här anslutningen på följande sätt:
- Om du distribuerar från en Azure Pipeline använder du en baserad agent med åtkomst till ditt virtuella nätverk eller konfigurerar en hanterad DevOps-agentpool med nätverk.
- Om du distribuerar från ett GitHub-arbetsflöde använder du en självhostad löpare med åtkomst till ditt virtuella nätverk eller konfigurerar en GitHub-hostad löpare i ditt Azure-virtuella nätverk.
- Anslut utvecklingsdatorn till det virtuella nätverket med hjälp av ett punkt-till-plats-VPN eller ExpressRoute.
Mer information om hur du konfigurerar funktionsappen i ett virtuellt nätverk finns i Så här konfigurerar du Azure Functions med ett virtuellt nätverk.
Detaljer om distributionsteknik
Följande distributionsmetoder är tillgängliga i Azure Functions. Information om vilka tekniker som varje värdplan stöder finns i tillgänglighetstabellen för distributionsteknik .
En distribution
En distribution är den enda distributionsteknik som stöds för appar i en Flex Consumption-plan. Slutresultatet är ett färdigt .zip paket som funktionsappen körs på.
Så här använder du den: Distribuera med hjälp av publiceringsfunktionen Visual Studio Code eller från kommandoraden med hjälp av Azure Functions Core Tools eller Azure CLI. Vår Azure Dev Ops Task och GitHub Action utnyttjar på liknande sätt en enda distribution när de upptäcker att en Flex Consumption-app håller på att distribueras.
När du skapar en Flex Consumption-app måste du ange en container för distributionslagring (blob) samt en autentiseringsmetod för den. Som standard används samma lagringskonto som
AzureWebJobsStorage-anslutningen, med en reťazec pripojenia som autentiseringsmetod. Därför konfigureras dina distributionsinställningar under appskapandetiden utan behov av programinställningar.
När du ska använda den: En distribution är den enda distributionsteknik som är tillgänglig för funktionsappar som körs i en Flex Consumption-plan.
Var appinnehåll lagras: När du skapar en Flex Consumption-funktionsapp anger du en distributionslagringscontainer. Den här blobcontainern är den plats där dina verktyg laddar upp appinnehållet som du distribuerade. Om du vill ändra platsen kan du gå till bladet Distributionsinställningar i Azure-portalen eller använda Azure CLI.
Tips/Råd
Det finns ett Flex Consumption Deployment diagnostikverktyg i Azure portalen. Öppna din Flex Consumption-app, välj Diagnostisera och lösa problem och sök Flex Consumption Deploymentefter . Det här verktyget visar detaljerad information om dina distributioner, inklusive distributionshistorik, paketstatus och felsökningsrekommendationer.
Zip-distribution
Zip-distribution är standard och rekommenderad distributionsteknik för funktionsappar i abonnemangen Förbrukning, Elastic Premium och App Service (Dedikerad). Slutresultatet är ett färdigt .zip paket som funktionsappen körs på. Den skiljer sig från den externa paket-URL:en eftersom plattformen ansvarar för fjärrbyggande och lagring av appinnehåll.
Så här använder du det: Distribuera med hjälp av ditt favoritklientverktyg: Visual Studio Code, Visual Studio eller från kommandoraden med Azure Functions Core Tools eller Azure CLI. Vår Azure Dev Ops Task och GitHub Action utnyttjar på samma sätt zip-distribution.
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_PACKAGEtill1. 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 använder det: Zip-distribution är standard och rekommenderad distributionsteknik för funktionsappar på Windows Consumption, Windows och Linux Elastic Premium samt Windows- och Linux App Service-planer (dedikerade).
Var appinnehåll lagras: Appinnehåll från en zip-distribution lagras som standard i filsystemet, vilket Azure kan stödja med Azure Files från det lagringskonto som du anger när du skapar funktionsappen. I Linux-förbrukning sparas appinnehållet i stället på en blob i lagringskontot som anges av appinställningen
AzureWebJobsStorage, och appinställningenWEBSITE_RUN_FROM_PACKAGEfår värdet för blob-URL:en.
Url för externt paket
Extern paket-URL är ett alternativ om du vill styra hur distributioner utförs manuellt. Du tar ansvar för att ladda upp ett färdigt .zip paket som innehåller ditt byggda appinnehåll till bloblagring och refererar till den här externa URL:en som en programinställning i funktionsappen. När din app startas om hämtar den paketet, monterar det och körs i läget Kör från paket .
Så här använder du det: Lägg till
WEBSITE_RUN_FROM_PACKAGEi dina programinställningar. Värdet för den här inställningen ska vara en blob-URL som pekar på platsen för det specifika paket som du vill att appen ska köra. Du kan lägga till inställningar antingen i portalen eller av med hjälp av Azure CLI.Om du använder Azure Blob Storage kan funktionsappen komma åt containern antingen med hjälp av en hanterad identitetsbaserad anslutning eller med en delade åtkomstsignatur (SAS). Det alternativ du väljer påverkar vilken typ av URL du använder som värde för
WEBSITE_RUN_FROM_PACKAGE. Hanterad identitet rekommenderas för övergripande säkerhet och eftersom SAS-token upphör att gälla och måste underhållas manuellt.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. Se vår guide om hur du konfigurerar den här distributionstekniken.
När du ska använda den: Extern paket-URL är den enda distributionsmetod som stöds för appar som körs i Linux-förbrukningsplanen när du inte vill att en fjärrversion ska ske. Den här metoden är också den rekommenderade distributionstekniken när du skapa din app utan Azure Files. För skalbara appar som körs på Linux bör du i stället överväga Flex Consumption plan för hosting.
Var appinnehåll lagras: Du ansvarar för att ladda upp appinnehållet till Blob Storage. Du kan använda valfritt bloblagringskonto, men Azure Blob Storage rekommenderas.
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 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:
- Distribuera till de Azure Functions-resurser som du skapar i Azure-portalen. Mer information finns i Azure portal create using containers.
- Distribuera till de resurser för Azure Functions som du skapar från kommandoraden. Kräver antingen en Premium- eller Dedikerad (App Service)-plan. Mer information finns i Skapa din första containerbaserade Azure Functions.
- Distribuera till Azure Container Apps. Mer information finns i Skapa din första containerbaserade Azure Functions på Azure Container Apps.
- Distribuera till ett Kubernetes-kluster. Du kan distribuera till ett kluster med hjälp av Azure Functions Core Tools. Använd kommandot
func kubernetes deploy.
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.
Var appinnehåll lagras: Du lagrar appinnehåll 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 du aktiverar källkontroll utlöser en uppdatering av kod i den anslutna källlagringsplatsen distributionen av den senaste koden från lagringsplatsen. För mer information, se 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. Vanligtvis aktiverar du källkontroll på en mellanlagringsplats, som du kan växla till produktion efter validering av uppdateringar från lagringsplatsen. Mer information finns i Azure Functions distributionsplatser.
Var appinnehåll lagras: Källkontrollsystemet lagrar appinnehållet. Appens filsystern lagrar en lokalt klonad och byggd appinnehållsstruktur, som kanske stöds av Azure Files från det lagringskonto som specificerades när funktionsappen skapades.
Lokal Git
Använd lokal Git för att pusha 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 den: Undvik att använda distributionsmetoder som kräver ytterligare steg för att synkronisera utlösare manuellt för att minska risken för fel. Använd zip-distribution när det är möjligt.
Where appinnehåll lagras: Appinnehåll lagras i filsystemet, som kan backas upp av Azure Files från lagringskontot som du anger när du skapar funktionsappen.
FTP/S
Du kan använda FTP/S för att direkt överföra filer till Azure Functions, men använd inte den här distributionsmetoden. När du inte planerar att använda FTP inaktiverar du det. Om du väljer att använda FTP framtvingar du FTPS. För att lära dig hur du gör i Azure-portalen, se Enforce 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 hjälp av FTPS.
När du ska använda den: Undvik att använda distributionsmetoder som kräver ytterligare steg för att synkronisera utlösare manuellt för att minska risken för fel. Använd zip-distribution när det är möjligt.
Var appinnehåll lagras: Appinnehåll lagras i filsystemet. FTP/FTPS-distributioner misslyckas när appens filsystem stöds av Azure Files i standardvärdskontots lagring. FTP/FTPS misslyckas med Azure Files som monterad lagring på grund av FTP-begränsningar.
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: Om du vill redigera dina funktioner i Azure-portalen måste du skapa dina funktioner i portalen. För att bevara en enda källa till sanning blir din funktion skrivskyddad och förhindrar fortsatt redigering i portalen om du använder någon annan distributionsmetod. 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/Writeoch ta bort eventuella distributionsrelaterade programinställningar (till exempelWEBSITE_RUN_FROM_PACKAGE).
När du använder den: Portalen är ett bra sätt att komma igång med Azure Functions. På grund av utvecklingsbegränsningar i Azure-portalen bör du använda något av följande klientverktyg för mer avancerat utvecklingsarbete:
Where appinnehåll lagras: Appinnehåll lagras i filsystemet, som kan backas upp av Azure Files från lagringskontot som du anger när du skapar funktionsappen.
Utplaceringsbeteenden
När du distribuerar uppdateringar av funktionsappens kod beror distributionsbeteendet på din värdplan:
Förbrukning, Elastic Premium och dedikerade planer: För närvarande avslutas pågående funktioner när ny kod distribueras. När distributionen är klar läses den nya koden in för att börja bearbeta begäranden. Det här beteendet för kraftfull avslutning kallas för en återskapad strategi. För distributioner med nästan noll driftstopp på förbruknings-, Elastic Premium- och Dedikerade planer använder du distributionsfack.
Granska Förbättera prestanda och tillförlitlighet för Azure Functions för att lära dig hur du skriver tillståndslösa och defensiva funktioner.
Flex Consumption plan: Det vanliga beteendet använder också återuppbyggnadsstrategin och avslutar befintliga funktioner under distributionen. Flex Consumption har dock unikt stöd för två olika strategier för webbplatsuppdatering. Du kan konfigurera löpande uppdateringar för distributioner med noll driftstopp.
Distributionsplatser
När du distribuerar funktionsappen 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 du alternativet --slot för att ange namnet på ett specifikt fack för kommandot func azure functionapp publish.
Mer information om distributionsplatser finns i dokumentationen Azure Functions Deployment Slots.
Nästa steg
Läs de här artiklarna om du vill veta mer om hur du distribuerar dina funktionsappar:
- Kontinuerlig distribution för Azure Functions
- Fortsätt leverans med hjälp av Azure-pipelines
- Zip-distributioner för Azure Functions
- Kör Azure Functions från en paketfil
- Automatisera distributionen av resurser för din funktionsapp i Azure Functions
- Konfigurera distributioner med noll driftstopp i Flex Consumption