Implementatietechnologieën in Azure Functions

U kunt een aantal verschillende technologieën gebruiken om uw Azure Functions-projectcode te implementeren in Azure. Dit artikel bevat een overzicht van de implementatiemethoden die voor u beschikbaar zijn en aanbevelingen voor de beste methode die u in verschillende scenario's kunt gebruiken. Het biedt ook een uitgebreide lijst met en belangrijke details over de onderliggende implementatietechnologieën.

Implementatiemethoden

De implementatietechnologie die u gebruikt om code te publiceren naar uw functie-app in Azure, is afhankelijk van uw specifieke behoeften en het punt in de ontwikkelingscyclus. Tijdens het ontwikkelen en testen kunt u bijvoorbeeld rechtstreeks vanuit uw ontwikkelprogramma, zoals Visual Studio Code, implementeren. Wanneer uw app in productie is, is het waarschijnlijker dat u continu publiceert vanuit broncodebeheer of met behulp van een geautomatiseerde publicatiepijplijn, waaronder validatie en testen.

In de volgende tabel worden de beschikbare implementatiemethoden voor uw codeproject beschreven.

Implementatietype Methoden Geschikt voor...
Op basis van hulpprogramma's Visual Studio Code publiceren
Visual Studio publiceren
Core Tools publiceren
Implementaties tijdens ontwikkeling en andere geïmproviseerde implementaties. Uw code op aanvraag implementeren met behulp van lokale ontwikkelhulpprogramma's.
App Service beheerd Implementatiecentrum (CI/CD)
Containerimplementaties
Continue implementatie (CI/CD) vanuit broncodebeheer of vanuit een containerregister. Implementaties worden beheerd door het App Service-platform (Kudu).
Externe pijplijnen Azure Pipelines
GitHub Actions
Productiepijplijnen die validatie, testen en andere acties bevatten die moeten worden uitgevoerd als onderdeel van een geautomatiseerde implementatie. Implementaties worden beheerd door de pijplijn.

Specifieke implementaties moeten de beste technologie gebruiken op basis van het specifieke scenario. Veel van de implementatiemethoden zijn gebaseerd op zip-implementatie, die wordt aanbevolen voor implementatie.

Beschikbaarheid van implementatietechnologie

De implementatiemethode is ook afhankelijk van het hostingplan en het besturingssysteem waarop u uw functie-app uitvoert.
Momenteel biedt Functions drie hostingabonnementen:

Elk plan heeft verschillende gedragingen. Niet alle implementatietechnologieën zijn beschikbaar voor elk hostingabonnement en besturingssysteem. Deze grafiek bevat informatie over de ondersteunde implementatietechnologieën:

Implementatietechnologie Windows-verbruik Windows Premium Windows Dedicated Linux-verbruik Linux Premium Linux Dedicated
URLvan extern pakket 1
Zip-implementatie
Docker-container
Web Deploy
Broncodebeheer
Lokale Git1
FTPS1
In portal bewerken2 3 3

1 Implementatietechnologieën waarvoor u handmatig triggers moet synchroniseren, worden niet aanbevolen.
2 Bewerking in de portal is uitgeschakeld wanneer code wordt geïmplementeerd in uw functie-app van buiten de portal. Zie Taalondersteuningsdetails voor meer informatie, waaronder taalondersteuningsdetails voor bewerking in de portal.
3 Bewerking in de portal is alleen ingeschakeld voor door HTTP en Timer geactiveerde functies die worden uitgevoerd op Linux in Premium- en Dedicated-abonnementen.

Belangrijke concepten

Enkele belangrijke concepten zijn essentieel om inzicht te krijgen in de werking van implementaties in Azure Functions.

Synchronisatie activeren

Wanneer u een van uw triggers wijzigt, moet de Infrastructuur van Functions op de hoogte zijn van de wijzigingen. Synchronisatie vindt automatisch plaats voor veel implementatietechnologieën. In sommige gevallen moet u uw triggers echter handmatig synchroniseren. Wanneer u uw updates implementeert door te verwijzen naar een URL van een extern pakket, lokale Git, cloudsynchronisatie of FTP, moet u uw triggers handmatig synchroniseren. U kunt triggers op drie manieren synchroniseren:

  • Start uw functie-app opnieuw op in Azure Portal.
  • Verzend een HTTP POST-aanvraag naar https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> het gebruik van de hoofdsleutel.
  • Verzend een HTTP POST-aanvraag naar https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01. Vervang de tijdelijke aanduidingen door uw abonnements-id, resourcegroepnaam en de naam van uw functie-app. Voor deze aanvraag is een toegangstoken in de Authorization aanvraagheader vereist.

Wanneer u implementeert met behulp van een externe pakket-URL, moet u de functie-app handmatig opnieuw opstarten om uw updates volledig te synchroniseren wanneer het pakket wordt gewijzigd zonder de URL te wijzigen.

Externe build

Azure Functions kan automatisch builds uitvoeren op de code die wordt ontvangen na zip-implementaties. Deze builds gedragen zich enigszins anders, afhankelijk van of uw app wordt uitgevoerd in Windows of Linux.

Alle functie-apps die worden uitgevoerd in Windows hebben een kleine beheer-app, de SCM-site van Kudu. Deze site verwerkt veel van de implementatie- en buildlogica voor Azure Functions.

Wanneer een app wordt geïmplementeerd in Windows, worden taalspecifieke opdrachten, zoals dotnet restore (C#) of npm install (JavaScript) uitgevoerd.

De volgende overwegingen zijn van toepassing bij het gebruik van externe builds tijdens de implementatie:

  • Externe builds worden ondersteund voor functie-apps die worden uitgevoerd op Linux in het verbruiksabonnement, maar ze hebben geen SCM/Kudu-site, waardoor implementatieopties worden beperkt.
  • Functie-apps die worden uitgevoerd in Linux een Premium-abonnement of in een Dedicated (App Service)-abonnement hebben wel een SCM/Kudu-site, maar deze is beperkt in vergelijking met Windows.
  • Externe builds worden niet uitgevoerd wanneer een app eerder is ingesteld om uit te voeren vanuit de pakketmodus . Zie Zip deploy voor meer informatie over het gebruik van externe build in deze gevallen.
  • Mogelijk ondervindt u problemen met externe build wanneer uw app is gemaakt voordat de functie beschikbaar werd gesteld (1 augustus 2019). Voor oudere apps maakt u een nieuwe functie-app of voert u deze uit az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> om uw functie-app bij te werken. Met deze opdracht kunnen twee pogingen worden uitgevoerd.

App-inhoudsopslag

In verschillende implementatiemethoden wordt de nettolading van de geïmplementeerde of gebouwde toepassing opgeslagen in het opslagaccount dat is gekoppeld aan de functie-app. Functions probeert de Azure Files-inhoudsshare te gebruiken wanneer deze is geconfigureerd, maar bij sommige methoden wordt de nettolading opgeslagen in het blobopslagexemplaar dat is gekoppeld aan de AzureWebJobsStorage verbinding. Zie de details in de alinea's waar app-inhoud wordt opgeslagen van elke implementatietechnologie die in de volgende sectie wordt behandeld.

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.

Details van implementatietechnologie

De volgende implementatiemethoden zijn beschikbaar in Azure Functions.

URL van extern pakket

U kunt een URL van een extern pakket gebruiken om te verwijzen naar een extern pakketbestand (.zip) dat uw functie-app bevat. Het bestand wordt gedownload van de opgegeven URL en de app wordt uitgevoerd in de modus Uitvoeren vanuit pakket .

Hoe u dit kunt gebruiken: Toevoegen WEBSITE_RUN_FROM_PACKAGE aan uw toepassingsinstellingen. De waarde van deze instelling moet een URL zijn (de locatie van het specifieke pakketbestand dat u wilt uitvoeren). U kunt instellingen toevoegen in de portal of met behulp van de Azure CLI.

Als u Azure Blob Storage gebruikt, gebruikt u een privécontainer met een Shared Access Signature (SAS) om Functions toegang te geven tot het pakket. Telkens wanneer de toepassing opnieuw wordt opgestart, wordt er een kopie van de inhoud opgehaald. Uw verwijzing moet geldig zijn voor de levensduur van de toepassing.

Wanneer u deze wilt gebruiken: externe pakket-URL is de enige ondersteunde implementatiemethode voor Azure Functions die wordt uitgevoerd op Linux in het verbruiksabonnement, als de gebruiker geen externe build wil uitvoeren. Wanneer u het pakketbestand bijwerkt waarnaar een functie-app verwijst, moet u triggers handmatig synchroniseren om Azure te laten weten dat uw toepassing is gewijzigd. Wanneer u de inhoud van het pakketbestand en niet de URL zelf wijzigt, moet u de functie-app ook handmatig opnieuw opstarten.

Waar app-inhoud wordt opgeslagen: app-inhoud wordt opgeslagen op de opgegeven URL. Dit kan zich in Azure Blobs bevinden, mogelijk in het opslagaccount dat is opgegeven door de AzureWebJobsStorage verbinding. Sommige clienthulpprogramma's kunnen standaard worden geïmplementeerd in een blob in dit account. Voor Linux Consumption-apps probeert de Azure CLI bijvoorbeeld te implementeren via een pakket dat is opgeslagen in een blob op het account dat is opgegeven door AzureWebJobsStorage.

Zip-implementatie

Gebruik zip deploy om een .zip-bestand met uw functie-app naar Azure te pushen. U kunt eventueel instellen dat uw app wordt uitgevoerd vanuit het pakket of dat er een externe build plaatsvindt.

Hoe u dit kunt gebruiken: Implementeren met behulp van uw favoriete clienthulpprogramma: Visual Studio Code, Visual Studio of vanaf de opdrachtregel met behulp van de Azure Functions Core Tools. Deze hulpprogramma's maken standaard gebruik van zip-implementatie en worden uitgevoerd vanuit het pakket. Core Tools en de Visual Studio Code-extensie maken beide externe build mogelijk bij de implementatie in Linux. Als u handmatig een .zip-bestand wilt implementeren in uw functie-app, volgt u de instructies in Implementeren vanuit een .zip bestand of URL.

Wanneer u implementeert met behulp van zip deploy, kunt u instellen dat uw app wordt uitgevoerd vanuit het pakket. Als u wilt uitvoeren vanuit het pakket, stelt u de waarde van de WEBSITE_RUN_FROM_PACKAGE toepassingsinstelling in op 1. U wordt aangeraden zip-implementatie te implementeren. Het levert snellere laadtijden voor uw toepassingen op en dit is de standaardinstelling voor VS Code, Visual Studio en de Azure CLI.

Wanneer u deze wilt gebruiken: Zip deploy is de aanbevolen implementatietechnologie voor Azure Functions.

Waar app-inhoud wordt opgeslagen: app-inhoud van een zip-implementatie wordt standaard opgeslagen in het bestandssysteem, dat mogelijk wordt ondersteund door Azure Files vanuit het opslagaccount dat is opgegeven toen de functie-app werd gemaakt. In Linux-verbruik blijft de app-inhoud in plaats daarvan behouden op een blob in het opslagaccount dat is opgegeven door de AzureWebJobsStorage verbinding.

Docker-container

U kunt een functie-app implementeren die wordt uitgevoerd in een Linux-container.

How to use it:Create your functions in a Linux container then deploy the container to a Premium or Dedicated plan in Azure Functions or another container host. Gebruik de Azure Functions Core Tools om een aangepast Dockerfile te maken voor uw project dat u gebruikt om een containerfunctie-app te bouwen. U kunt de container in de volgende implementaties gebruiken:

Wanneer u deze wilt gebruiken: gebruik de Docker-containeroptie wanneer u meer controle nodig hebt over de Linux-omgeving waar uw functie-app wordt uitgevoerd en waar de container wordt gehost. Dit implementatiemechanisme is alleen beschikbaar voor functies die worden uitgevoerd in Linux.

Waar app-inhoud wordt opgeslagen: app-inhoud wordt opgeslagen in het opgegeven containerregister als onderdeel van de installatiekopieën.

Web Deploy (MSDeploy)

Web Deploy packages and deploys your Windows applications to any IIS server, including your function apps running on Windows in Azure.

Hoe u dit kunt gebruiken: Visual Studio-hulpprogramma's gebruiken voor Azure Functions. Schakel het selectievakje Uitvoeren uit pakketbestand (aanbevolen) uit.

U kunt ook Web Deploy 3.6 downloaden en rechtstreeks aanroepenMSDeploy.exe.

Wanneer u deze wilt gebruiken: Web Deploy wordt ondersteund en heeft geen problemen, maar het voorkeursmechanisme is zip-implementatie met Uitvoeren vanaf pakket ingeschakeld. Zie de ontwikkelaarshandleiding voor Visual Studio voor meer informatie.

Waar app-inhoud wordt opgeslagen: app-inhoud wordt opgeslagen in het bestandssysteem, dat mogelijk wordt ondersteund door Azure Files vanuit het opslagaccount dat is opgegeven toen de functie-app werd gemaakt.

Bronbeheer

Gebruik broncodebeheer om uw functie-app te verbinden met een Git-opslagplaats. Een update voor code in die opslagplaats activeert de implementatie. Zie de Kudu-wiki voor meer informatie.

Hoe u dit kunt gebruiken: Gebruik Implementatiecentrum in het gebied Functions van de portal om publicatie vanuit broncodebeheer in te stellen. Zie Continue implementatie voor Azure Functions voor meer informatie.

Wanneer u dit gebruikt: het gebruik van broncodebeheer is de aanbevolen procedure voor teams die samenwerken aan hun functie-apps. Broncodebeheer is een goede implementatieoptie die geavanceerdere implementatiepijplijnen mogelijk maakt.

Waar app-inhoud wordt opgeslagen: de app-inhoud bevindt zich in het broncodebeheersysteem, maar een lokaal gekloonde en gebouwde app-inhoud wordt opgeslagen in het bestandssysteem van de app, die mogelijk wordt ondersteund door Azure Files vanuit het opslagaccount dat is opgegeven toen de functie-app werd gemaakt.

Lokale Git

U kunt lokale Git gebruiken om code van uw lokale computer naar Azure Functions te pushen met behulp van Git.

Hoe u dit kunt gebruiken: volg de instructies in de lokale Git-implementatie voor Azure-app Service.

Wanneer moet u deze gebruiken: om de kans op fouten te verminderen, moet u het gebruik van implementatiemethoden vermijden waarvoor de extra stap van het handmatig synchroniseren van triggers is vereist. Gebruik waar mogelijk zip-implementatie .

Waar app-inhoud wordt opgeslagen: app-inhoud wordt opgeslagen in het bestandssysteem, dat mogelijk wordt ondersteund door Azure Files vanuit het opslagaccount dat is opgegeven toen de functie-app werd gemaakt.

FTP/S

U kunt FTP/S gebruiken om bestanden rechtstreeks over te dragen naar Azure Functions, hoewel deze implementatiemethode niet wordt aanbevolen. Als u niet van plan bent FTP te gebruiken, moet u deze uitschakelen. Als u ervoor kiest FTP te gebruiken, moet u FTPS afdwingen. Zie FTPS afdwingen in Azure Portal voor meer informatie.

Hoe u dit kunt gebruiken: volg de instructies in de FTPS-implementatie-instellingen om de URL en referenties op te halen die u kunt gebruiken om te implementeren in uw functie-app met FTPS.

Wanneer moet u deze gebruiken: om de kans op fouten te verminderen, moet u het gebruik van implementatiemethoden vermijden waarvoor de extra stap van het handmatig synchroniseren van triggers is vereist. Gebruik waar mogelijk zip-implementatie .

Waar app-inhoud wordt opgeslagen: app-inhoud wordt opgeslagen in het bestandssysteem, dat mogelijk wordt ondersteund door Azure Files vanuit het opslagaccount dat is opgegeven toen de functie-app werd gemaakt.

Portal bewerken

In de portaleditor kunt u de bestanden die zich in uw functie-app bevinden, rechtstreeks bewerken (in feite elke keer dat u uw wijzigingen opslaat) implementeren.

Hoe u dit kunt gebruiken: als u uw functies in Azure Portal wilt kunnen bewerken, moet u uw functies in de portal hebben gemaakt. Als u één bron van waarheid wilt behouden, maakt u met behulp van een andere implementatiemethode uw functie alleen-lezen en voorkomt u dat de portal blijft bewerken. Als u wilt terugkeren naar een status waarin u uw bestanden in De Azure-portal kunt bewerken, kunt u de bewerkingsmodus handmatig terugzetten naar Read/Write en eventuele toepassingsinstellingen voor implementaties verwijderen (zoals WEBSITE_RUN_FROM_PACKAGE).

Wanneer u deze kunt gebruiken: De portal is een goede manier om aan de slag te gaan met Azure Functions. Voor geavanceerdere ontwikkelwerkzaamheden raden we u aan een van de volgende clienthulpprogramma's te gebruiken:

Waar app-inhoud wordt opgeslagen: app-inhoud wordt opgeslagen in het bestandssysteem, dat mogelijk wordt ondersteund door Azure Files vanuit het opslagaccount dat is opgegeven toen de functie-app werd gemaakt.

In de volgende tabel ziet u de besturingssystemen en talen die ondersteuning bieden voor bewerking in de portal:

Taal Windows-verbruik Windows Premium Windows Dedicated Linux-verbruik Linux Premium Linux Dedicated
C#
C# Script * *
F#
Java
JavaScript (node.js) 1 1
Python2 1 1
PowerShell
TypeScript (Node.js)

1 In-portal bewerken is alleen ingeschakeld voor HTTP- en timertriggers voor Functions op Linux met behulp van Premium- en Dedicated-abonnementen.
2 Bewerking in de portal wordt alleen ondersteund voor het v1 Python-programmeermodel.

Implementatiegedrag

Wanneer u updates implementeert in de code van uw functie-app, worden momenteel uitgevoerde functies beëindigd. Nadat de implementatie is voltooid, wordt de nieuwe code geladen om aanvragen te verwerken. Bekijk De prestaties en betrouwbaarheid van Azure Functions verbeteren voor meer informatie over het schrijven van staatloze en defensieve functies.

Als u meer controle over deze overgang nodig hebt, moet u implementatiesites gebruiken.

Implementatiesites

Wanneer u uw functie-app in Azure implementeert, kunt u implementeren in een afzonderlijke implementatiesite in plaats van rechtstreeks naar productie. Zie de documentatie voor Implementatiesites voor Azure Functions voor meer informatie over implementatiesites.

Volgende stappen

Lees deze artikelen voor meer informatie over het implementeren van uw functie-apps: