Bereitstellungstechnologien in Azure Functions

Ihnen stehen verschiedene Technologien zur Verfügung, um Code aus Azure Functions-Projekten in Azure bereitzustellen. Dieser Artikel bietet eine Übersicht über die für Sie verfügbaren Bereitstellungsmethoden sowie Empfehlungen für in den jeweiligen verschiedenen Szenarien zu verwendende beste Methode. Außerdem finden Sie hier eine vollständige Liste der zugrunde liegenden Bereitstellungstechnologien und ihrer wichtigsten Details.

Bereitstellungsmethoden

Die Bereitstellungstechnologie, mit der Sie Code in Azure veröffentlichen, wird in der Regel durch die Art und Weise bestimmt, in der Sie Ihre App veröffentlichen. Die geeignete Bereitstellungsmethode wird durch die spezifischen Anforderungen und den Zeitpunkt im Entwicklungszyklus bestimmt. Beispielsweise können Sie während der Entwicklung und während Tests direkt aus Ihrem Entwicklungstool bereitstellen, z. B. Visual Studio Code. Wenn sich Ihre App in der Produktion befindet, ist es wahrscheinlicher, dass Sie kontinuierlich aus der Quellcodeverwaltung oder mithilfe einer automatisierten Veröffentlichungspipeline veröffentlichen, die zusätzliche Validierung und Tests umfasst.

In der folgenden Tabelle sind die verfügbaren Bereitstellungsmethoden für Ihr Funktionsprojekt beschrieben.

Bereitstellungstyp Methoden Am besten geeignet für:
Toolsbasiert Veröffentlichung in Visual Studio Code
Veröffentlichung in Visual Studio publish
Veröffentlichung in Core Tools
Bereitstellungen während der Entwicklung und anderen Ad-hoc-Bereitstellungen. Bereitstellungen werden lokal von den Tools verwaltet.
Von App Service verwaltet Bereitstellungscenter (CI/CD)
Containerbereitstellungen
Continuous Deployment (CI/CD) aus der Quellcodeverwaltung oder aus einer Containerregistrierung. Bereitstellungen werden von der App Service-Plattform (Kudu) verwaltet.
Externe Pipelines Azure Pipelines
GitHub Actions
Produktions- und DevOps-Pipelines, die zusätzliche Validierungs-, Test- und andere Aktionen umfassen, können als Teil einer automatisierten Bereitstellung ausgeführt werden. Bereitstellungen werden von der Pipeline verwaltet.

Auch wenn bestimmte Functions-Bereitstellungen die beste Technologie auf Grundlage ihres Kontexts verwenden, basieren die meisten Bereitstellungsmethoden auf der ZIP-Bereitstellung.

Bereitstellungstechnologie: Verfügbarkeit

Azure Functions unterstützt die plattformübergreifende lokale Entwicklung sowie Hosting unter Windows und Linux. Derzeit sind drei Hostingpläne verfügbar:

Jeder Plan weist ein anderes Verhalten auf. Nicht alle Bereitstellungstechnologien stehen für jede Variante von Azure Functions zur Verfügung. Das folgende Diagramm zeigt die jeweils unterstützten Bereitstellungstechnologien für die verschiedenen Kombination aus Betriebssystem und Hostingplan:

Bereitstellungstechnologie Windows: Verbrauch Windows Premium Windows: Dediziert Linux: Verbrauch Linux Premium Linux: Dediziert
Externe Paket-URL1
ZIP-Bereitstellung
Docker-Container
Web Deploy
Quellcodeverwaltung
Lokales Git1
Cloudsynchronisierung1
FTP1
Portalbearbeitung 2 2

1 Bereitstellungstechnologie, die eine manuelle Triggersynchronisierung erfordert. 2 Die Portalbearbeitung steht nur für HTTP-Trigger und Trigger mit Timer zur Verfügung (für Functions unter Linux mit dem Tarif „Premium“ oder „Dedicated“).

Wichtige Begriffe

Einige Schlüsselkonzepte sind wichtig, um zu verstehen, wie Bereitstellungen in Azure Functions funktionieren.

Triggersynchronisierung

Wenn Sie einen Trigger ändern, muss die Infrastruktur von Functions über die vorgenommenen Änderungen informiert werden. Die Synchronisierung erfolgt bei vielen Bereitstellungstechnologien automatisch. Manchmal müssen die Trigger jedoch manuell synchronisiert werden. Eine manuelle Synchronisierung der Trigger ist erforderlich, wenn Sie Ihre Aktualisierungen über einen Verweis auf eine externe Paket-URL oder einen lokalen Git-Speicherort oder über Cloudsynchronisierung bzw. FTP bereitstellen. Trigger können auf drei Arten synchronisiert werden:

  • Neustarten der Funktions-App über das Azure-Portal.
  • Senden einer HTTP POST-Anforderung an https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY> unter Verwendung des https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>
  • Senden einer HTTP POST-Anforderung an https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01 Ersetzen Sie die Platzhalter durch Ihre Abonnement-ID, den Namen Ihrer Ressourcengruppe und den Namen Ihrer Funktions-App.

Wenn Sie die Bereitstellung unter Verwendung einer externen Paket-URL vornehmen und sich der Inhalt des Pakets ändert, die URL selbst jedoch nicht, müssen Sie Ihre Funktions-App manuell neu starten, um Ihre Aktualisierungen vollständig zu synchronisieren.

Remotebuild

In Azure Functions können automatisch Builds für den Code ausgeführt werden, der nach ZIP-Bereitstellungen empfangen wird. Diese Builds verhalten sich etwas unterschiedlich, je nachdem, ob Ihre App unter Windows oder Linux ausgeführt wird. Remotebuilds werden nicht ausgeführt, wenn eine App bereits für die Ausführung im Modus Run From Package (Aus Paket ausführen) festgelegt wurde. Informationen zum Verwenden von Remotebuilds finden Sie unter ZIP-Bereitstellung.

Hinweis

Wenn bei der Verwendung eines Remotebuilds Probleme auftreten, liegt es möglicherweise daran, dass Ihre App erstellt wurde, bevor die Funktion verfügbar gemacht wurde (1. August 2019). Erstellen Sie eine neue Funktions-App, oder führen Sie az functionapp update -g <RESOURCE_GROUP_NAME> -n <APP_NAME> aus, um ihre Funktions-App zu aktualisieren. Dieser Befehl kann zwei Versuche in Anspruch nehmen, bis er erfolgreich ist.

Remotebuild unter Windows

Alle Funktions-Apps, die unter Windows ausgeführt werden, enthalten eine kleine Verwaltungs-App, die SCM-Website (oder Kudu-Website). Auf dieser Website wird ein Großteil der Bereitstellungs- und Buildlogik für Azure Functions verarbeitet.

Bei der Bereitstellung einer App unter Windows werden sprachspezifische Befehle, z. B. dotnet restore (C#) oder npm install (JavaScript) ausgeführt.

Remotebuild unter Linux

Zum Aktivieren des Remotebuilds unter Linux müssen Sie die folgenden Anwendungseinstellungen festlegen:

  • ENABLE_ORYX_BUILD=true
  • SCM_DO_BUILD_DURING_DEPLOYMENT=true

Standardmäßig führen die Azure Functions Core Tools und die Azure Functions-Erweiterung für Visual Studio Code bei der Bereitstellung unter Linux Remotebuilds aus. Aus diesem Grund erstellen beide Tools diese Einstellungen automatisch für Sie in Azure.

Wenn Apps remote unter Linux erstellt werden, werden sie über das Bereitstellungspaket ausgeführt.

Verbrauchsplan

Linux-Funktions-Apps, die im Verbrauchsplan ausgeführt werden, umfassen keine SCM/Kudu-Website, wodurch die Bereitstellungsoptionen eingeschränkt sind. Funktions-Apps unter Linux, die im Verbrauchsplan ausgeführt werden, unterstützen jedoch Remotebuilds.

Dedizierte und Premium-Pläne

Funktions-Apps, die unter Linux im App Service-Plan Dedicated oder Premium ausgeführt werden, umfassen auch eine eingeschränkte SCM/Kudu-Website.

Bereitstellungstechnologie: Details

Die folgenden Bereitstellungsmethoden sind in Azure Functions verfügbar.

Externe Paket-URL

Sie können eine externe Paket-URL verwenden, um auf eine Remotepaketdatei (ZIP-Datei) zu verweisen, die ihre Funktions-App enthält. Die Datei wird von der angegebenen URL heruntergeladen, und die App wird im Modus Aus Paketdatei ausführen ausgeführt.

Verwendung: Fügen Sie Ihren Anwendungseinstellungen hinzu. Der Wert dieser Einstellung muss eine URL sein (der Speicherort der spezifischen Paketdatei, die Sie ausführen möchten). Einstellungen können entweder über das Portal oder mithilfe der Azure-Befehlszeilenschnittstelle hinzugefügt werden.

Bei Verwendung von Blob Storage muss ein privater Container mit einer Shared Access Signature (SAS) verwendet werden, damit Functions auf das Paket zugreifen kann. Jedes Mal, wenn die Anwendung neu gestartet wird, ruft Sie eine Kopie des Inhalts ab. Ihr Verweis muss für die Lebensdauer der Anwendung gültig sein.

Einsatzgebiete: Eine externe Paket-URL ist die einzige Bereitstellungsmethode, die für Azure Functions unter Linux im Verbrauchsplan unterstützt wird, wenn der Benutzer nicht möchte, dass ein Remotebuild ausgeführt wird. Wenn Sie die Paketdatei aktualisieren, auf die eine Funktions-App verweist, müssen Sie die Trigger manuell synchronisieren, um Azure darüber zu informieren, dass sich Ihre Anwendung geändert hat. Wenn Sie den Inhalt der Paketdatei ändern und nicht die URL selbst, müssen Sie auch Ihre Funktions-App manuell neu starten.

ZIP-Bereitstellung

Verwenden Sie ZIP-Bereitstellung, um eine ZIP-Datei mit ihrer Funktions-APP in Azure zu pushen. Optional können Sie die App so festlegen, dass sie über ein Paket ausgeführt wird, oder Sie können angeben, dass ein Remotebuild ausgeführt wird.

Verwendung: Führen Sie die Bereitstellung mithilfe Ihres bevorzugten Clienttools aus: Visual Studio Code, Visual Studio oder über die Befehlszeile mithilfe der Azure Functions Core Tools. Standardmäßig verwenden diese Tools ZIP-Bereitstellung und werden aus dem Paket ausgeführt. Die Core Tools und die Visual Studio Code-Erweiterung aktivieren bei der Bereitstellung unter Linux die Remotebuildfunktion. Eine Anleitung zum manuellen Bereitstellen einer ZIP-Datei für Ihre Funktions-App finden Sie unter Bereitstellen mithilfe einer ZIP-Datei oder URL.

Wenn die Bereitstellung mithilfe der ZIP-Bereitstellung erfolgt, können Sie die App auf Run from Package (Aus Paket ausführen) festlegen. Zur Ausführung über ein Paket legen Sie den Wert der Anwendungseinstellung WEBSITE_RUN_FROM_PACKAGE auf 1 fest. Wir empfehlen die ZIP-Bereitstellung. Sie führt zu schnelleren Ladezeiten für Ihre Anwendungen und ist die Standardeinstellung für VS Code, Visual Studio und die Azure CLI.

Einsatzgebiete: Die ZIP-Bereitstellung ist die empfohlene Bereitstellungstechnologie für Azure Functions.

Docker-Container

Sie können ein Linux-Containerimage bereitstellen, das Ihre Funktions-App enthält.

Verwendung: Erstellen Sie eine Linux-Funktions-App im Plan „Premium“ oder „Dediziert“, und geben Sie das gewünschte Containerimage für die Ausführung an. Hierzu stehen zwei Möglichkeiten zur Verfügung:

  • Erstellen Sie eine Linux-Funktions-App unter einem Azure App Service-Plan über das Azure-Portal. Wählen Sie für Veröffentlichen das Docker-Image aus, und konfigurieren Sie dann den Container. Geben Sie den Speicherort ein, an dem das Image gehostet wird.
  • Erstellen Sie eine Linux-Funktions-App unter einem App Service-Plan mithilfe der Azure CLI. Eine entsprechende Anleitung finden Sie unter Erstellen einer Funktion unter Linux mithilfe eines benutzerdefinierten Images.

Verwenden Sie für die Bereitstellung in einem Kubernetes-Cluster als benutzerdefinierter Container den Befehl der Azure Functions Core Tools.

Einsatzgebiete: Verwenden Sie die Option „Docker-Container“, wenn Sie mehr Kontrolle über die Linux-Umgebung benötigen, in der Ihre Funktions-App ausgeführt wird. Dieser Bereitstellungsmechanismus steht nur für Functions unter Linux zur Verfügung.

Web Deploy (MSDeploy)

Bei der Web Deploy-Methode werden Ihre Windows-Anwendungen verpackt und auf einem beliebigen IIS-Server bereitgestellt (einschließlich Ihrer Funktions-Apps unter Windows in Azure).

Verwendung: Verwenden Sie die Visual Studio-Tools für Azure Functions. Deaktivieren Sie das Kontrollkästchen Aus Paketdatei ausführen (empfohlen) .

Sie können auch Web Deploy 3.6 herunterladen und direkt aufrufen.

Einsatzgebiete: Web Deploy wird zwar problemlos unterstützt, inzwischen wird jedoch der Mechanismus ZIP-Bereitstellung im Modus „Aus Paketdatei ausführen“ bevorzugt. Weitere Informationen finden Sie im Entwicklungsleitfaden für Visual Studio.

Quellcodeverwaltung

Verbinden Sie Ihre Funktions-App mithilfe der Quellcodeverwaltung mit einem Git-Repository. Ein Update des Codes in diesem Repository löst die Bereitstellung aus. Weitere Informationen finden Sie im Kudu-Wiki.

Verwendung: Verwenden Sie das Bereitstellungscenter im Functions-Bereich des Portals, um die auf Quellcodeverwaltung basierende Veröffentlichung einzurichten. Weitere Informationen finden Sie unter Continuous Deployment für Azure Functions.

Einsatzgebiete: Die Verwendung von Quellcodeverwaltung ist die bewährte Methode für Teams, die an ihren Funktions-Apps zusammenarbeiten. Quellcodeverwaltung ist eine gute Bereitstellungsoption, die anspruchsvollere Bereitstellungspipelines ermöglicht.

Lokales Git

Bei dieser Methode können Sie Code unter Verwendung von lokalem Git von Ihrem lokalen Computer aus in Azure Functions pushen.

Verwendung: Eine entsprechende Anleitung finden Sie unter Lokale Git-Bereitstellung in Azure App Service.

Einsatzgebiete: Im Allgemeinen wird empfohlen, eine andere Bereitstellungsmethode zu verwenden. Bei der Veröffentlichung über ein lokales Git müssen Sie Trigger manuell synchronisieren.

Cloudsynchronisierung

Verwenden Sie Cloudsynchronisierung, um Ihre Inhalte aus Dropbox und OneDrive mit Azure Functions zu synchronisieren.

Verwendung: Eine entsprechende Anleitung finden Sie unter Synchronisieren von Inhalt aus einem Cloudordner in Azure App Service.

Einsatzgebiete: Im Allgemeinen werden andere Bereitstellungsmethoden empfohlen. Bei der Veröffentlichung mit Cloudsynchronisierung müssen Sie Trigger manuell synchronisieren.

FTP

Die können FTP verwenden, um Dateien direkt an Azure Functions zu übertragen.

Verwendung: Eine entsprechende Anleitung finden Sie unter Bereitstellen von Inhalten mithilfe von FTP/S.

Einsatzgebiete: Im Allgemeinen werden andere Bereitstellungsmethoden empfohlen. Bei der Veröffentlichung mit FTP müssen Sie Trigger manuell synchronisieren.

Portalbearbeitung

Im portalbasierten Editor können Sie die Dateien, die sich in ihrer Funktions-App befinden, direkt bearbeiten (im Wesentlichen erfolgt die Bereitstellung bei jedem Speichern der Änderungen).

Verwendung: Wenn Sie Ihre Funktionen im Azure-Portal bearbeiten möchten, müssen Ihre Funktionen im Portal erstellt worden sein. Bei Verwendung einer anderen Bereitstellungsmethode wird Ihre Funktion schreibgeschützt und kann nicht mehr über das Portal bearbeitet werden, um eine zentrale zuverlässige Datenquelle (Single Source Of Truth, SSOT) zu gewährleisten. Sie können den Bearbeitungsmodus manuell erneut auf Read/Write festlegen und alle bereitstellungsbezogenen Anwendungseinstellungen (etwa WEBSITE_RUN_FROM_PACKAGE) entfernen, um wieder zu einem Zustand zurückzukehren, in dem Sie Ihre Dateien über das Portal bearbeiten können.

Einsatzgebiete: Das Portal ist eine gute Möglichkeit, um erste Schritte mit Azure Functions auszuführen. Bei intensiveren Entwicklungsarbeiten empfiehlt sich die Verwendung eines der folgenden Clienttools:

Die folgende Tabelle gibt Aufschluss über die Betriebssysteme und Programmiersprachen, die Portalbearbeitung unterstützen:

Sprache Windows: Verbrauch Windows Premium Windows: Dediziert Linux: Verbrauch Linux Premium Linux: Dediziert
C#
C#-Skript * *
F#
Java
JavaScript (Node.js) * *
Python
PowerShell
TypeScript (Node.js)

* Die Portalbearbeitung steht nur für HTTP-Trigger und Trigger mit Timer zur Verfügung (für Functions unter Linux mit dem Tarif „Premium“ oder „Dedicated“).

Bereitstellungsverhalten

Wenn Sie Updates für den Funktions-App-Code bereitstellen, werden aktuell ausgeführte Funktionen beendet. Nach Abschluss der Bereitstellung wird der neue Code geladen, um mit der Verarbeitung von Anforderungen zu beginnen. Lesen Sie Verbessern der Leistung und Zuverlässigkeit von Azure Functions, um zu erfahren, wie zustandslose und defensive Funktionen geschrieben werden.

Wenn Sie mehr Kontrolle über diesen Übergang benötigen, sollten Sie Bereitstellungsslots verwenden.

Bereitstellungsslots

Wenn Sie Ihre Funktions-App in Azure bereitstellen, können Sie als Bereitstellungsziel einen separaten Bereitstellungsslot verwenden, anstatt die Bereitstellung direkt in der Produktionsumgebung vorzunehmen. Weitere Informationen zu Bereitstellungsslots finden Sie in der Dokumentation zu Azure Functions-Bereitstellungsslots.

Nächste Schritte

Weitere Informationen zum Bereitstellen von Funktions-Apps finden Sie in den folgenden Artikeln: