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

Welche Bereitstellungstechnologie Sie zum Veröffentlichen von Code in Ihrer Funktions-App in Azure verwenden, hängt von Ihren spezifischen Anforderungen und dem Zeitpunkt im Entwicklungszyklus ab. 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 Produktionsphase befindet, verwenden Sie zur kontinuierlichen Veröffentlichung wahrscheinlich eher die Quellcodeverwaltung oder eine automatisierte Veröffentlichungspipeline, die zusätzliche Validierungs- und Testvorgänge umfassen kann.

In der folgenden Tabelle werden die verfügbaren Bereitstellungsmethoden für Ihr Codeprojekt 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 andere improvisierte Bereitstellungen. Zur Bereitstellung Ihres Codes verwenden Sie bei Bedarf lokale Entwicklungstools.
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
Produktionspipelines, die Validierungs- und Testvorgänge sowie weitere Aktionen umfassen, die im Rahmen einer automatisierten Bereitstellung ausgeführt werden müssen. Bereitstellungen werden von der Pipeline verwaltet.

Bestimmte Bereitstellungen sollten für jedes Szenario die jeweils beste Technologie nutzen. Viele Bereitstellungsmethoden basieren auf der ZIP-Bereitstellung, die für die Bereitstellung empfohlen wird.

Bereitstellungstechnologie: Verfügbarkeit

Die Bereitstellungsmethode hängt auch von Ihrem Hostingplan sowie von dem Betriebssystem ab, unter dem Sie Ihre Funktions-App ausführen.
Derzeit bietet Functions drei Hostingpläne:

Jeder Plan weist ein anderes Verhalten auf. Nicht alle Bereitstellungstechnologien sind für jeden Hostingplan und jedes Betriebssystem verfügbar. Im folgenden Diagramm finden Sie Informationen zu den unterstützten Bereitstellungstechnologien:

Bereitstellungstechnologie Windows: Verbrauch Windows Premium Windows: Dediziert Linux: Verbrauch Linux Premium Linux: Dediziert
Externe Paket-URL1
ZIP-Bereitstellung
Docker-Container
Quellcodeverwaltung
Lokales Git1
FTPS1
Bearbeitung im Portal2

1 Bereitstellungstechnologien, die eine manuelle Synchronisierung von Triggern erfordern, werden nicht empfohlen.
2 Die Bearbeitung im Portal ist deaktiviert, wenn Code von außerhalb des Portals in Ihrer Funktions-App bereitgestellt wird. Weitere Informationen, einschließlich Details zur Sprachunterstützung für die Bearbeitung im Portal, finden Sie unter Sprachunterstützungsdetails.

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.

Sie müssen Trigger manuell synchronisieren, wenn Sie diese Bereitstellungsoptionen verwenden:

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. Für diese Anforderung ist ein Zugriffstoken im AnforderungsheaderAuthorization erforderlich.

Wenn Sie die Bereitstellung mithilfe einer externen Paket-URL verwenden, müssen Sie Ihre Funktions-App manuell neu starten, um Ihre Bereitstellung vollständig zu synchronisieren, wenn sich das Paket ändert, ohne die URL zu ändern, was auch die erste Bereitstellung einschließt.

Wenn Ihre Funktions-App durch eingehende Netzwerkeinschränkungen gesichert ist, kann der Synchronisierungstrigger-Endpunkt nur von einem Client innerhalb des virtuellen Netzwerks aufgerufen werden.

Remotebuild

In Azure Functions können automatisch Builds für den Code ausgeführt werden, der nach ZIP-Bereitstellungen empfangen wird. Diese Builds unterscheiden sich je nachdem, ob Ihre App unter Windows oder Linux ausgeführt wird.

Alle Funktions-Apps, die unter Windows ausgeführt werden, enthalten eine kleine Verwaltungs-App, die von Kudu bereitgestellte scm 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.

Die folgenden Überlegungen gelten für die Verwendung von Remotebuilds während der Bereitstellung:

  • Remotebuilds werden für Funktions-Apps unterstützt, die unter Linux im Verbrauchsplan ausgeführt werden. Die Bereitstellungsoptionen sind jedoch für diese Apps eingeschränkt, da sie keine (Kudu)-Website haben scm.
  • Funktions-Apps, die unter Linux einen Premium-Plan oder einen Dedicated-Plan (App Service) ausführen, verfügen über eine scmKudu-Website, sind aber im Vergleich zu Windows begrenzt.
  • Remotebuilds werden nicht ausgeführt, wenn eine App run-from-package verwendet. Wie Sie in diesen Fällen Remotebuilds verwenden können, erfahren Sie unter Zip-Bereitstellung.
  • Bei der Verwendung eines Remotebuilds können Probleme auftreten, wenn Ihre App erstellt wurde, bevor die Funktion verfügbar gemacht wurde (1. August 2019). Erstellen Sie für ältere Apps entweder eine neue Funktions-App, oder führen Sie az functionapp update --resource-group <RESOURCE_GROUP_NAME> --name <APP_NAME> aus, um Ihre Funktions-App zu aktualisieren. Dieser Befehl kann zwei Versuche in Anspruch nehmen, bis er erfolgreich ist.

App-Inhaltsspeicher

Mehrere Bereitstellungsmethoden speichern die bereitgestellten oder erstellten Anwendungsnutzdaten in dem Speicherkonto, das der Funktions-App zugeordnet ist. Functions versucht, die Azure Files Inhaltsfreigabe zu verwenden, wenn sie konfiguriert ist. Einige Methoden speichern jedoch stattdessen die Payload in der Blobspeicherinstanz, die der AzureWebJobsStorage-Verbindung zugeordnet sind. Weitere Informationen finden Sie in den Abschnitten zum Speicherort von App-Inhalten für die einzelnen Bereitstellungstechnologien, die im nächsten Abschnitt behandelt werden.

Wichtig

Das Speicherkonto wird verwendet, um wichtige App-Daten zu speichern, manchmal einschließlich des Anwendungscodes. Sie sollten den Zugriff von anderen Anwendungen und Benutzer*innen auf das Speicherkonto beschränken.

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 WEBSITE_RUN_FROM_PACKAGE 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 bereitstellen, auf die eine Funktions-App verweist, müssen Sie Auslöser manuell synchronisieren, einschließlich der ersten Bereitstellung. Wenn Sie den Inhalt der Paketdatei ändern und nicht die URL selbst, müssen Sie auch Ihre Funktions-App neu starten, um die Auslöser zu synchronisieren.

Speicherort von App-Inhalten: App-Inhalte werden unter der angegebenen URL gespeichert. Dies können Azure-Blobs sein, möglicherweise in dem Speicherkonto, das von der AzureWebJobsStorage-Verbindung angegeben wird. Einige Clienttools können die Bereitstellung standardmäßig in einem Blob in diesem Konto ausführen. Für Linux-Verbrauchs-Apps versucht die Azure CLI beispielsweise, die Bereitstellung über ein Paket auszuführen, das in einem Blob in dem durch AzureWebJobsStorage angegebenen Konto gespeichert ist.

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.

Speicherort von App-Inhalten: App-Inhalte aus einer ZIP-Bereitstellung werden standardmäßig im Dateisystem gespeichert, das ggf. von Azure Files aus dem Speicherkonto unterstützt wird, das beim Erstellen der Funktions-App angegeben wurde. Bei Linux-Verbrauch wird der App-Inhalt stattdessen in einem Blob in dem Speicherkonto gespeichert, das von der AzureWebJobsStorage-Verbindung angegeben wird.

Docker-Container

Sie können eine Funktions-App bereitstellen, die in einem Linux-Container ausgeführt wird.

Verwendung:Erstellen Sie Ihre Funktionen in einem Linux-Container, und stellen Sie den Container dann in einem Premium- oder Dedicated-Plan in Azure Functions oder einem anderen Containerhost bereit. Mit den Azure Functions Core Tools können Sie eine angepasste Dockerfile-Datei für Ihr Projekt erstellen, mit der Sie wiederum eine containerisierte Funktions-App erstellen können. Sie können den Container in den folgenden Bereitstellungen verwenden:

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 und in der der Container gehostet ist. Dieser Bereitstellungsmechanismus steht nur für Funktionen unter Linux zur Verfügung.

Speicherort von App-Inhalten: App-Inhalte werden in der angegebenen Containerregistrierung als Teil des Images gespeichert.

Quellcodeverwaltung

Sie können die kontinuierliche Integration zwischen Ihrer Funktions-App und einem Quellcode-Repository aktivieren. Mit aktivierter Quellcodeverwaltung löst eine Aktualisierung des Codes im verbundenen Quell-Repository die Bereitstellung des neuesten Codes aus dem Repository aus. Weitere Informationen finden Sie unter Continuous Deployment für Azure Functions.

Verwendung : Die einfachste Möglichkeit zum Einrichten der Veröffentlichung aus der Quellcodeverwaltung stammt aus dem Bereitstellungscenter im Bereich "Funktionen" des Portals. 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. Die Quellcodeverwaltung ist in der Regel auf einem Stagingslot aktiviert, der nach der Überprüfung von Updates aus dem Repository in die Produktion getauscht werden kann. Weitere Informationen finden Sie unter Azure Functions-Bereitstellungsslots.

Speicherort von App-Inhalten: Der App-Inhalt befindet sich im Quellcodeverwaltungssystem, aber lokal geklonter und erstellter App-Inhalt wird im App-Dateisystem gespeichert, das ggf. von Azure Files aus dem Speicherkonto unterstützt wird, das beim Erstellen der Funktions-App angegeben wurde.

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.

Verwendung: Um die Fehlerwahrscheinlichkeit zu verringern, sollten Sie die Verwendung von Bereitstellungsmethoden vermeiden, die den zusätzlichen Schritt der manuellen Synchronisierung von Triggern erfordern. Verwenden Sie nach Möglichkeit die ZIP-Bereitstellung.

Speicherort von App-Inhalten: App-Inhalte werden im Dateisystem gespeichert, das ggf. durch Azure Files aus dem Speicherkonto unterstützt wird, das beim Erstellen der Funktions-App angegeben wurde.

FTP/S

Sie können FTP/S verwenden, um Dateien direkt nach Azure Functions zu übertragen. Diese Bereitstellungsmethode wird allerdings nicht empfohlen. Wenn Sie nicht vorhaben, FTP zu nutzen, sollten Sie es deaktivieren. Wenn Sie FTP nutzen möchten, sollten Sie FTPS erzwingen. Informationen zur Vorgehensweise im Azure-Portal finden Sie unter Erzwingen von FTPS.

Verwendung: Befolgen Sie die Anweisungen unter FTPS-Bereitstellungseinstellungen, um die URL und die Anmeldeinformationen abzurufen, die Sie für die Bereitstellung in Ihrer Funktions-App über FTPS verwenden können.

Verwendung: Um die Fehlerwahrscheinlichkeit zu verringern, sollten Sie die Verwendung von Bereitstellungsmethoden vermeiden, die den zusätzlichen Schritt der manuellen Synchronisierung von Triggern erfordern. Verwenden Sie nach Möglichkeit die ZIP-Bereitstellung.

Speicherort von App-Inhalten: App-Inhalte werden im Dateisystem gespeichert, das ggf. durch Azure Files aus dem Speicherkonto unterstützt wird, das beim Erstellen der Funktions-App angegeben wurde.

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 komplexeren Entwicklungsarbeiten empfiehlt sich die Verwendung eines der folgenden Clienttools:

Speicherort von App-Inhalten: App-Inhalte werden im Dateisystem gespeichert, das ggf. durch Azure Files aus dem Speicherkonto unterstützt wird, das beim Erstellen der Funktions-App angegeben wurde.

Die folgende Tabelle gibt Aufschluss über die Betriebssysteme und Programmiersprachen, die Bearbeitung im Portal unterstützen:

Sprache Windows: Verbrauch Windows Premium Windows: Dediziert Linux: Verbrauch Linux Premium Linux: Dediziert
C#1
Java
JavaScript (Node.js)
Python2
PowerShell
TypeScript (Node.js)

1 In-Portal-Bearbeitung wird nur für C#-Skriptdateien unterstützt, die im Prozess mit dem Host ausgeführt werden. Weitere Informationen finden Sie in der C#-Skriptentwicklerreferenz (C#-Skript, CSX) zu Azure Functions.
2 Die Bearbeitung im Portal wird nur für das Python-Programmiermodell v1 unterstützt.

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. Die Bereitstellung auf einem Bereitstellungsplatz und das anschließende Austauschen in die Produktion nach der Überprüfung ist die empfohlene Methode zum Konfigurieren der kontinuierlichen Bereitstellung.

Die Art und Weise, wie Sie auf einem Slot bereitstellen, hängt von dem jeweiligen Bereitstellungstool ab, das Sie verwenden. Wenn Sie beispielsweise Azure Functions Core Tools verwenden, fügen Sie die--slot Option ein, um den Namen eines bestimmten Steckplatzes für den func azure functionapp publish Befehl anzugeben.

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: