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 deshttps://{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 eine aktualisierte Version des Bereitstellungspakets bereitstellen und dieselbe URL des externen Pakets verwalten, müssen Sie die Funktions-App manuell neu starten. Dies gibt an, dass der Host Ihre Updates über dieselbe Paket-URL synchronisieren und erneut bereitstellen soll. Der Funktionshost führt auch eine Hintergrundtriggersynchronisierung aus, nachdem die Anwendung gestartet wurde. Für die Hostingpläne „Verbrauch“ und „Elastic Premium“ sollten Sie jedoch auch in diesen Szenarios manuell Trigger synchronisieren:
- Bereitstellungen mit einer URL des externen Pakets entweder mit ARM-Vorlagen oder Terraform
- Beim Aktualisieren des Bereitstellungspakets mit derselben URL des externen Pakets
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
scm
Kudu-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 durchAzureWebJobsStorage
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
auf1
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:
- Bereitstellung von Ressourcen in Azure Functions, die Sie im Azure-Portal erstellt haben Weitere Informationen finden Sie unter Azure-Portal: Erstellen mithilfe von Containern.
- Bereitstellung von Ressourcen in Azure Functions, die Sie über die Befehlszeile erstellt haben Erfordert entweder einen Premium- oder Dedicated-Plan (App Service). Mehr erfahren Sie unter Erstellen Ihrer ersten containerisierten Azure Functions.
- Bereitstellen in Azure Container Apps Mehr erfahren Sie unter Erstellen Ihrer ersten containerisierten Azure Functions in Azure Container Apps.
- Bereitstellung in Azure Arc (Vorschauversion) Mehr erfahren Sie unter Erstellen Ihrer ersten containerisierten Azure Functions in Azure Arc (Vorschauversion).
- Bereitstellung in einem Kubernetes-Cluster Sie können die Bereitstellung in einem Cluster mit Azure Functions Core Tools durchführen. Verwenden Sie den Befehl
func kubernetes deploy
.
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 (etwaWEBSITE_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: