Paketbasierte Bereitstellung für Azure Functions

Dieser Artikel beschreibt, wie man ein einsatzbereites .zip Deployment-Paket erstellt, das Paket auf Azure bereitstellt und die Funktions-App so konfiguriert, dass sie direkt vom Paket aus läuft. Sie können mit Azure Functions Core Tools, Azure CLI oder den Deployment-REST-APIs bereitstellen.

Paketbasierte Bereitstellung ist der Standard für Funktionsanwendungen, die aus Code laufen. Die Bereitstellungstechnologie und die Paketkonfiguration hängen vom Hosting-Plan ab. Wählen Sie Ihren Hosting-Plan oben in diesem Artikel aus.

Azure Functions bietet das gesamte Spektrum an kontinuierlichen Bereitstellungs- und Integrationsoptionen, die Azure App Service bietet. Weitere Informationen finden Sie unter Continuous Deployment für Azure Functions.

Paketbereitstellung nach Hosting-Plan

Die folgende Tabelle fasst den Bereitstellungsprozess und die Paketkonfiguration für jeden Hosting-Plan zusammen:

Hosting-Paket Bereitstellungsprozess Paketkonfiguration
Flex-Verbrauchsplan Bereitstellung verwalteter Pakete Wird standardmäßig aus dem bereitgestellten Paket ausgeführt. Legen Sie nicht WEBSITE_RUN_FROM_PACKAGE fest.
Premium-Plan ZIP-Bereitstellung Legen Sie 1 auf WEBSITE_RUN_FROM_PACKAGE fest, um aus dem bereitgestellten Paket auszuführen.
Dedizierter (App Service-) Plan ZIP-Bereitstellung Legen Sie 1 auf WEBSITE_RUN_FROM_PACKAGE fest, um aus dem bereitgestellten Paket auszuführen.
Energiesparplan unter Windows ZIP-Bereitstellung Setzen Sie 1 auf WEBSITE_RUN_FROM_PACKAGE, um aus dem bereitgestellten Paket auszuführen.
Verbrauchsplan unter Linux URL für Remote-Builds oder externe Pakete Verwenden Sie eine externe Paket-URL für ein lokal erstelltes Paket.
Azure Container Apps – ein Dienst für containerbasierte Anwendungen Bereitstellung von Container-Images Paketbasierte Codebereitstellung ist nicht anwendbar.

Note

Der Inhalt dieses Artikels ist für den derzeit ausgewählten Hosting-Plan nicht relevant. Um einen anderen Plan auszuwählen, verwenden Sie den Selektor am Anfang dieses Artikels. Für einen Vergleich aller Hosting-Pläne siehe Azure Functions Hosting-Optionen.

Funktions-Apps, die auf Azure Container Apps gehostet werden, werden als Container-Images bereitgestellt, nicht als .zip-Pakete. Um eine bildbasierte Funktions-App zu erstellen und bereitzustellen, siehe Erstellen einer Funktions-App auf Azure Container Apps mit Code.

Erstellen Sie ein Deployment-Paket

In den meisten Fällen musst du das Deployment-Paket nicht selbst erstellen. Diese toolbasierten Bereitstellungsmethoden erstellen das Paket im Rahmen des Veröffentlichungsprozesses:

Für Azure Pipelines Bereitstellung erstellen die Pipeline-Build-Schritte das .zip-Archiv und übergeben es an die AzureFunctionApp Bereitstellungsaufgabe.

Wenn Sie direkt mit einem einsatzbereiten Bereitstellungspaket arbeiten müssen, erstellen Sie das Paket mit func pack. Zum Beispiel erstellen Sie das Paket selbst beim Deployen mit einer externen Paket-URL.

Du kannst das .zip-Archiv auch manuell erstellen. Wenn du das Archiv manuell erstellst, befolge diese Anforderungen an die Paketstruktur.

Anforderungen an Bereitstellungspakete

Das ZIP-Archiv, das Sie bereitstellen, muss alle Dateien enthalten, die für die Ausführung Ihrer Funktions-App erforderlich sind. Sie können manuell ein ZIP-Archiv aus dem Inhalt eines Funktionsprojektordners erstellen, indem Sie integrierte .zip Komprimierungsfunktionalität oder Nicht-Microsoft-Tools verwenden.

Das Archiv muss die host.json-Datei im Stammverzeichnis des extrahierten Ordners enthalten. Der ausgewählte Sprachstapel für die Funktions-App erstellt weitere Anforderungen:

Wichtig

Für Sprachen, die die kompilierte Ausgabe für die Bereitstellung generieren, müssen Sie den Inhalt des Ausgabeordners komprimieren, den Sie veröffentlichen möchten, und nicht den gesamten Projektordner. Wenn Functions den Inhalt des ZIP-Archivs extrahiert, muss die host.json-Datei im Stammverzeichnis des Pakets vorhanden sein.

Ein Zip-Deployment-Prozess extrahiert die Dateien und Ordner des .zip Archivs im Verzeichnis wwwroot . Wenn du beim Erstellen des Archivs das übergeordnete Verzeichnis mit aufnimmst, findet das System die Dateien, die es in wwwroot vorzufinden erwartet, nicht.

Ein Paket bereitstellen

Flex Consumption nutzt die Paketbereitstellung , um ein betriebsbereites Paket im Bereitstellungsspeichercontainer der App zu speichern. Die App läuft direkt über dieses Paket. Setze die WEBSITE_RUN_FROM_PACKAGE App-Einstellung nicht.

Bereiten Sie das Paket mit Core Tools, Visual Studio Code oder Azure CLI bereit. Diese Tools wählen automatisch das richtige Paketbereitstellungsverhalten für eine Flex Consumption-App aus.

Diese Tools führen eine Push-Bereitstellung durch, indem sie das Paket an den Bereitstellungsendpunkt der App senden. Bei Flex Consumption senden diese Clients das Paket an /api/publish auf dem scm-Host der App. Wenn der Deployment-Endpunkt nur über einen privaten Endpunkt erreichbar ist, muss der Computer, Runner oder Agent, der die Deployment durchführt, eine Netzwerkverbindung und DNS-Auflösung für den privaten Deployment-Endpunkt haben. Der Deployment-Service speichert das verarbeitete Paket im konfigurierten Deployment-Container; das direkte Hochladen eines Pakets in diesen Container bereitet es nicht aus. Um zu deployen, ohne vom initiierenden Client zum Deployment-Endpunkt zu pushen, verwenden Sie eine Bicep- oder ARM-Vorlagen-Bereitstellung mit einer Paket-URL, auf die der Deployment-Service zugreifen kann.

Bereitstellen über die Azure-Befehlszeilenschnittstelle

Verwenden Sie den Befehl az functionapp deployment source config-zip , um ein Paket bereitzustellen:

az functionapp deployment source config-zip --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> --src <ZIP_FILE_PATH>

Füge --build-remote true hinzu, wenn das Quellprojekt einen Remote-Build erfordert. Fordern Sie keinen entfernten Build für ein Paket an, das func pack bereits in einen Ready-to-Run-Zustand integriert ist, wie zum Beispiel ein Go-Deployment-Paket.

Um Bereitstellungsspeicher zu konfigurieren oder eine frühere Bereitstellung wiederherzustellen, siehe Funktionsanwendungen erstellen und verwalten im Flex Consumption-Plan.

Ein Paket bereitstellen

Premium-, dedizierte und Konsumplan-Apps verwenden die zip-Deployment-API. Der Bereitstellungsdienst führt folgende Aktionen aus:

  • Lösche Dateien, die von früheren Bereitstellungen verblieben sind.
  • Führe Deployment-Skripte und andere Deployment-Anpassungen aus.
  • Bereitstellungsprotokolle schreiben.
  • Die Synchronisationsfunktion wird ausgelöst.

Wichtig

In einer zip-Bereitstellung werden Dateien aus der vorherigen Bereitstellung gelöscht oder aktualisiert, als sie Teil dieser Bereitstellung waren. Der Bereitstellungsprozess behält andere Dateien und Verzeichnisse in deiner Funktions-App, die nicht Teil der vorherigen Bereitstellung waren. Für Implementierungsdetails siehe die Referenz zur Zip-Bereitstellung.

Bereitstellen über die Azure-Befehlszeilenschnittstelle

Verwenden Sie Azure CLI, um eine Push-Bereitstellung auszulösen. Führen Sie eine Push-Bereitstellung einer ZIP-Datei in Ihrer Funktions-App mithilfe des Befehls az functionapp deployment source config-zip aus. Zum Ausführen dieses Befehls müssen Sie Azure CLI, Version 2.0.21 oder höher, verwenden. Um zu sehen, welche Azure CLI-Version Sie verwenden, verwenden Sie den az --version Befehl.

Ersetzen Sie im folgenden Befehl den <zip_file_path>-Platzhalter durch den Pfad zum Speicherort der ZIP-Datei. Ersetzen Sie außerdem <app_name> durch den eindeutigen Namen Ihrer Funktions-App, und ersetzen Sie <resource_group> durch den Namen Ihrer Ressourcengruppe.

az functionapp deployment source config-zip -g <resource_group> -n \
<app_name> --src <zip_file_path>

Dieser Befehl deployt Projektdateien von der .zip-Datei in Azure in deine Funktions-App und startet die App neu.

Wenn Sie die Azure-Befehlszeilenschnittstelle auf ihrem lokalen Computer verwenden, ist <zip_file_path> der Pfad zur ZIP-Datei auf Ihrem Computer. Sie können die Azure-Befehlszeilenschnittstelle ebenfalls in der Azure Cloud Shell ausführen. Wenn Sie Cloud Shell verwenden, müssen Sie zunächst die ZIP-Datei für die Bereitstellung auf das Azure Files-Konto hochladen, das Ihrer Cloud Shell zugeordnet ist. In diesem Fall ist <zip_file_path> der Speicherort, der von Ihren Cloud Shell-Konto verwendet wird. Weitere Informationen finden Sie unter Beibehalten von Dateien in Azure Cloud Shell.

Bereitstellen einer ZIP-Datei mit REST-APIs

Sie können die REST-APIs des Bereitstellungsdiensts verwenden, um die ZIP-Datei in Ihrer App in Azure bereitzustellen. Zur Bereitstellung senden Sie eine POST-Anforderung an https://<app_name>.scm.azurewebsites.net/api/zipdeploy. Die POST-Anforderung muss die ZIP-Datei im Nachrichtentext enthalten. Die Anmeldeinformationen für die Bereitstellung für Ihre App werden in der Anforderung mithilfe von HTTP-Standardauthentifizierung bereitgestellt. Weitere Informationen finden Sie in der .zip push deployment reference (Referenz zur ZIP-Push-Bereitstellung).

Für die HTTP-Standardauthentifizierung benötigen Sie die Anmeldeinformationen für die App Service-Bereitstellung. Informationen zum Festlegen der Anmeldeinformationen für Ihre Bereitstellung finden Sie unter Festlegen und Zurücksetzen von Anmeldeinformationen auf Benutzerebene.

Mit cURL

Im folgenden Beispiel wird das cURL-Tool verwendet, um eine ZIP-Datei bereitzustellen. Ersetzen Sie die Platzhalter <deployment_user>, <zip_file_path> und <app_name>. Wenn Sie von cURL dazu aufgefordert werden, geben Sie das Kennwort ein.

curl -X POST -u <deployment_user> --data-binary "@<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

Diese Anforderung löst die Push-Bereitstellung aus der hochgeladenen ZIP-Datei aus. Sie können die aktuelle und vorhergegangene Bereitstellungen mithilfe des Endpunkts https://<app_name>.scm.azurewebsites.net/api/deployments überprüfen, wie im folgenden cURL-Beispiel zu sehen. Ersetzen Sie auch hier <app_name> durch den Namen Ihrer App und <deployment_user> durch den Benutzernamen Ihrer Anmeldeinformationen für die Bereitstellung.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

Asynchrone Zip-Bereitstellung

Bei der synchronen Bereitstellung erhalten Sie möglicherweise Fehler im Zusammenhang mit Verbindungstimeouts. Fügen Sie der URL ?isAsync=true hinzu, um eine asynchrone Bereitstellung durchzuführen. Sie erhalten eine Antwort, sobald die ZIP-Datei mit einer Location Kopfzeile hochgeladen wird, die auf die URL des abrufbaren Bereitstellungsstatus verweist. Beim Abrufen der URL, die im Location Header bereitgestellt wird, erhalten Sie eine HTTP 202 (angenommen) Antwort, während des Prozesses, und eine HTTP 200 (OK)-Antwort, sobald das Archiv erweitert wurde und die Bereitstellung erfolgreich abgeschlossen ist.

Microsoft Entra-Authentifizierung

Alternativ zur HTTP-Standardauthentifizierung für die ZIP-Bereitstellung kann auch eine Microsoft Entra-Identität verwendet werden. Microsoft Entra-Identität ist möglicherweise erforderlich, wenn die HTTP BASIC-Authentifizierung für die SCM-Website deaktiviert ist.

Ein gültiges Microsoft Entra-Zugriffstoken für den Benutzer oder Dienstprinzipal, der die Bereitstellung ausführt, ist erforderlich. Ein Zugriffstoken kann mit dem az account get-access-token-Befehl der Azure CLI abgerufen werden. Das Zugriffstoken wird im Authentifizierungsheader der HTTP POST-Anforderung verwendet.

curl -X POST \
    --data-binary "@<zip_file_path>" \
    -H "Authorization: Bearer <access_token>" \
    "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"

Mit PowerShell

Im folgenden Beispiel wird die ZIP-Datei mit Publish-AzWebapp hochgeladen. Ersetzen Sie die Platzhalter <group-name>, <app-name> und <zip-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

Diese Anforderung löst die Push-Bereitstellung aus der hochgeladenen ZIP-Datei aus.

Führen Sie die folgenden Befehle aus, um die aktuellen und vergangenen Bereitstellungen zu prüfen. Ersetzen Sie wieder die Platzhalter <deployment-user>, <deployment-password> und <app-name>.

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

Deployen Sie mit Bicep oder einer Vorlage für Azure Resource Manager

Sie können ein Paket als Teil einer Bicep- oder Azure Resource Manager (ARM)-Vorlagenbereitstellung in eine Flex-Consumption-App bereitstellen. Definiere eine Microsoft.Web/sites/extensions Ressource, die die Erweiterung /onedeploy verwendet und die URL des entfernten Pakets in der packageUri Eigenschaft bereitstellt.

Sie müssen die Paketdatei released-package.zipnennen. Der Functions-Host muss sowohl auf die URL des entfernten Pakets als auch auf den Bereitstellungsspeichercontainer zugreifen können. Durch das direkte Hochladen des Pakets in den Bereitstellungscontainer wird es nicht bereitgestellt.

Beispiele für Bicep- und ARM-Vorlagen finden Sie unter Definieren des Flex Consumption-Bereitstellungspakets.

Deployen mit einer Azure Resource Manager-Vorlage

Du kannst die Azure Resource Manager (ARM) Vorlage ZipDeploy-Erweiterung verwenden, um deine .zip-Datei in deine Funktions-App zu übertragen.

Beispiel für eine ZipDeploy ARM-Vorlage

Diese Vorlage enthält sowohl einen Produktions- als auch einen Staging-Slot und wird entweder auf dem einen oder auf dem anderen bereitgestellt. Typischerweise verwendet man diese Vorlage, um in den Staging-Slot zu deployen und dann zu wechseln, um das neue Zip-Paket im Produktionsslot zum Laufen zu bringen.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServiceName": {
      "type": "string"
    },
    "deployToProduction": {
      "type": "bool",
      "defaultValue": false
    },
    "slot": {
      "type": "string",
      "defaultValue": "staging"
    },
    "packageUri": {
      "type": "secureString"
    }
  },
  "resources": [
    {
      "condition": "[parameters('deployToProduction')]",
      "type": "Microsoft.Web/sites/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/ZipDeploy', parameters('appServiceName'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    },
    {
      "condition": "[not(parameters('deployToProduction'))]",
      "type": "Microsoft.Web/sites/slots/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/{1}/ZipDeploy', parameters('appServiceName'), parameters('slot'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    }
  ]
}

Für die erste Bereitstellung deployierst du direkt in den Produktionsslot. Weitere Informationen finden Sie unter Slot-Bereitstellungen.

Ausführen von Funktionen aus dem Bereitstellungspaket

Das direkte Ausführen aus dem Bereitstellungspaket überspringt das Kopieren von Dateien ins Verzeichnis wwwroot . Stattdessen bindet die Functions-Laufzeit das Paket als schreibgeschütztes Verzeichnis wwwroot ein. Dieser Ansatz:

  • Reduziert Probleme mit der Blockierung von Dateikopien.
  • Überprüft die Dateien, die in Ihrer App ausgeführt werden
  • Verbessert die Bereitstellungsleistung von Azure Resource Manager.
  • Kann die Kaltstartzeit reduzieren, insbesondere bei JavaScript-Anwendungen mit großen npm-Paketbäumen.

Flex-Consumption-Paketkonfiguration

Flex Consumption-Apps laufen standardmäßig aus einem Paket. Füge die WEBSITE_RUN_FROM_PACKAGE App-Einstellung nicht hinzu. Bereitstellungseinstellungen, einschließlich des Speichercontainers und seiner Authentifizierungsmethode, sind Eigenschaften der Funktions-App-Ressource. Weitere Informationen finden Sie unter Bereitstellung.

Premium- und dedizierte Paket-Konfiguration

Setzen Sie 1 auf WEBSITE_RUN_FROM_PACKAGE, um direkt vom lokal bereitgestellten Paket auszuführen. Die Laufzeit speichert das Paket im Ordner /home/data/SitePackages unter Windows bzw. im Ordner c:\home\data\SitePackages unter Linux.

Konfiguration des Verbrauchspakets

Der unterstützte Wert hängt vom Betriebssystem WEBSITE_RUN_FROM_PACKAGE ab:

Betriebssystem Wert Behavior
Windows 1 Die App läuft aus einem Paket im Ordner c:\home\data\SitePackages .
Linux <URL> Die App läuft vom Paket aus unter der angegebenen URL. Verwenden Sie einen privaten Azure Blob Storage-Container, auf den Sie mit einer verwalteten Identität zugreifen können.

Wichtig

Funktions-Apps, die immer noch ausgeführt werden End-of-Life v3 Laufzeit auf Linux in einem Consumption Plan laufen nach dem 30. September 2026 nicht mehr. Um Dienstunterbrechungen zu vermeiden, migrieren Sie Ihre App zur v4-Laufzeit.

Die Option zum Hosten von Funktions-Apps unter Linux in einem Verbrauchsplan wird am 30. September 2028 eingestellt. Der Linux-Verbrauchsplan erhält keine neuen Features oder Sprachversionen. Apps, die auf Windows in einem Verbrauchsplan ausgeführt werden, sind derzeit nicht betroffen. Migrieren Sie Ihre Apps zum Flex-Nutzungsplan vor dem Deaktivierungsdatum.

Überlegungen zur Paketbereitstellung

Behalte diese Anforderungen und Einschränkungen im Hinterkopf, wenn du deine Funktions-App aus einem Paket bereitstellst und ausführst:

  • Das Paket muss .zip Format verwenden. Das TAR- und das GZIP-Format werden nicht unterstützt.
  • Die maximale Paketgröße beträgt 1 GB. Die Bereitstellung verwendet temporären Speicher beim Entpacken der Projektdateien, daher muss die App auch über genügend temporären Speicherplatz verfügen. Der Verbrauchsplan bietet 500 MB temporären Speicher pro Plan.
  • Wenn du aus einem Paket heraus ausführst, sind die Dateien in wwwroot schreibgeschützt, auch im Azure-Portal.
  • Man kann den lokalen Cache nicht verwenden, wenn man von einem Paket aus läuft.
  • Setze WEBSITE_RUN_FROM_PACKAGE nicht, wenn du einen Remote-Build anforderst. Setzen Sie stattdessen SCM_DO_BUILD_DURING_DEPLOYMENT=true. Unter Linux setzen Sie ebenfalls ENABLE_ORYX_BUILD=true.
  • WEBSITE_RUN_FROM_PACKAGE funktioniert nicht mit MSDeploy. Nutze stattdessen Zip-Deployment.

Hinzufügen der Einstellung WEBSITE_RUN_FROM_PACKAGE

Es gibt mehrere Möglichkeiten zum Hinzufügen, Aktualisieren und Löschen von Function-App-Einstellungen:

Zur Durchführung von Änderungen an den Funktions-App-Einstellungen muss Ihre Funktions-App neu gestartet werden.

Wird von einem Paket ausgeführt, das durch zip-Deployment hochgeladen wurde

Legen Sie 1 vor der Bereitstellung des Pakets auf WEBSITE_RUN_FROM_PACKAGE fest. Die ZIP-Deployment-API kopiert das Paket in den Ordner SitePackages, anstatt dessen Inhalt nach wwwroot zu extrahieren. Die Bereitstellung erstellt außerdem eine packagename.txt-Datei , die das zu mountende Paket identifiziert. Nachdem die App neu gestartet ist, wird das Paket als Read-only-Verzeichnis wwwroot gemountet. Linux Consumption-Apps unterstützen diesen Einstellungswert nicht und müssen stattdessen von einer externen Paket-URL ausgeführt werden.

Wenn die Bereitstellung die App neu startet, werden aktuell ausgeführte Funktionsausführungen beendet. Für Informationen zum Schreiben von Funktionen, die Neustarts sicher verarbeiten, siehe Funktionen zustandslos schreiben.

Ausführen von einer externen Paket-URL

Verwenden Sie eine externe Paket-URL, wenn Sie die Paketspeicherung selbst verwalten müssen. Du brauchst diese Option, um ein lokal erstelltes Paket in einer Linux-Consumption-App auszuführen. Es wird bei Flex Consumption nicht unterstützt.

Note

Du kannst eine bestehende Funktions-App, die WEBSITE_RUN_FROM_PACKAGE=1 verwendet, um über eine externe Paket-URL ausgeführt zu werden, nicht ändern. Um eine externe Paket-URL zu verwenden, erstellen Sie eine neue Funktions-App und legen Sie für WEBSITE_RUN_FROM_PACKAGE die Paket-URL fest.

Verwenden Sie einen privaten Blob Storage-Container und gewähren Sie der Funktions-App den verwalteten Identitätszugriff auf das Paket. Nutze Managed Identity, da SAS-Token ablaufen und Wartung benötigen. Immer wenn du ein aktualisiertes Paket veröffentlichst, musst du die Trigger manuell synchronisieren. Wenn du das Paket an Ort und Stelle aktualisierst, ohne die URL zu ändern, starte die Funktions-App neu, bevor du die Trigger synchronisierst.

Manuell ein Paket in Azure Blob Storage hochladen

  1. Erstellen Sie ein .zip Deployment-Paket.

  2. Wechseln Sie im Azure-Portal zu Ihrem Speicherkonto.

  3. Wählen Sie unter DatenspeicherContainer aus und erstellen oder wählen Sie dann einen privaten Container.

  4. Lade das Paket in den Container hoch.

  5. Wählen Sie den hochgeladenen Blob aus und kopieren Sie dessen URL. Wenn du keine verwaltete Identität verwendest, erstelle stattdessen eine SAS-URL.

  6. Öffne in deiner Funktions-App Einstellungen, wähle Umgebungsvariablen aus und wähle dann im App-Einstellungen-TabHinzufügen.

  7. Fügen Sie eine Einstellung mit dem Namen WEBSITE_RUN_FROM_PACKAGE hinzu und geben Sie als Wert die Paket-URL an.

  8. Wende die Änderungen an, starte die App neu und synchronisiere die Trigger manuell.

Holen Sie ein Paket aus Azure Blob Storage ab, indem Sie eine verwaltete Identität verwenden

Sie können Azure Blob Storage so konfigurieren, dass Anforderungen mit der Microsoft Entra-ID autorisiert werden. Diese Konfiguration bedeutet, dass Sie anstatt einen SAS-Schlüssel mit einem Ablaufdatum zu generieren, stattdessen die verwaltete Identität der Anwendung verwenden können.

Standardmäßig wird die systemseitig zugewiesene Identität der App verwendet. Wenn Sie eine vom Benutzer zugewiesene Identität angeben möchten, können Sie die App-Einstellung WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID auf die Ressourcen-ID dieser Identität festlegen. Die Einstellung kann auch SystemAssigned als Wert akzeptieren, was dem Weglassen der Einstellung entspricht.

So ermöglichen Sie das Abrufen des Pakets unter Verwendung der Identität:

  1. Vergewissern Sie sich, dass das Blob für privaten Zugriff konfiguriert ist.

  2. Erteilen Sie der Identität die Rolle Storage-Blobdatenleser mit dem Bereich für das Paketblob. Ausführliche Informationen zum Erstellen der Rollenzuweisung finden Sie unter Zuweisen einer Azure-Rolle für den Zugriff auf Blobdaten.

  3. Legen Sie die Anwendungseinstellung WEBSITE_RUN_FROM_PACKAGE auf die Blob-URL des Pakets fest. Diese URL hat in der Regel die Form https://<storage-account-name>.blob.core.windows.net/<container-name>/<path-to-package> oder eine ähnliche.

  4. Wenn Sie eine vom Benutzer zugewiesene Identität angeben möchten, können Sie die App-Einstellung WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID auf die Ressourcen-ID dieser Identität festlegen. Die Einstellung kann auch SystemAssigned als Wert akzeptieren, obwohl dies mit dem Weglassen der Einstellung identisch ist. Eine Ressourcen-ID ist eine Standarddarstellung für eine Ressource in Azure. Für eine vom Benutzer zugewiesene verwaltete Identität wird dies sein /subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. Die Ressourcen-ID einer vom Benutzer zugewiesenen verwalteten Identität kann in den Einstellungen>Eigenschaften>ID für die vom Benutzer zugewiesene verwaltete Identität abgerufen werden.

Anpassung von Bereitstellungen

Der Bereitstellungsprozess geht von der Annahme aus, dass die ZIP-Datei, die Sie per Push übertragen, eine ausführungsbereite App enthält. Standardmäßig werden keine Anpassungen ausgeführt. Um den gleichen Buildprozess zu ermöglichen, der Ihnen bei Continuous Integration zur Verfügung steht, fügen Sie Ihren Anwendungseinstellungen Folgendes hinzu:

SCM_DO_BUILD_DURING_DEPLOYMENT=true

Wenn Sie die ZIP-basierte Push-Bereitstellung verwenden, ist diese Einstellung standardmäßig false. Der Standardwert für Bereitstellungen mithilfe von Continuous Integration ist true. Wenn Sie den Wert auf true festlegen, werden Ihre bereitstellungsbezogenen Einstellungen während der Bereitstellung verwendet. Sie können diese Einstellungen entweder als App-Einstellungen oder in einer DEPLOYMENT-Konfigurationsdatei konfigurieren, die sich im Stammordner Ihrer ZIP-Datei befindet. Weitere Informationen finden Sie unter Repository and deployment-related settings (Repository- und bereitstellungsbezogene Einstellungen) in der Bereitstellungsreferenz.

Herunterladen der Dateien Ihrer Funktionen-App

Wenn du genau das Paket brauchst, das deine App aktuell ausführt, lade es aus dem für die Deployments konfigurierten Blob Storage-Container herunter:

  1. Erweitern Sie auf Ihrer Funktions-App-Seite im Azure-PortalEinstellungen und wählen Sie dann Bereitstellungseinstellungen aus.

  2. Unter Anwendungspaket-Standort notieren Sie das Speicherkonto und den Container, die für Deployments verwendet werden.

  3. Gehe zu diesem Speicherkonto, öffne Datenspeicher und wähle dann Container aus.

  4. Wählen Sie den Bereitstellungscontainer, wählen Sie das aktuelle Paket und wählen Sie dann Herunterladen.

Das heruntergeladene Paket enthält die von dir bereitgestellten Build-App-Inhalte, die sich von deinem Quellprojekt unterscheiden können. Jede Bereitstellung überschreibt das aktuelle Paket, und der Bereitstellungscontainer liefert keine Bereitstellungsgeschichte.

Für Apps, die über CI/CD bereitgestellt werden, bewahren Sie das Quellprojekt in der Versionsverwaltung auf und behalten Sie einsatzbereite Buildartefakte gemäß Ihrer Aufbewahrungsrichtlinie für Releases. Nutze ein gespeichertes Artefakt, um eine bestimmte Version neu zu deployen. Nutze das Paket im Deployment-Container, wenn du genau das Paket brauchst, das die App aktuell ausführt, oder wenn das ursprüngliche Artefakt nicht mehr verfügbar ist.

Herunterladen der Dateien Ihrer Funktionen-App

Wenn Sie Ihre Funktionen mithilfe des Editors im Azure-Portal erstellt haben, können Sie Ihr vorhandenes Funktions-App-Projekt auf eine der folgenden Arten als ZIP-Datei herunterladen:

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie dann zu Ihrer Funktions-App.

  2. Wählen Sie auf der Registerkarte Übersicht den Befehl App-Inhalt herunterladen aus. Wählen Sie Ihre Downloadoptionen und anschließend Herunterladen aus.

Screenshot der Azure-Portalseite zum Herunterladen des Funktions-App-Projekts.

Die heruntergeladene ZIP-Datei weist das richtige Format auf, um mithilfe der ZIP-Push-Bereitstellung wieder in Ihrer Funktions-App veröffentlicht zu werden. Beim Herunterladen im Portal können auch die Dateien hinzugefügt werden, die zum Öffnen der Funktionen-App direkt in Visual Studio erforderlich sind.

Für Apps, die über CI/CD bereitgestellt werden, bewahren Sie das Quellprojekt in der Versionsverwaltung auf und behalten Sie einsatzbereite Buildartefakte gemäß Ihrer Aufbewahrungsrichtlinie für Releases. Ein Quellarchiv, das aus einem Repository heruntergeladen wurde, ist kein Bereitstellungspaket. Nutzen Sie Ihren Deployment-Workflow, um das Projekt zu erstellen und zu deployen.