Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird die Unterstützung veranschaulicht, die Azure Functions für containerisierte Funktions-Apps bereitstellt, die in einer Azure-Container-Apps-Umgebung ausgeführt werden. Weitere Informationen finden Sie unter Azure Container Apps-Hosting von Azure Functions.
Important
Eine neue Hostingmethode zum direkten Ausführen von Azure Functions in Azure-Container-Apps ist jetzt verfügbar. Siehe Unterstützung nativer Azure-Funktionen in Azure-Container-Apps. Mit dieser Integration können Sie die vollständigen Features und Funktionen von Azure-Container-Apps verwenden. Außerdem profitieren Sie von dem Programmiermodell der Funktionen und der Einfachheit der automatischen Skalierung, die von Azure Functions bereitgestellt wird.
Wir empfehlen diesen Ansatz für die meisten neuen Workloads. Weitere Informationen finden Sie unter Azure Functions in Azure Container Apps.
In diesem Artikel wird die Unterstützung veranschaulicht, die Azure Functions für Funktions-Apps bereitstellt, die in Linux-Containern ausgeführt werden.
Wählen Sie oben in diesem Artikel die Hostingumgebung für Ihre containerisierte Funktions-App aus.
Wenn Sie direkt einsteigen möchten, erfahren Sie im folgenden Artikel, wie Sie Ihre erste Funktion in einem Linux-Container erstellen und das Image aus einer Containerregistrierung in einem unterstützten Azure-Hostingdienst bereitstellen:
Erstellen Ihrer ersten Azure Functions-Container in Azure Container Apps
Weitere Informationen zu Bereitstellungen in Azure Container Apps finden Sie unter Azure Container Apps-Hosting von Azure Functions.
Important
In diesem Artikel wird derzeit gezeigt, wie Sie mithilfe einer Verbindungszeichenfolge eine Verbindung mit dem Standardspeicherkonto herstellen. Um die beste Sicherheit zu gewährleisten, erstellen Sie stattdessen eine verwaltete identitätsbasierte Verbindung mit Azure Storage mithilfe der Microsoft Entra-Authentifizierung. Weitere Informationen finden Sie unter Verbindungen.
Erstellen containerisierter Funktions-Apps
Mit Functions können Sie Ihre Funktions-Apps ganz einfach als Linux-Container bereitstellen und ausführen, die Sie erstellen und verwalten. Functions verwaltet eine Reihe von sprachspezifischen Basisimages, die Sie beim Erstellen containerisierter Funktions-Apps verwenden können.
Important
Wenn Sie eigene Container erstellen, müssen Sie das Basisimage Ihres Containers auf das neueste unterstützte Basisimage aktualisieren. Unterstützte Basisimages für Azure Functions sind sprachspezifisch. Siehe die Basisimage-Repositorys von Azure Functions.
Das Functions-Team ist bestrebt, monatliche Updates für diese Basisimages zu veröffentlichen. Regelmäßige Updates umfassen die aktuellen Updates der Nebenversion und Sicherheitsfixes für Functions-Runtime und -Sprachen. Sie sollten Ihren Container regelmäßig anhand des neuesten Basisimages aktualisieren und die aktualisierte Version Ihres Containers erneut bereitstellen. Weitere Informationen finden Sie unter Verwalten von benutzerdefinierten Containern.
Ein vollständiges Beispiel zum Erstellen der lokalen containerisierten Funktions-App über die Befehlszeile und das Veröffentlichen des Images in einer Containerregistrierung finden Sie unter Erstellen einer Funktions-App in einem lokalen Linux-Container.
Generieren des Dockerfile
Functions-Tools bieten eine Docker-Option, die ein Dockerfile mit Ihrem Funktionscodeprojekt generiert. Sie können diese Datei mit Docker verwenden, um Ihre Funktionen in einem Container zu erstellen, der vom richtigen Basisimage abgeleitet ist, das Sprache und Version enthält.
Die Art und Weise, wie Sie ein Dockerfile erstellen, hängt davon ab, wie Sie Ihr Projekt erstellen.
Wenn Sie ein Functions-Projekt mit Azure Functions Core Tools erstellen, schließen Sie die Option
--dockerein, wenn Sie den Befehlfunc initausführen, wie im folgenden Beispiel gezeigt:func init --dockerSie können einem vorhandenen Projekt auch ein Dockerfile hinzufügen, indem Sie die Option
--docker-onlyverwenden, wenn Sie den Befehlfunc initin einem vorhandenen Projektordner ausführen, wie im folgenden Beispiel gezeigt:func init --docker-only
Ein vollständiges Beispiel finden Sie unter Erstellen einer Funktions-App in einem lokalen Linux-Container.
Erstellen Ihrer Funktions-App in einem Container
Mit einer von Functions generierten Dockerfile-Datei in Ihrem Codeprojekt können Sie Docker verwenden, um die containerisierte Funktions-App auf Ihrem lokalen Computer zu erstellen. Der folgende docker build-Befehl erstellt ein Image Ihrer containerisierten Funktionen aus dem Projekt im lokalen Verzeichnis:
docker build --tag <DOCKER_ID>/<IMAGE_NAME>:v1.0.0 .
Ein Beispiel zum Erstellen des Containers finden Sie unter Erstellen und lokales Testen des Containerimages.
Aktualisieren eines Images in der Registrierung
Wenn Sie Änderungen am Funktionscodeprojekt vornehmen oder auf das neueste Basisimage aktualisieren müssen, erstellen Sie den Container lokal neu. Veröffentlichen Sie das aktualisierte Image erneut in der ausgewählten Containerregistrierung. Der folgende Befehl erstellt das Image aus dem Stammordner mit einer aktualisierten Versionsnummer neu und pusht es in Ihre Registrierung:
az acr build --registry <REGISTRY_NAME> --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.1 .
Ersetzen Sie <REGISTRY_NAME> durch Ihre Containerregistrierungsinstanz und <LOGIN_SERVER> durch den Namen des Anmeldeservers.
Aktualisieren Sie eine vorhandene Bereitstellung, um das neue Image zu verwenden. Sie können die Funktions-App aktualisieren, um das neue Image entweder über die Azure CLI oder im Azure-Portal zu verwenden:
az functionapp config container set --image <IMAGE_NAME> --registry-password <SECURE_PASSWORD>--registry-username <USER_NAME> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
In diesem Beispiel ist <IMAGE_NAME> der vollständige Name des neuen Images mit Versionsangabe. Für private Registrierungen müssen Sie einen Benutzernamen und ein Kennwort angeben. Speichern Sie diese Anmeldeinformationen sicher.
Sie sollten auch die Aktivierung von Continuous Deployment in Erwägung ziehen.
Erstellen einer containerisierten Funktions-App mithilfe des Azure-Portals
Wenn Sie eine Funktions-App im Azure-Portal erstellen, können Sie die Funktions-App aus einem Image in einer Containerregistrierung bereitstellen. Informationen zum Erstellen einer containerisierten Funktions-App in einer Containerregistrierung finden Sie unter Erstellen Ihrer Funktions-App in einem Container.
In den folgenden Schritten wird eine vorhandene containerisierte Funktions-App aus einer Containerregistrierung erstellt und bereitgestellt.
Klicken Sie im Menü des Azure-Portals oder auf der Startseite auf Ressource erstellen.
Wählen Sie auf der Seite "Neu " die Option "Web>Function App" aus.
Wählen Sie unter "Hostingoption auswählen" die Option "Funktionen Premium>auswählen" aus.
Diese Aktion erstellt eine Funktions-App, die von Azure Functions im Premium-Plan gehostet wird, die die dynamische Skalierung unterstützt. Sie können sich auch für die Ausführung in einem App Service-Plan entscheiden, aber bei diesem dedizierten Plan müssen Sie die Skalierung Ihrer Funktions-App verwalten.
Verwenden Sie auf der Seite „Grundlagen“ die Funktions-App-Einstellungen, wie in der folgenden Tabelle angegeben.
Setting Vorgeschlagener Wert Description Subscription Ihr Abonnement Das Abonnement, unter dem Sie Ihre Funktions-App erstellen. Ressourcengruppe myResourceGroup Der Name der neuen Ressourcengruppe, in der Sie Ihre Funktions-App erstellen. Sie sollten eine Ressourcengruppe erstellen, da beim Erstellen neuer Funktions-Apps in einer vorhandenen Ressourcengruppe bekannte Einschränkungen gelten. Name der Funktions-App Ein App-Name Der Name, der Ihre neue Funktionen-App bezeichnet Gültige Zeichen sind a-z(Groß-/Kleinschreibung nicht beachtet),0-9und-.Sicherer eindeutiger Standardhostname Enabled Aktivieren Sie dieses Feature, damit Sie sich keine Gedanken über Domänennamenkonflikte machen müssen, unabhängig vom App-Namen. Möchten Sie Code oder ein Containerimage bereitstellen? Containerimage Stellen Sie eine containerisierte Funktions-App aus einer Registrierung bereit. Informationen zum Erstellen einer Funktions-App in der Registrierung finden Sie unter Erstellen einer Funktions-App in einem lokalen Linux-Container. Region Bevorzugte Region Wählen Sie eine Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, auf die Ihre Funktionen zugreifen können. Linux-Plan Neuer Plan (Standard) Erstellt einen neuen Premium-Plan zum Hosten Ihrer App. Sie können auch einen vorhandenen Premium-Plan auswählen. Tarif Elastic Premium EP1 EP1ist der kostengünstigste Plan. Sie können bei Bedarf einen umfangreicheren Plan auswählen.Zonenredundanz Disabled Sie benötigen dieses Feature nicht in einer Nichtproduktions-App. Akzeptieren Sie die Standardoptionen zum Erstellen eines neuen Speicherkontos auf der Registerkarte " Speicher " und einer neuen Application Insight-Instanz auf der Registerkarte "Überwachung ". Sie können auch ein vorhandenes Speicherkonto oder eine Application Insights-Instanz verwenden.
Wählen Sie Bewerten + erstellen aus, um die App-Konfigurationsauswahl zu überprüfen.
Überprüfen Sie auf der Seite Bewerten + erstellen Ihre Einstellungen, und wählen Sie dann Erstellen aus, um die Funktions-App mithilfe eines Standard-Basisimages bereitzustellen.
Nachdem Ihre Funktions-App-Ressource erstellt wurde, wählen Sie "Zur Ressource wechseln" aus. Wählen Sie auf der Seite der Funktions-App die Option Bereitstellungscenter aus.
Im Bereitstellungscenter können Sie Ihre Containerregistrierung als Quelle für das Image verbinden. Sie können auch GitHub Actions oder Azure-Pipelines aktivieren, um eine solidere kontinuierliche Bereitstellung von Updates für Ihren Container in der Registrierung zu ermöglichen.
Erstellen einer containerisierten Funktions-App mithilfe des Azure-Portals
Wenn Sie eine in Container-Apps gehostete Funktions-App im Azure-Portal erstellen, können Sie ihre Funktions-App aus einem Image in einer Containerregistrierung bereitstellen. Informationen zum Erstellen einer containerisierten Funktions-App in einer Containerregistrierung finden Sie unter Erstellen Ihrer Funktions-App in einem Container.
In den folgenden Schritten wird eine vorhandene containerisierte Funktions-App aus einer Containerregistrierung erstellt und bereitgestellt.
Klicken Sie im Menü des Azure-Portals oder auf der Startseite auf Ressource erstellen.
Wählen Sie auf der Seite "Neu " die Option "Web>Function App" aus.
Wählen Sie unter Hostingoption auswählen die Option Container-Apps>Auswählen aus.
Verwenden Sie auf der Seite „Grundlagen“ die Funktions-App-Einstellungen, wie in der folgenden Tabelle angegeben.
Setting Vorgeschlagener Wert Description Subscription Ihr Abonnement Das Abonnement, unter dem Sie Ihre Funktions-App erstellen. Ressourcengruppe myResourceGroup Der Name der neuen Ressourcengruppe, in der Sie Ihre Funktions-App erstellen. Sie sollten eine Ressourcengruppe erstellen, da beim Erstellen neuer Funktions-Apps in einer vorhandenen Ressourcengruppe bekannte Einschränkungen gelten. Name der Funktions-App Eindeutiger Name* Der Name, der Ihre neue Funktionen-App bezeichnet Gültige Zeichen sind a-z(Groß-/Kleinschreibung nicht beachtet),0-9und-.Region Bevorzugte Region Wählen Sie eine Region in Ihrer Nähe oder in der Nähe anderer Dienste aus, auf die Ihre Funktionen zugreifen können. *App-Name muss innerhalb der Azure-Container-Apps-Umgebung eindeutig sein.
Akzeptieren Sie weiterhin auf der Seite "Grundlagen" die vorgeschlagene neue Umgebung für die Azure-Container-Apps-Umgebung. Die neue Standardumgebung wird unter Verbrauch + dediziert mit dem Standardworkloadprofil und ohne Zonenredundanz erstellt, wodurch die Kosten minimiert werden. Weitere Informationen finden Sie unter Azure Container Apps-Hosting von Azure Functions.
Sie können auch eine vorhandene Container Apps-Umgebung auswählen. Um eine benutzerdefinierte Umgebung zu erstellen, wählen Sie stattdessen "Neu erstellen" aus. Auf der Seite Container Apps-Umgebung erstellen können Sie nicht standardmäßige Workloadprofile hinzufügen oder Zonenredundanz aktivieren. Weitere Informationen zu Umgebungen finden Sie unter Azure Container Apps-Umgebungen.
Wählen Sie die Registerkarte "Container " aus, und deaktivieren Sie die Option "Schnellstartimage verwenden". Andernfalls wird die Funktions-App über das Basisimage für Ihre Funktions-App-Sprache bereitgestellt.
Wählen Sie Ihren Bildtyp, öffentlich oder privat aus. Wählen Sie "Privat" aus, wenn Sie azure Container Registry oder eine andere private Registrierung verwenden. Geben Sie den Namen des Bilds an, einschließlich des Registrierungspräfixes. Wenn Sie eine private Registrierung verwenden, geben Sie die Anmeldeinformationen für die Authentifizierung der Imageregistrierung an. Die Einstellung "Öffentlich" unterstützt nur Bilder, die öffentlich im Docker Hub gespeichert sind.
Wählen Sie unter Containerressourcenzuordnung die gewünschte Anzahl von CPU-Kernen und verfügbaren Arbeitsspeicher aus. Wenn Ihre Umgebung andere Workloadprofile hinzugefügt hat, können Sie ein nicht standardmäßiges Workloadprofil auswählen. Die Auswahl auf dieser Seite wirkt sich auf die Kosten des Hostings Ihrer App aus. Sehen Sie sich die Seite mit der Preisübersicht von Container Apps, um Ihre potenziellen Kosten zu schätzen.
Wählen Sie Bewerten + erstellen aus, um die App-Konfigurationsauswahl zu überprüfen.
Überprüfen Sie auf der Seite Überprüfen + erstellen Ihre Einstellungen, und wählen Sie dann Erstellen aus, um die Funktions-App bereitzustellen und Ihr Containerimage aus der Registrierung bereitzustellen.
Arbeiten mit Images in Azure Functions
Wenn Ihr Funktions-App-Container über eine Registrierung bereitgestellt wird, verwaltet Functions Informationen zum Quellimage.
Verwenden Sie die folgenden Befehle, um Daten zum Image abzurufen oder das verwendete Bereitstellungsimage zu ändern:
az functionapp config container show: Gibt Informationen zum für die Bereitstellung verwendeten Image zurück.az functionapp config container set: Ändert die Registrierungseinstellungen oder aktualisiert das für die Bereitstellung verwendete Image, wie im vorherigen Beispiel gezeigt.
Verwendung von Lastprofilen für Container-Anwendungen
Workloadprofile sind Funktionen von Container Apps, mit deren Hilfe Sie Ihre Bereitstellungsressourcen besser steuern können. Azure Functions in Azure Container Apps unterstützt auch Workloadprofile. Weitere Informationen finden Sie unter Workloadprofile in Azure Container Apps.
Sie können auch die Menge der CPU- und Arbeitsspeicherressourcen festlegen, die Ihrer App zugeordnet sind.
Sie können sowohl Workloadprofile als auch Ressourcenzuordnungen mithilfe der Azure CLI oder im Azure-Portal erstellen und verwalten.
Sie aktivieren Workloadprofile, wenn Sie Ihre Container-App-Umgebung erstellen. Ein Beispiel finden Sie unter Erstellen einer Container-App in einem Profil.
Sie können Profile in Ihrer Umgebung hinzufügen, bearbeiten und löschen. Ein Beispiel finden Sie unter Hinzufügen von Profilen.
Wenn Sie eine containerisierte Funktions-App in einer Umgebung erstellen, in der Workloadprofile aktiviert sind, sollten Sie auch das Profil angeben, in dem sie ausgeführt werden soll. Geben Sie das Profil mit dem Parameter --workload-profile-name des Befehls az functionapp create an, wie in diesem Beispiel:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime <LANGUAGE_STACK> --image <IMAGE_URI> --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
**
In dem Befehl az functionapp create gibt der --environment-Parameter die Container-Apps-Umgebung an und der --image-Parameter das zu verwendende Image für die Function-App. Ersetzen Sie in diesem Beispiel <STORAGE_NAME> durch den Namen, den Sie im vorherigen Abschnitt für das Speicherkonto verwendet haben. Ersetzen Sie <APP_NAME> außerdem durch einen Namen, der für Sie in der Umgebung eindeutig ist.
Wenn Sie die Ressourcen festlegen möchten, die Ihrer App zugeordnet sind, ersetzen Sie <CPU_COUNT> durch die gewünschte Anzahl virtueller CPUs, die zwischen 0,5 und der vom Profil maximal zugelassenen Anzahl liegen muss. Wählen Sie für <MEMORY_SIZE> eine dedizierte Speichermenge, die zwischen 1 GB und der vom Profil maximal zugelassenen Menge liegen muss.
Sie können den Befehl "az functionapp container set " verwenden, um die zugeordneten Ressourcen und das von Ihrer App verwendete Workloadprofil zu verwalten.
az functionapp container set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --workload-profile-name <PROFILE_NAME> --cpu <CPU_COUNT> --memory <MEMORY_SIZE>
Verwenden von Anwendungseinstellungen
In Azure Functions können Sie mit Anwendungseinstellungen für containerisierte Funktions-Apps auf die übliche Weise arbeiten. Weitere Informationen finden Sie unter Verwenden von Anwendungseinstellungen.
Tip
Standardmäßig überwacht eine containerisierte Funktions-App Port 80 auf eingehende Anforderungen. Wenn Ihre App einen anderen Port verwenden muss, verwenden Sie die WEBSITES_PORT Anwendungseinstellung , um diesen Port zu ändern.
Aktivieren von Continuous Deployment in Azure
Wenn Sie Ihre containerisierte Funktions-App in Azure Container Apps hosten, gibt es zwei Möglichkeiten, die kontinuierliche Bereitstellung aus einem Quellcode-Repository einzurichten:
Sie sind derzeit nicht in der Lage, Container basierend auf Imageänderungen kontinuierlich in einer Containerregistrierung bereitzustellen. Sie müssen stattdessen diese Pipelines für die kontinuierliche Bereitstellung (Continuous Deployment) auf Basis des Quellcodes verwenden.
Aktivieren von Continuous Deployment in Azure
Important
Webhook-basierte Bereitstellung wird derzeit nicht unterstützt, wenn Ihr Container in einem Elastic Premium-Plan ausgeführt wird. Wenn Sie die in diesem Abschnitt beschriebene fortlaufende Bereitstellungsmethode verwenden müssen, stellen Sie stattdessen Ihren Container in einem App Service-Plan bereit. Wenn Sie in einem Elastic Premium-Plan ausgeführt werden, müssen Sie Ihre Anwendung bei jeder Aktualisierung Ihres Containers im Repository manuell neu starten.
Sie können die kontinuierliche Bereitstellung auch aus einem Quellcode-Repository mithilfe von Azure-Pipelines oder GitHub-Aktionen konfigurieren.
Sie können Azure Functions aktivieren, um Ihre Bereitstellung eines Images jeweils automatisch zu aktualisieren, wenn Sie das Bild in der Registrierung aktualisieren.
- Verwenden Sie den folgenden Befehl, um Continuous Deployment zu aktivieren und die Webhook-URL abzurufen:
az functionapp deployment container config --enable-cd --query CI_CD_URL --output tsv --name <APP_NAME> --resource-group AzureFunctionsContainers-rg
Der Konfigurationsbefehl "az functionapp deployment container config" ermöglicht die kontinuierliche Bereitstellung und gibt die Webhook-URL der Bereitstellung zurück. Sie können diese URL jederzeit abrufen, indem Sie den Befehl "az functionapp deployment container show-cd-url " verwenden.
Ersetzen Sie wie zuvor <APP_NAME> durch den Namen Ihrer Funktions-App.
Kopieren Sie die Webhook-URL der Bereitstellung in die Zwischenablage.
Öffnen Sie Docker Hub, melden Sie sich an, und wählen Sie Repositorys auf der Navigationsleiste aus. Suchen Sie das Bild, wählen Sie die Registerkarte "Webhooks " aus, geben Sie einen Webhook-Namen an, fügen Sie Ihre URL in die Webhook-URL ein, und wählen Sie dann " Erstellen" aus.
Nachdem der Webhook festgelegt wurde, wird Ihr Image von Azure Functions jeweils erneut bereitgestellt, wenn Sie es in Docker Hub aktualisieren.
Aktivieren von SSH-Verbindungen
SSH ermöglicht die sichere Kommunikation zwischen einem Container und einem Client. Wenn SSH aktiviert ist, können Sie mithilfe der erweiterten App Service-Tools (Kudu) eine Verbindung mit Ihrem Container herstellen. Azure Functions stellt ein Basisimage bereit, für das SSH bereits aktiviert ist, um das Herstellen einer Verbindung mit Ihrem Container per SSH zu vereinfachen. Sie müssen Ihre Dockerfile-Datei nur bearbeiten, dann neu erstellen und das Image erneut bereitstellen. Anschließend können Sie mit den Advanced Tools (Kudu) eine Verbindung mit dem Container herstellen.
Fügen Sie in Ihrer Dockerfile-Datei die Zeichenfolge
-appservicean das Basisimage in IhrerFROMAnweisung an, wie im folgenden Beispiel gezeigt:FROM mcr.microsoft.com/azure-functions/node:4-node18-appserviceIn diesem Beispiel wird die SSH-fähige Version des Basisimages von Node.js-Version 18 verwendet. Besuchen Sie die Azure Functions-Basisimagerepositorys, um zu überprüfen, ob Sie die neueste Version des SSH-fähigen Basisimages verwenden.
Erstellen Sie das Image neu, indem Sie den Befehl
docker buildverwenden und<DOCKER_ID>wie im folgenden Beispiel gezeigt durch Ihre Docker Hub-Konto-ID ersetzen.docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .Pushen Sie das aktualisierte Image an Docker Hub. Dies sollte deutlich weniger Zeit als der erste Pushvorgang in Anspruch nehmen. Nur die aktualisierten Segmente des Images müssen jetzt hochgeladen werden.
docker push <DOCKER_ID>/azurefunctionsimage:v1.0.0Azure Functions stellt das Bild automatisch für Ihre Funktionen-App erneut bereit. Der Vorgang findet in weniger als einer Minute statt.
Suchen Sie im Azure-Portal Ihre Funktions-App. Wählen Sie im linken Menü die Option "Entwicklungstools>SSH" aus. Klicken Sie auf Starten. Die Verbindungsherstellung könnte etwas dauern, falls das Containerimage von Azure noch aktualisiert wird.
Nachdem eine Verbindung mit Ihrem Container hergestellt wurde, können Sie den Befehl
topausführen, um die derzeit ausgeführten Prozesse anzuzeigen.
Verwandte Inhalte
Die folgenden Artikel enthalten weitere Informationen zum Bereitstellen und Verwalten von Containern: