Lokale Entwicklung von Azure Functions mithilfe von Core Tools

Mit Azure Functions Core Tools können Sie Ihre Funktionen auf dem lokalen Computer entwickeln und testen. Wenn Sie bereit sind, können Sie auch Core Tools verwenden, um Ihr Codeprojekt in Azure bereitzustellen und mit Anwendungseinstellungen zu arbeiten.

Sie sehen sich die C#-Version dieses Artikels an. Stellen Sie sicher, dass Sie Ihre bevorzugte Functions-Programmiersprache zuoberst im Artikel auswählen.

Wenn Sie sofort loslegen möchten, lesen Sie den Core Tools-Schnellstartartikel.

Sie sehen sich die Java-Version dieses Artikels an. Stellen Sie sicher, dass Sie Ihre bevorzugte Functions-Programmiersprache zuoberst im Artikel auswählen.

Wenn Sie sofort loslegen möchten, lesen Sie den Core Tools-Schnellstartartikel.

Sie sehen sich die JavaScript-Version dieses Artikels an. Stellen Sie sicher, dass Sie Ihre bevorzugte Functions-Programmiersprache zuoberst im Artikel auswählen.

Wenn Sie sofort loslegen möchten, lesen Sie den Core Tools-Schnellstartartikel.

Sie sehen sich die PowerShell-Version dieses Artikels an. Stellen Sie sicher, dass Sie Ihre bevorzugte Functions-Programmiersprache zuoberst im Artikel auswählen.

Wenn Sie sofort loslegen möchten, lesen Sie den Core Tools-Schnellstartartikel.

Sie sehen sich die Python-Version dieses Artikels an. Stellen Sie sicher, dass Sie Ihre bevorzugte Functions-Programmiersprache zuoberst im Artikel auswählen.

Wenn Sie sofort loslegen möchten, lesen Sie den Core Tools-Schnellstartartikel.

Sie sehen sich die TypeScript-Version dieses Artikels an. Stellen Sie sicher, dass Sie Ihre bevorzugte Functions-Programmiersprache zuoberst im Artikel auswählen.

Wenn Sie sofort loslegen möchten, lesen Sie den Core Tools-Schnellstartartikel.

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.

Hilfe zu versionsbezogenen Problemen finden Sie unter Core Tools-Versionen.

Erstellen Ihres lokalen Projekts

Wichtig

Für Python müssen Sie Core Tools-Befehle in einer virtuellen Umgebung ausführen. Weitere Informationen finden Sie unter Schnellstart: Erstellen einer Python-Funktion über die Befehlszeile in Azure.

Führen Sie im Terminalfenster oder an einer Eingabeaufforderung den folgenden Befehl aus, um ein Projekt im Ordner MyProjFolder zu erstellen:

func init MyProjFolder --worker-runtime dotnet-isolated 

Standardmäßig erstellt dieser Befehl ein Projekt, das prozessintern mit dem Functons-Host in der aktuellen LTS-Version (Long-Term Support) von .NET Core ausgeführt wird. Mithilfe der Option --target-framework können Sie eine bestimmte unterstützte Version von .NET verwenden, einschließlich .NET Framework. Weitere Informationen finden Sie in der Referenz zu func init.

Einen Vergleich zwischen den beiden .NET-Prozessmodellen finden Sie im Artikel zum Vergleich des Prozessmodus.

Java verwendet einen Maven-Archetyp, um das lokale Projekt zusammen mit der ersten durch HTTP ausgelösten Funktion zu erstellen. Anstatt func init und func new zu verwenden, sollten Sie die Schritte im Schnellstart für die Befehlszeile ausführen.

func init MyProjFolder --worker-runtime javascript --model V4

Mit diesem Befehl wird ein JavaScript-Projekt erstellt, das die gewünschte Programmiermodellversion verwendet.

func init MyProjFolder --worker-runtime typescript --model V4

Mit diesem Befehl wird ein TypeScript-Projekt erstellt, das die gewünschte Programmiermodellversion verwendet.

func init MyProjFolder --worker-runtime powershell
func init MyProjFolder --worker-runtime python --model V2

Mit diesem Befehl wird ein Python-Projekt erstellt, das die gewünschte Programmiermodellversion verwendet.

Wenn Sie func init ohne die Option --worker-runtime ausführen, werden Sie aufgefordert, Ihre Projektsprache auszuwählen. Weitere Informationen zu den verfügbaren Optionen für den Befehl func init finden Sie in der Referenz zu func init.

Erstellen einer Funktion

Um Ihrem Projekt eine Funktion hinzuzufügen, führen Sie den func new-Befehl mit der --template-Option aus, um Ihre Triggervorlage auszuwählen. Im folgenden Beispiel wird ein HTTP-Trigger mit Namen MyHttpTrigger erstellt:

func new --template "Http Trigger" --name MyHttpTrigger

In diesem Beispiel wird ein Queue Storage-Trigger mit dem Namen MyQueueTrigger erstellt:

func new --template "Azure Queue Storage Trigger" --name MyQueueTrigger

Die folgenden Überlegungen gelten beim Hinzufügen neuer Funktionen:

  • Wenn Sie func new ohne die Option --template ausführen, werden Sie aufgefordert, eine Vorlage auszuwählen.

  • Mit dem Befehl func templates list können Sie sich die vollständige Liste der verfügbaren Vorlagen für Ihre Programmiersprache anzeigen lassen.

  • Wenn Sie einen Trigger hinzufügen, der eine Verbindung mit einem Dienst herstellt, müssen Sie auch eine Anwendungseinstellung hinzufügen, die auf eine Verbindungszeichenfolge oder eine verwaltete Identität in der Datei local.settings.json verweist. Die Verwendung der App-Einstellungen auf diese Weise verhindert, dass Sie Anmeldeinformationen in Ihren Code einbetten müssen. Weitere Informationen finden Sie unter Lokales Arbeiten mit App-Einstellungen.

  • Core Tools fügt ihrem C#-Projekt auch einen Verweis auf die spezifische Bindungserweiterung hinzu.

Weitere Informationen zu den verfügbaren Optionen für den Befehl func new finden Sie in der Referenz zu func new.

Hinzufügen einer Bindung zu Ihrer Funktion

Functions bietet eine Reihe dienstspezifischer Eingabe- und Ausgabebindungen, die es Ihrer Funktion erleichtern, eine Verbindung mit anderen Azure-Diensten herzustellen, ohne die dienstspezifischen Client-SDKs verwenden zu müssen. Weitere Informationen finden Sie unter Konzepte für Azure Functions-Trigger und -Bindungen.

Um einer vorhandenen Funktion Eingabe- oder Ausgabebindungen hinzuzufügen, müssen Sie die Funktionsdefinition manuell aktualisieren.

Das folgende Beispiel zeigt die Funktionsdefinition nach dem Hinzufügen einer Queue Storage-Ausgabebindung zu einer von HTTP ausgelösten Funktion:

Da eine per HTTP ausgelöste Funktion auch eine HTTP-Antwort zurückgibt, gibt die Funktion ein MultiResponse-Objekt zurück, das sowohl die HTTP- als auch die Warteschlangenausgabe darstellt.

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

Das folgende Beispiel ist die Definition des MultiResponse-Objekts, das die Ausgabebindung enthält:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Wenn Sie dieses Beispiel auf Ihr eigenes Projekt anwenden, müssen Sie möglicherweise HttpRequest zu HttpRequestData und IActionResult zu HttpResponseData ändern, je nachdem, ob Sie die ASP.NET Core-Integration verwenden oder nicht.

Meldungen werden an die Warteschlange gesendet, wenn die Funktion abgeschlossen ist. Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von Ihrem Prozessmodell ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Beispielbindung für Node.js-Modell v4 noch nicht verfügbar.

Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von der Version Ihres Node.js-Modells ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von der Version Ihres Python-Modells ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Beispielbindung für Node.js-Modell v4 noch nicht verfügbar.

Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von der Version Ihres Node.js-Modells ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Die folgenden Überlegungen gelten beim Hinzufügen von Bindungen zu einer Funktion:

  • Wenn Sie Bindungen hinzufügen, die eine Verbindung mit einem Dienst herstellen, müssen Sie auch eine Anwendungseinstellung hinzufügen, die auf eine Verbindungszeichenfolge oder eine verwaltete Identität in der Datei local.settings.json verweist. Weitere Informationen finden Sie unter Lokales Arbeiten mit App-Einstellungen.
  • Wenn Sie eine unterstützte Bindung hinzufügen, sollte die Erweiterung bereits installiert sein, wenn Ihre App das Erweiterungspaket verwendet. Weitere Informationen finden Sie unter Erweiterungspakete.
  • Wenn Sie eine Bindung hinzufügen, die eine neue Bindungserweiterung erfordert, müssen Sie auch einen Verweis auf diese spezifische Bindungserweiterung in Ihrem C#-Projekt hinzufügen.

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Starten der Functions-Runtime

Bevor Sie die Funktionen in Ihrem Projekt ausführen oder debuggen können, müssen Sie den Functions-Host aus dem Stammverzeichnis Ihres Projekts starten. Der Host aktiviert Trigger für alle Funktionen im Projekt. Verwenden Sie diesen Befehl, um die lokale Runtime zu starten:

mvn clean package 
mvn azure-functions:run
func start
npm install
npm start     

Bei seinem Start gibt der Functions-Host eine Liste von Funktionen im Projekt aus, einschließlich der URLs aller von HTTP ausgelösten Funktionen, wie in diesem Beispiel:

Found the following functions:
Host.Functions.MyHttpTrigger

Job host started
Http Function MyHttpTrigger: http://localhost:7071/api/MyHttpTrigger

Beachten Sie die folgenden Überlegungen, wenn Sie Ihre Funktionen lokal ausführen:

  • Standardmäßig wird Autorisierung für HTTP-Endpunkte lokal nicht erzwungen. Das bedeutet, dass alle lokalen HTTP-Anforderungen wie authLevel = "anonymous" behandelt werden. Weitere Informationen finden Sie im Artikel über HTTP-Bindungen. Sie können die --enableAuth-Option verwenden, um eine Autorisierung zu erfordern, wenn Sie lokal ausgeführt wird. Weitere Informationen finden Sie unter func start.

  • Sie können den lokalen Azurite-Emulator verwenden, um Funktionen, die Zugriff auf Azure Storage-Dienste (Queue Storage, Blob Storage und Table Storage) benötigen, lokal auszuführen, ohne eine Verbindung mit diesen Diensten in Azure herstellen zu müssen. Achten Sie bei der Verwendung der lokalen Emulation darauf, dass Sie Azurite starten, bevor Sie den lokalen Host (func.exe) starten. Weitere Informationen finden Sie unter Emulation für lokalen Speicher.

  • Sie können die lokale Azurite-Emulation verwenden, um den Speicherbedarf des Python v2 Workers zu decken.
  • Sie können Nicht-HTTP-Funktionen lokal auslösen, ohne eine Verbindung mit einem Livedienst herzustellen. Weitere Informationen finden Sie unter Ausführen einer lokalen Funktion.

  • Wenn Sie Ihre Application Insights-Verbindungsinformationen in die Datei „local.settings.json“ einschließen, werden lokale Protokolldaten in die spezifische Application Insights-Instanz geschrieben. Um lokale Telemetriedaten von Produktionsdaten getrennt zu halten, sollten Sie eine separate Application Insights-Instanz für die Entwicklung und Tests verwenden.

  • Bei Verwendung der Version 1.x der Core Tools verwenden Sie stattdessen den Befehl func host start, um die lokale Runtime zu starten.

Ausführen einer lokalen Funktion

Wenn Ihr lokaler Functions-Host (func.exe) ausgeführt wird, können Sie jetzt einzelne Funktionen auslösen, um Ihren Funktionscode auszuführen und zu debuggen. Wie Sie eine einzelne Funktion ausführen, hängt vom zugehörigen Triggertyp ab.

Hinweis

Beispiele in diesem Thema verwenden das Tool cURL, um HTTP-Anforderungen vom Terminal oder einer Eingabeaufforderung zu senden. Sie können ein Tool Ihrer Wahl verwenden, um HTTP-Anforderungen an den lokalen Server zu senden. Das Tool cURL ist auf Linux-basierten Systemen sowie im Windows 10 Build 17063 und höher standardmäßig verfügbar. Unter einem älteren Windows müssen Sie das cURL-Tool erst herunterladen und installieren.

HTTP-Trigger werden gestartet, indem eine HTTP-Anforderung an den lokalen Endpunkt und Port gemäß der Ausgabe von „func.exe“ gesendet wird. Diese weist folgendes allgemeines Format auf:

http://localhost:<PORT>/api/<FUNCTION_NAME>

In dieser URL-Vorlage ist <FUNCTION_NAME> der Name der Funktion oder Route und <PORT> ist der lokale Port, an dem func.exe lauscht.

Der folgende cURL-Befehl löst beispielsweise die Schnellstart-Funktion MyHttpTrigger von einer GET-Anforderung aus, wobei der Name-Parameter in der Abfragezeichenfolge übergeben wird:

curl --get http://localhost:7071/api/MyHttpTrigger?name=Azure%20Rocks

Dieses Beispiel ist die gleiche Funktion, die von einer POST-Anforderung aufgerufen wird, die den Namen im Anforderungstext übergibt. Dies wird sowohl für die Bash-Shell als auch für die Windows-Befehlszeile gezeigt:

curl --request POST http://localhost:7071/api/MyHttpTrigger --data '{"name":"Azure Rocks"}'
curl --request POST http://localhost:7071/api/MyHttpTrigger --data "{'name':'Azure Rocks'}"

Die folgenden Überlegungen gelten beim lokalen Aufrufen von HTTP-Endpunkten:

  • Sie können GET-Anforderungen über einen Browser ausführen, indem Sie Daten in der Abfragezeichenfolge übergeben. Für alle anderen HTTP-Methoden müssen Sie cURL, Fiddler, Postman oder ein ähnliches HTTP-Testtool verwenden, das POST-Anforderungen unterstützt.

  • Achten Sie darauf, den gleichen Servernamen und Port zu verwenden, auf die der Functions-Host lauscht. Sie sehen einen Endpunkt wie diesen in der generierten Ausgabe, wenn der Funktions-Host gestartet wird. Sie können diese URL mit jeder HTTP-Methode aufrufen, die vom Trigger unterstützt wird.

Veröffentlichen in Azure

Die Azure Functions Core Tools unterstützen drei Bereitstellungstypen:

Bereitstellungstyp Befehl BESCHREIBUNG
Projektdateien func azure functionapp publish Stellt Funktionsprojektdateien mithilfe der ZIP-Bereitstellung direkt in Ihrer Funktions-App bereit.
Azure Container Apps func azurecontainerapps deploy Stellt eine containerisierte Funktions-App in einer bestehenden Container Apps-Umgebung bereit.
Kubernetes-Cluster func kubernetes deploy Stellt Ihre Linux-Funktions-App als benutzerdefinierten Docker-Container in einem Kubernetes-Cluster bereit.

Sie müssen entweder die Azure-Befehlszeilenschnittstelle oder die Azure PowerShell lokal installiert haben, um von Core Tools aus in Azure veröffentlichen zu können. Standardmäßig verwendet Core Tools diese Tools zur Authentifizierung mit Ihrem Azure-Konto.

Wenn Sie diese Tools nicht installiert haben, müssen Sie stattdessen ein gültiges Zugriffstoken abrufen, das Sie während der Bereitstellung verwenden können. Sie können ein Zugriffstoken mit der Option --access-token in den Bereitstellungsbefehlen angeben.

Bereitstellen von Projektdateien

Um Ihren lokalen Code in einer Funktions-App in Azure zu veröffentlichen, verwenden Sie den Befehl func azure functionapp publish publish, wie im folgenden Beispiel:

func azure functionapp publish <FunctionAppName>

Mit diesem Befehl werden die Projektdateien aus dem aktuellen Verzeichnis als .zip-Bereitstellungspaket in der <FunctionAppName> veröffentlicht. Wenn das Projekt kompiliert werden muss, wird dies während der Bereitstellung per Fernzugriff erledigt.

Java verwendet Maven, um Ihr lokales Projekt auf Azure zu veröffentlichen, anstelle von Core Tools. Verwenden Sie den folgenden Maven-Befehl, um Ihr Projekt auf Azure zu veröffentlichen:

mvn azure-functions:deploy

Wenn Sie diesen Befehl ausführen, werden Azure-Ressourcen während der ersten Bereitstellung auf der Grundlage der Einstellungen in Ihrer pom.xml-Datei erstellt. Weitere Informationen finden Sie unter Bereitstellen des Funktionsprojekts in Azure.

Die folgenden Überlegungen gelten für diese Art von Bereitstellung:

  • Die Veröffentlichung überschreibt vorhandene Dateien in der Remote-Bereitstellung der Funktions-App.

  • Sie müssen bereits eine Funktions-App im Azure-Abonnement erstellt haben. Core Tools stellt Ihren Projektcode in dieser Funktions-App-Ressource bereit. Informationen zum Erstellen einer Funktions-App über die Eingabeaufforderung oder ein Terminalfenster mithilfe der Azure-Befehlszeilenschnittstelle oder Azure PowerShell finden Sie unter Erstellen einer Funktions-App für die serverlose Ausführung. Sie können diese Ressourcen auch im Azure-Portal erstellen. Sie erhalten eine Fehlermeldung, wenn Sie versuchen, an einen <FunctionAppName> zu veröffentlichen, der in Ihrem Abonnement nicht vorhanden ist.

  • Ein Projektordner kann sprachspezifische Dateien und Verzeichnisse enthalten, die nicht veröffentlicht werden sollen. Ausgeschlossene Elemente werden in einer .funcignore-Datei im Stammprojektordner aufgelistet.

  • Standardmäßig wird Ihr Projekt so bereitgestellt, dass es aus dem Bereitstellungspaket ausgeführt wird. Dieser empfohlene Bereitstellungsmodus kann mithilfe der --nozip-Option deaktiviert werden.

  • Ein Remotebuild wird für kompilierte Projekte ausgeführt. Dies kann mithilfe der --no-build-Option gesteuert werden.

  • Verwenden Sie die Option --publish-local-settings zum automatischen Erstellen von App-Einstellungen in Ihrer Funktions-App basierend auf Werten in der Datei „local.settings.json“.

  • Verwenden Sie die --slot-Option, um die Veröffentlichung in einem bestimmten benannten Slot in Ihrer Funktions-App auszuführen.

Container bereitstellen

Mit Core Tools können Sie Ihre containerisierte Funktions-App sowohl in verwalteten Azure Container Apps-Umgebungen als auch in Kubernetes-Clustern bereitstellen, die Sie verwalten.

Verwenden Sie den folgenden Befehl func azurecontainerapps deploy, um ein vorhandenes Containerimage in einer Container Apps-Umgebung bereitzustellen:

func azurecontainerapps deploy --name <APP_NAME> --environment <ENVIRONMENT_NAME> --storage-account <STORAGE_CONNECTION> --resource-group <RESOURCE_GROUP> --image-name <IMAGE_NAME> [--registry-password] [--registry-server] [--registry-username]

Bei der Bereitstellung in einer Azure Container Apps-Umgebung gelten die folgenden Überlegungen:

  • Die Umgebung und das Speicherkonto müssen bereits vorhanden sein. Die von Ihnen bereitgestellte Verbindungszeichenfolge des Speicherkontos wird von der bereitgestellten Funktions-App verwendet.

  • Sie müssen bei der Bereitstellung in Container Apps keine separate Funktions-App-Ressource erstellen.

  • Speicherverbindungszeichenfolgen und andere Dienstanmeldeinformationen sind wichtige Geheimnisse. Stellen Sie sicher, dass Sie alle Skriptdateien mit func azurecontainerapps deploy sicher speichern und sie nicht in öffentlich zugänglichen Versionskontrollsystemen ablegen. Sie können für zusätzliche Sicherheit die Datei local.settings.json verschlüsseln.

Weitere Informationen finden Sie unter Azure Container Apps-Hosting von Azure Functions.

Lokales Arbeiten mit App-Einstellungen

Bei der Ausführung in einer Funktions-App in Azure werden die von Ihren Funktionen benötigten Einstellungen sicher in den App-Einstellungen gespeichert. Bei der lokalen Entwicklung werden diese Einstellungen stattdessen zur Values-Sammlung in der Datei local.settings.json hinzugefügt. Die Datei „local.settings.json“ speichert auch Einstellungen, die von lokalen Entwicklungstools verwendet werden.

Elemente in der Values-Sammlung in der Datei local.settings.json Ihres Projekts sollen Elemente in den Anwendungseinstellungen Ihrer Funktions-App in Azure widerspiegeln.

Die folgenden Überlegungen gelten beim Arbeiten mit der lokalen Einstellungsdatei:

  • Da die Datei „local.settings.json“ möglicherweise Geheimnisse wie Verbindungszeichenfolgen enthält, sollten Sie sie niemals in einem Remoterepository speichern. Core Tools unterstützt Sie bei der Verschlüsselung dieser lokalen Einstellungsdatei, um die Sicherheit zu verbessern. Weitere Informationen finden Sie unter Datei für lokale Einstellungen. Sie können für zusätzliche Sicherheit auch die Datei local.settings.json verschlüsseln.

  • Standardmäßig werden lokale Einstellungen nicht automatisch migriert, wenn das Projekt in Azure veröffentlicht wird. Verwenden Sie die --publish-local-settings-Option, wenn Sie Ihre Projektdateien veröffentlichen, um sicherzustellen, dass diese Einstellungen zur Funktions-App in Azure hinzugefügt werden. Werte im Abschnitt ConnectionStrings werden nie veröffentlicht. Sie können auch jederzeit Einstellungen aus der Datei local.settings.json hochladen.

  • Sie können Einstellungen in Ihrer Datei local.settings.json herunterladen und mit Einstellungen aus Ihrer Funktions-App in Azure überschreiben. Weitere Informationen finden Sie unter Herunterladen von Anwendungseinstellungen.

  • Die Werte für Funktions-App-Einstellungen können auch im Code als Umgebungsvariablen gelesen werden. Weitere Informationen finden Sie unter Umgebungsvariablen.
  • Die Werte für Funktions-App-Einstellungen können auch im Code als Umgebungsvariablen gelesen werden. Weitere Informationen finden Sie unter Umgebungsvariablen.
  • Die Werte für Funktions-App-Einstellungen können auch im Code als Umgebungsvariablen gelesen werden. Weitere Informationen finden Sie unter Umgebungsvariablen.
  • Die Werte für Funktions-App-Einstellungen können auch im Code als Umgebungsvariablen gelesen werden. Weitere Informationen finden Sie unter Umgebungsvariablen.
  • Die Werte für Funktions-App-Einstellungen können auch im Code als Umgebungsvariablen gelesen werden. Weitere Informationen finden Sie unter Umgebungsvariablen.

Herunterladen von Anwendungseinstellungen

Verwenden Sie im Projektstamm den folgenden Befehl, um alle Anwendungseinstellungen aus der myfunctionapp12345-App in Azure herunterzuladen:

func azure functionapp fetch-app-settings myfunctionapp12345

Dieser Befehl überschreibt alle vorhandenen Einstellungen in der Datei local.settings.json mit Werten aus Azure. Wenn sie noch nicht vorhanden sind, werden neue Elemente der Sammlung hinzugefügt. Weitere Informationen finden Sie im Abschnitt zum func azure functionapp fetch-app-settings-Befehl.

Herunterladen einer Speicherverbindungszeichenfolge

Core Tools erleichtern außerdem das Abrufen der Verbindungszeichenfolge jedes Speicherkontos, auf das Sie Zugriff haben. Verwenden Sie im Projektstamm den folgenden Befehl, um die Verbindungszeichenfolge aus einem Speicherkonto mit Namen mystorage12345 herunterzuladen.

func azure storage fetch-connection-string mystorage12345

Dieser Befehl fügt der Datei local.settings.json eine Einstellung mit dem Namen mystorage12345_STORAGE hinzu, welche die Verbindungszeichenfolge für das mystorage12345-Konto enthält. Weitere Informationen finden Sie im Abschnitt zum func azure storage fetch-connection-string-Befehl.

Um die Sicherheit während der Entwicklung zu verbessern, sollten Sie die Datei local.settings.json verschlüsseln.

Hochladen lokaler Einstellungen in Azure

Wenn Sie Ihre Projektdateien in Azure veröffentlichen, ohne die --publish-local-settings-Option zu verwenden, werden die Einstellungen in der Datei local.settings.json in Ihrer Funktions-App nicht festgelegt. Sie können die func azure functionapp publish mit der --publish-settings-only-Option immer wieder ausführen, um nur die Einstellungen hochzuladen, ohne die Projektdateien erneut zu veröffentlichen.

Im folgenden Beispiel werden nur Einstellungen aus der Values-Sammlung in der Datei local.settings.json in die Funktions-App in Azure mit dem Namen myfunctionapp12345 hochgeladen:

func azure functionapp publish myfunctionapp12345 --publish-settings-only

Verschlüsseln der lokalen Einstellungsdatei

Um die Sicherheit von Verbindungszeichenfolgen und anderen wertvollen Daten in Ihren lokalen Einstellungen zu verbessern, können Sie mit Core Tools die Datei local.settings.json verschlüsseln. Wenn diese Datei verschlüsselt ist, entschlüsselt die Runtime die Einstellungen bei Bedarf automatisch auf die gleiche Weise wie die Anwendungseinstellung in Azure. Sie können auch eine lokal verschlüsselte Datei entschlüsseln, um mit den Einstellungen zu arbeiten.

Verwenden Sie den folgenden Befehl, um die lokale Einstellungsdatei für das Projekt zu verschlüsseln:

func settings encrypt

Verwenden Sie den folgenden Befehl, um eine verschlüsselte lokale Einstellung zu entschlüsseln, damit Sie damit arbeiten können:

func settings decrypt

Wenn die Einstellungsdatei verschlüsselt und entschlüsselt wird, wird auch die IsEncrypted-Einstellung der Datei aktualisiert.

Konfigurieren von Bindungserweiterungen

Functions-Trigger und -Bindungen werden als .NET-Erweiterungspakete (NuGet) implementiert. Um eine bestimmte Bindungserweiterung verwenden zu können, muss diese Erweiterung im Projekt installiert sein.

Dieser Abschnitt gilt nicht für Version 1.x der Functions-Runtime. In Version 1.x war die unterstützte Bindung in der Kernprodukterweiterung enthalten.

Fügen Sie für C#-Klassenbibliotheksprojekte Verweise auf die spezifischen NuGet-Pakete für die für Ihre Funktionen erforderlichen Bindungserweiterungen hinzu. Das C#-Skriptprojekt (CSX) muss Erweiterungspakete verwenden.

Functions bietet Erweiterungsbündel, um die Arbeit mit verbindlichen Erweiterungen in Ihrem Projekt zu vereinfachen. Erweiterungsbündel, die versioniert und in der Datei „host.json“ definiert sind, installieren einen vollständigen Satz kompatibler Bindungserweiterungspakete für Ihre App. Für „host.json“ sollten bereits Erweiterungsbündel aktiviert sein. Wenn Sie aus irgendeinem Grund das Erweiterungspaket zur Datei „host.json“ hinzufügen oder in dieser aktualisieren müssen, lesen Sie Erweiterungsbündel.

Wenn Sie eine verbindliche Erweiterung oder eine Erweiterungsversion verwenden müssen, die nicht in einem unterstützten Bundle enthalten ist, müssen Sie die Erweiterungen manuell installieren. Informationen für solch seltene Szenarien finden Sie Abschnitt zum im func extensions install-Befehl.

Core Tools-Versionen

Hauptversionen von Azure Functions Core Tools sind mit bestimmten Hauptversionen der Azure Functions-Runtime verknüpft. Beispielsweise unterstützt Version 4.x von Core Tools Version 4.x der Functions-Runtime. Diese Version ist die empfohlene Hauptversion sowohl der Functions-Runtime als auch der Core Tools. Sie können die neueste Releaseversion von Core Tools im Azure Functions Core Tools-Repository ermitteln.

Führen Sie den folgenden Befehl aus, um die Version Ihrer aktuellen Core Tools-Installation zu ermitteln:

func --version

Sofern nicht anders angegeben, gelten die Beispiele in diesem Artikel für Version 4.x.

Die folgenden Überlegungen gelten für Core Tools-Installationen:

  • Sie können auf einem Computer immer nur jeweils eine Version der Core Tools installieren.

  • Wenn Sie ein Core Tools-Upgrade auf die neueste Version durchführen, sollten Sie für das Upgrade dieselbe Methode einsetzen, die Sie bei der ursprüngliche Installation verwendet haben. Wenn Sie beispielsweise eine MSI unter Windows verwendet haben, deinstallieren Sie die aktuelle MSI, und installieren Sie die neueste. Wenn Sie npm verwendet haben, führen Sie npm install command erneut aus.

  • Version 2.x und 3.x der Core Tools wurden mit den Versionen 2.x und 3.x der Functions-Runtime verwendet, die das Supportende erreicht haben. Weitere Informationen finden Sie unter Einstellen von Runtimeversionen von Azure Functions als Ziel.

  • Version 1.x von Core Tools ist erforderlich, wenn Version 1.x der Functions Runtime verwendet wird, welche weiterhin unterstützt wird. Diese Version von Core Tools kann nur lokal auf Windows-Computern ausgeführt werden. Wenn Sie derzeit Version 1.x verwenden, sollten Sie erwägen, Ihre App noch heute zu Version 4.x zu migrieren.

Nächste Schritte

Erfahren Sie, wie Sie entwickeln, testen und veröffentlichen von Azure-Funktionen mithilfe der Kerntools von Azure Functions. Azure Functions Core Tools ist ein Open Source-Programm und wird auf GitHub gehostet. Um einen Fehler zu melden oder ein Feature anzufordern, öffnen Sie ein GitHub-Problem.