Erstellen Sie Ihre erste Funktion auf Azure Arc (Vorschau)

In diesem Quickstart erstellen Sie ein Azure Functions-Projekt und stellen es für eine Funktions-App bereit, die auf einem Azure Arc-fähigen Kubernetes-Cluster ausgeführt wird. Weitere Informationen finden Sie unter App Service, Funktionen und Logic Apps auf Azure Arc. Dieses Szenario unterstützt nur Funktions-Apps, die auf Linux ausgeführt werden.

Hinweis

Die Unterstützung für die Ausführung von Funktionen auf einem Kubernetes-Cluster mit Azure Arc-Unterstützung befindet sich derzeit in der Vorschau.

Das Veröffentlichen von PowerShell-Funktionsprojekten in Azure Arc-fähigen Kubernetes-Clustern wird derzeit nicht unterstützt. Wenn Sie PowerShell-Funktionen in Azure Arc-fähigen Kubernetes-Clustern bereitstellen müssen, erstellen Sie Ihre Funktions-App in einem Container.

Wenn Sie den Container anpassen müssen, in dem Ihre Funktions-App ausgeführt wird, lesen Sie stattdessen Erstellen Ihrer ersten containerisierten Funktionen in Azure Arc (Vorschau).

Voraussetzungen

Auf Ihrem lokalen Computer:

Installieren von Azure Functions Core Tools

Die empfohlene Methode zum Installieren von Core Tools hängt vom Betriebssystem Ihres lokalen Entwicklungscomputers ab.

In den folgenden Schritten wird ein Windows Installer (MSI) zum Installieren der Core Tools v4.x verwendet. Weitere Informationen zu anderen paketbasierten Installationsprogrammen finden Sie in der Infodatei zu Core Tools.

Laden Sie den Core Tools-Installer basierend auf Ihrer Version von Windows herunter, und führen Sie ihn aus:

Wenn Sie zuvor das Windows-Installationsprogramm (MSI) zum Installieren von Core Tools auf Windows verwendet haben, sollten Sie die alte Version unter „Programme hinzufügen oder entfernen“ deinstallieren, bevor Sie die neuste Version installieren.

Erstellen der App Service Kubernetes-Umgebung

Bevor Sie beginnen, müssen Sie eine App Service Kubernetes-Umgebung für einen Azure Arc Kubernetes-Cluster erstellen.

Hinweis

Notieren Sie sich beim Erstellen der Umgebung sowohl den benutzerdefinierten Standortnamen als auch den Namen der Ressourcengruppe, die den benutzerdefinierten Speicherort enthält. Sie können diese Namen verwenden, um die benutzerdefinierte Standort-ID zu finden, die Sie beim Erstellen Ihrer Funktions-App in der Umgebung benötigen.

Wenn Sie die Umgebung nicht erstellt haben, wenden Sie sich an Ihren Cluster-Administrator.

Hinzufügen von Azure CLI-Erweiterungen

Starten Sie die Bash-Umgebung in Azure Cloud Shell.

Da diese CLI-Befehle noch nicht Teil des CLI-Kernsets sind, fügen Sie sie mit den folgenden Befehlen hinzu:

az extension add --upgrade --yes --name customlocation
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube

Erstellen Sie das lokale Funktions-Projekt

In Azure Functions ist ein Funktionsprojekt die Einheit für die Bereitstellung und Ausführung einer oder mehrerer einzelner Funktionen, die jeweils auf einen bestimmten Auslöser reagieren. Für alle Funktionen eines Projekts werden die gleichen lokalen Konfigurationen und Hostkonfigurationen gemeinsam genutzt. In diesem Abschnitt erstellen Sie ein Funktionsprojekt, das nur eine Funktion enthält.

  1. Führen Sie den Befehl func init wie folgt aus, um in einem Ordner mit dem Namen LocalFunctionProj ein Funktionsprojekt mit der angegebenen Runtime zu erstellen:

    func init LocalFunctionProj --dotnet
    
  2. Navigieren Sie zum Projektordner:

    cd LocalFunctionProj
    

    Dieser Ordner enthält verschiedene Dateien für das Projekt, z. B. die Konfigurationsdateien local.settings.json und host.json. Standardmäßig wird die Datei local.settings.json von der Versionskontrolle in der Datei .gitignore ausgeschlossen. Dieser Ausschluss ist darauf zurückzuführen, dass die Datei vertrauliche Informationen enthalten kann, die aus Azure heruntergeladen werden.

  3. Fügen Sie dem Projekt über den unten gezeigten Befehl eine Funktion hinzu. Hierbei ist das --name-Argument der eindeutige Name Ihrer Funktion (HttpExample), mit dem --template-Argument wird der Trigger der Funktion (HTTP) angegeben.

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

Lokales Ausführen der Funktion

  1. Führen Sie Ihre Funktion aus, indem Sie den lokalen Azure Functions-Runtimehost im Ordner LocalFunctionProj starten.

    func start
    

    Gegen Ende der Ausgabe müssen die folgenden Zeilen angezeigt werden:

    Screenshot of terminal window output when running function locally.

    Hinweis

    Sollte „HttpExample“ nicht wie oben dargestellt angezeigt werden, haben Sie den Host wahrscheinlich außerhalb des Stammordners des Projekts gestartet. Drücken Sie in diesem Fall STRG+C, um den Host zu beenden. Navigieren Sie anschließend zum Stammordner des Projekts, und führen Sie den vorherigen Befehl erneut aus.

  2. Kopieren Sie die URL Ihrer HTTP-Funktion aus dieser Ausgabe in einen Browser, und fügen Sie die Abfragezeichenfolge ?name=<YOUR_NAME> an. Die vollständige URL lautet dann z. B. http://localhost:7071/api/HttpExample?name=Functions. Im Browser sollte eine Antwortmeldung angezeigt werden, die den Wert Ihrer Abfragezeichenkette zurückgibt. Im Terminal, in dem Sie Ihr Projekt gestartet haben, wird beim Senden von Anforderungen auch die Protokollausgabe angezeigt.

  3. Wenn Sie fertig sind, drücken Sie STRG+C, und geben Sie y ein, um den Funktionshost zu beenden.

Abrufen des benutzerdefinierten Speicherorts

Um eine Funktions-App an einem benutzerdefinierten Speicherort erstellen zu können, müssen Sie Informationen zur Umgebung abrufen.

Erhalten Sie von Ihrem Cluster-Administrator die folgenden Informationen bezüglich des benutzerdefinierten Speicherorts (siehe Erstellen eines benutzerdefinierten Speicherorts).

customLocationGroup="<resource-group-containing-custom-location>"
customLocationName="<name-of-custom-location>"

Erhalten Sie die benutzerdefinierte Standort-ID für den nächsten Schritt.

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

Erstellen von Azure-Ressourcen

Bevor Sie Ihren Funktionscode in Ihrer neuen App Service Kubernetes-Umgebung bereitstellen können, müssen Sie zwei weitere Ressourcen erstellen:

  • Ein Speicherkonto. Während für diesen Artikel ein Speicherkonto erstellt wird, ist in einigen anderen Fällen möglicherweise kein Speicherkonto erforderlich. Weitere Informationen finden Sie im Artikel zu Speicherüberlegungen unter Azure Arc-aktivierte Cluster.
  • Eine Funktions-App, die den Kontext für die Ausführung Ihres Funktionscodes bereitstellt. Die Funktions-App wird in der App Service Kubernetes-Umgebung ausgeführt und Ihrem lokalen Funktionsprojekt zugeordnet. Mit einer Funktions-App können Sie Funktionen in logischen Einheiten gruppieren. Dies erleichtert die Verwaltung, Bereitstellung und Freigabe von Ressourcen.

Hinweis

Funktions-Apps werden in einer App Service Kubernetes-Umgebung mit einem dedizierten Plan (App Service) ausgeführt. Wenn Sie Ihre Funktions-App ohne vorhandenen Plan erstellen, wird der korrekte Plan für Sie erstellt.

Speicherkonto erstellen

Verwenden Sie den Befehl az storage account create, um ein Allzweck-Speicherkonto in Ihrer Ressourcengruppe und Region zu erstellen:

az storage account create --name <STORAGE_NAME> --location westeurope --resource-group myResourceGroup --sku Standard_LRS

Hinweis

In einigen Fällen ist möglicherweise kein Speicherkonto erforderlich. Weitere Informationen finden Sie im Artikel zu Speicherüberlegungen unter Azure Arc-aktivierte Cluster.

Ersetzen Sie im vorherigen Beispiel <STORAGE_NAME> durch einen Namen, der für Sie geeignet und eindeutig in Azure Storage ist. Namen dürfen nur 3 bis 24 Zeichen und ausschließlich Kleinbuchstaben enthalten. Mit Standard_LRS wird ein universelles Konto angegeben, das von Functions unterstützt wird. Der --location-Wert ist eine Azure-Standardregion.

Erstellen der Funktionen-App

Führen Sie den Befehl az functionapp create aus, um eine neue Funktions-App in der Umgebung zu erstellen.

az functionapp create --resource-group MyResourceGroup --name <APP_NAME> --custom-location <CUSTOM_LOCATION_ID> --storage-account <STORAGE_NAME> --functions-version 4 --runtime dotnet 

Ersetzen Sie in diesem Beispiel <CUSTOM_LOCATION_ID> durch die ID des benutzerdefinierten Speicherorts, den Sie für die App Service Kubernetes-Umgebung definiert haben. Ersetzen Sie auch im vorherigen Beispiel <STORAGE_NAME> durch den Namen des Kontos, das Sie im vorherigen Schritt verwendet haben, und ersetzen Sie <APP_NAME> mit einem global eindeutigen Namen, der für Sie geeignet ist.

Bereitstellen des Funktionsprojekts in Azure

Nachdem Sie Ihre Funktions-App in Azure erfolgreich erstellt haben, können Sie nun Ihr lokales Funktionsprojekt bereitstellen, indem Sie den Befehl func azure functionapp publish verwenden.

Ersetzen Sie im folgenden Beispiel <APP_NAME> durch den Namen Ihrer App.

func azure functionapp publish <APP_NAME>

Mit dem Befehl zum Veröffentlichen (publish) werden Ergebnisse wie in der folgenden (gekürzten) Ausgabe angezeigt:

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Da es einige Zeit dauern kann, bis eine vollständige Bereitstellung in einem Azure Arc-fähigen Kubernetes-Cluster abgeschlossen ist, sollten Sie den folgenden Befehl erneut ausführen, um Ihre veröffentlichten Funktionen zu überprüfen:

func azure functionapp list-functions

Aufrufen der Funktion in Azure

Da für Ihre Funktion ein HTTP-Trigger verwendet wird, führen Sie das Aufrufen durch, indem Sie per Browser eine HTTP-Anforderung an die entsprechende URL senden oder ein Tool wie curl verwenden.

Kopieren Sie die vollständige Aufruf-URL, die in der Ausgabe des Befehls zum Veröffentlichen (publish) angezeigt wird, in eine Browseradressleiste, und fügen Sie den Abfrageparameter ?name=Functions an. Im Browser sollte eine ähnliche Ausgabe wie bei der lokalen Ausführung der Funktion angezeigt werden.

The output of the function run on Azure in a browser

Nächste Schritte

Ihre Funktions-App wird nun in einem Container und einer App Service Kubernetes-Umgebung mit Azure Arc-Unterstützung ausgeführt. Sie können diese jetzt mit Azure Storage verbinden, indem Sie eine Ausgangsbindung für Queue Storage hinzufügen.