Teilen über


Lokales Codieren und Testen von Azure Functions

Erstellen und überprüfen Sie nach Möglichkeit Ihr Azure Functions-Codeprojekt in einer lokalen Entwicklungsumgebung. Mithilfe von Azure Functions Core Tools erhalten Sie eine lokale Laufzeitversion von Azure Functions, die in beliebte Entwicklungstools für eine integrierte Entwicklung, debugging und Bereitstellungen integriert ist. Ihre lokalen Funktionen können sogar eine Verbindung mit Live-Azure-Diensten herstellen.

Dieser Artikel enthält einige gemeinsame Anleitungen für die lokale Entwicklung, z. B. das Arbeiten mit der local.settings.json-Datei. Sie enthält auch Links zu entwicklungsumgebungsspezifischen Anleitungen.

Tipp

Ausführliche Informationen zum lokalen Entwickeln von Funktionen finden Sie in den verknüpften IDE-spezifischen Anleitungsartikeln.

Lokale Entwicklungsumgebungen

Die Art und Weise, wie Sie Funktionen auf Ihrem lokalen Computer entwickeln, hängt von Ihren Sprach - und Tooleinstellungen ab. Wählen Sie oben im Artikel Ihre bevorzugte Sprache aus.

Tipp

Alle lokalen Entwicklungen basieren auf Azure Functions Core Tools, um die Funktionen-Laufzeit für das Debuggen in einer lokalen Umgebung bereitzustellen.

Verwenden Sie diese Entwicklungsumgebungen, um Lokalfunktionen in Ihrer bevorzugten Sprache zu codieren:

Environment BESCHREIBUNG
Visual Studio Die Azure Functions-Tools sind in der Azure-Entwicklungsarbeitslast von Visual Studio enthalten. Sie können Ihren C#-Funktionscode als .NET-Klassenbibliothek in Azure kompilieren und bereitstellen. Enthält die Core Tools für lokale Tests. Weitere Informationen finden Sie unter Erstellen Ihrer ersten C#-Funktion in Azure mit Visual Studio.
Visual Studio Code Die Azure Functions-Erweiterung für Visual Studio Code fügt Funktionen zur Unterstützung von Visual Studio Code hinzu. Erfordert Core Tools. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion mit Visual Studio Code.
Eingabeaufforderung oder Terminal Azure Functions Core Tools umfasst die Core-Runtime und Vorlagen zum Erstellen von Funktionen, die die lokale Entwicklung ermöglichen. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen einer C#-Funktion in Azure über die Befehlszeile.
Environment BESCHREIBUNG
Maven Maven archetype verwendet Core Tools, um die Entwicklung von Java-Funktionen zu ermöglichen. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen der ersten Funktion mit Java und Maven.
Visual Studio Code Die Azure Functions-Erweiterung für Visual Studio Code fügt Funktionen zur Unterstützung von Visual Studio Code hinzu. Erfordert Core Tools. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion mit Visual Studio Code.
IntelliJ IDEA Mit maven archetype und Core Tools können Sie Ihre Funktionen mithilfe von IntelliJ entwickeln. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Java-Funktion in Azure mit IntelliJ.
Finsternis Mit Maven Archetype und Core Tools können Sie Ihre Funktionen mithilfe von Eclipse entwickeln. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Java-Funktion in Azure mithilfe von Ecplise.
Environment BESCHREIBUNG
Visual Studio Code Die Azure Functions-Erweiterung für Visual Studio Code fügt Funktionen zur Unterstützung von Visual Studio Code hinzu. Erfordert Core Tools. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion mit Visual Studio Code.
Eingabeaufforderung oder Terminal Azure Functions Core Tools umfasst die Core-Runtime und Vorlagen zum Erstellen von Funktionen, die die lokale Entwicklung ermöglichen. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen einer Node.js-Funktion in Azure über die Befehlszeile.
Environment BESCHREIBUNG
Visual Studio Code Die Azure Functions-Erweiterung für Visual Studio Code fügt Funktionen zur Unterstützung von Visual Studio Code hinzu. Erfordert Core Tools. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion mit Visual Studio Code.
Eingabeaufforderung oder Terminal Azure Functions Core Tools umfasst die Core-Runtime und Vorlagen zum Erstellen von Funktionen, die die lokale Entwicklung ermöglichen. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen einer PowerShell-Funktion in Azure über die Befehlszeile.
Environment BESCHREIBUNG
Visual Studio Code Die Azure Functions-Erweiterung für Visual Studio Code fügt Funktionen zur Unterstützung von Visual Studio Code hinzu. Erfordert Core Tools. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion mit Visual Studio Code.
Eingabeaufforderung oder Terminal Azure Functions Core Tools umfasst die Core-Runtime und Vorlagen zum Erstellen von Funktionen, die die lokale Entwicklung ermöglichen. Unterstützt die Entwicklung unter Linux, macOS und Windows. Weitere Informationen finden Sie unter Erstellen einer Python-Funktion in Azure über die Befehlszeile.

In jeder dieser lokalen Entwicklungsumgebungen können Sie Funktions-App-Projekte erstellen und vordefinierte Funktionsvorlagen zum Erstellen neuer Funktionen verwenden. Jede Umgebung verwendet die Core Tools, sodass Sie Ihre Funktionen mit der realen Funktionslaufzeit auf Ihrem eigenen Computer wie jede andere App testen und debuggen können. Außerdem können Sie Ihr Funktions-App-Projekt in jeder dieser Umgebungen in Azure veröffentlichen.

Lokale Projektdateien

Ein Functions-Projektverzeichnis enthält die folgenden Dateien im Projektstammordner, unabhängig von der Programmiersprache:

Dateiname BESCHREIBUNG
host.json Weitere Informationen finden Sie in der Referenz zu „host.json“.
local.settings.json Einstellungen, die Core Tools bei der lokalen Ausführung verwenden, einschließlich App-Einstellungen. Weitere Informationen finden Sie in der lokalen Einstellungsdatei.
.gitignore Verhindert, dass die Datei „local.settings.json“ versehentlich in einem Git-Repository veröffentlicht wird. Weitere Informationen finden Sie in der lokalen Einstellungsdatei.
.vscode\extensions.json Datei mit Einstellungen, die beim Öffnen des Projektordners in Visual Studio Code verwendet wird.

Andere Dateien im Projekt hängen von Ihrer Programmiersprache und bestimmten Funktionen ab. Weitere Informationen finden Sie im Entwicklerhandbuch für Ihre Programmiersprache.

Datei für lokale Einstellungen

In der local.settings.json Datei werden App-Einstellungen und -Einstellungen gespeichert, die von lokalen Entwicklungstools verwendet werden. Verwenden Sie die Einstellungen in der local.settings.json Datei nur, wenn Sie Ihr Projekt lokal ausführen. Wenn Sie Ihr Projekt in Azure veröffentlichen, fügen Sie alle erforderlichen Einstellungen zu den App-Einstellungen für die Funktions-App hinzu.

Wichtig

Da die local.settings.json Datei möglicherweise geheime Schlüssel enthält, z. B. Verbindungszeichenfolgen, sollten Sie vorsichtig sein, um es zur Quellcodeverwaltung zu verpflichten. Tools, die Funktionen unterstützen, bieten Möglichkeiten zum Synchronisieren von Einstellungen in der local.settings.json Datei mit den App-Einstellungen in der Funktions-App, für die Ihr Projekt bereitgestellt wird.

Die local.settings.json Datei weist folgende Struktur auf:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Diese Einstellungen werden bei der lokalen Ausführung von Projekten unterstützt:

Einstellung BESCHREIBUNG
IsEncrypted Wenn diese Einstellung auf true festgelegt ist, werden alle Werte mithilfe eines lokalen Computerschlüssels verschlüsselt. Wird mit func settings-Befehlen verwendet. Der Standardwert ist false. Es empfiehlt sich ggf., die Datei „local.settings.json“ auf dem lokalen Computer zu verschlüsseln, wenn sie Geheimnisse (etwa Dienstverbindungszeichenfolgen) enthält. Der Host entschlüsselt die Einstellungen bei der Ausführung automatisch. Verwenden Sie den Befehl func settings decrypt, bevor Sie versuchen, lokal verschlüsselte Einstellungen zu lesen.
Values Eine Sammlung von Anwendungseinstellungen, die bei der lokalen Ausführung eines Projekts verwendet wird. Diese Schlüssel-Wert-Paare (Zeichenfolge-Zeichenfolge) entsprechen den Anwendungseinstellungen in Ihrer Funktions-App in Azure, etwa AzureWebJobsStorage. Viele Trigger und Bindungen verfügen über eine Eigenschaft, die auf eine App-Einstellung für die Verbindungszeichenfolge verweist, z. B. Connection für den Connection. Für diese Eigenschaften muss eine Anwendungseinstellung im Array Values definiert sein. Eine Liste der häufig verwendeten Einstellungen finden Sie in der nachfolgenden Tabelle.
Werte müssen Zeichenfolgen und dürfen nicht JSON-Objekte oder Arrays sein. Einstellungsnamen dürfen weder einen Doppelpunkt (__) noch einen doppelten Unterstrich (:) enthalten. Doppelte Unterstriche sind von der Runtime reserviert, und der Doppelpunkt ist für die Unterstützung der Abhängigkeitsinjektion reserviert.
Host Die Einstellungen in diesem Abschnitt passen den Hostprozess von Functions bei der lokalen Ausführung von Projekten an. Diese Einstellungen sind getrennt von den host.json-Einstellungen, die auch bei der Ausführung von Projekten in Azure angewendet werden.
LocalHttpPort Legt den Standardport fest, der bei der Ausführung des lokalen Functions-Host verwendet wird (func host start und func run). Die Befehlszeilenoption --port hat Vorrang vor dieser Einstellung. Wenn Sie beispielsweise im Visual Studio IDE arbeiten, können Sie die Portnummer ändern, indem Sie zum Fenster "Projekteigenschaften -> Debuggen" navigieren und die Portnummer explizit über einen host start --port <your-port-number> Parameter festlegen, der im Feld "Anwendungsargumente" eingegeben werden kann.
CORS Definiert die für die Ressourcenfreigabe zwischen verschiedenen Ursprüngen (CORS) zulässigen Ursprünge. Ursprünge werden als durch Trennzeichen getrennte Liste ohne Leerzeichen bereitgestellt. Den Platzhalterwert (*) wird unterstützt, wodurch Anforderungen von einem beliebigen Ursprung zulässig sind.
CORSCredentials Wird true festgelegt, sind Anforderungen vom Typ withCredentials zulässig.
ConnectionStrings Eine Auflistung. Verwenden Sie diese Sammlung nicht für die Verbindungszeichenfolgen, die von Ihren Funktionsbindungen verwendet werden. Diese Sammlung wird nur von Frameworks verwendet, die Verbindungszeichenfolgen üblicherweise aus dem Abschnitt ConnectionStrings einer Konfigurationsdatei abrufen, z. B. ConnectionStrings. Verbindungszeichenfolgen in diesem Objekt werden der Umgebung mit dem Anbietertyp System.Data.SqlClient hinzugefügt. Elemente in dieser Sammlung werden nicht mit anderen App-Einstellungen in Azure veröffentlicht. Sie müssen diese Werte explizit zur Sammlung Connection strings in den Einstellungen Ihrer Funktions-App hinzufügen. Wenn Sie einen SqlConnection in Ihrem Funktionscode erstellen, speichern Sie die Verbindungszeichenfolge zusammen mit Ihren anderen Verbindungen in den Anwendungseinstellungen im Portal.

Bei lokaler Ausführung können die folgenden Anwendungseinstellungen in das Array Values aufgenommen werden:

Einstellung Werte BESCHREIBUNG
AzureWebJobsStorage Verbindungszeichenfolge für das Speicherkonto oder
UseDevelopmentStorage=true
Enthält die Verbindungszeichenfolge für ein Azure-Speicherkonto. Erforderlich, wenn andere Trigger als HTTP verwendet werden. Weitere Informationen finden Sie in der Referenz zu AzureWebJobsStorage.
Wenn der Azurite-Emulator lokal installiert ist und Sie AzureWebJobsStorage auf UseDevelopmentStorage=true festlegen, verwendet Core Tools den Emulator. Weitere Informationen finden Sie unter Emulator für lokalen Speicher.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Wenn Sie bei lokaler Ausführung eine Funktion deaktivieren möchten, fügen Sie der Sammlung "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" hinzu, wobei <FUNCTION_NAME> der Name der Funktion ist. Weitere Informationen zum Deaktivieren von Funktionen in Azure Functions finden Sie hier.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
Gibt die Zielsprache der Functions-Runtime an. Erforderlich für Version 2.x und höher der Functions-Runtime. Kerntools generieren diese Einstellung für Ihr Projekt. Weitere Informationen finden Sie in der Referenz zu FUNCTIONS_WORKER_RUNTIME.
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Legt fest, dass PowerShell 7 beim lokalen Ausführen verwendet werden soll. Wird kein Wert festgelegt, wird PowerShell Core 6 verwendet. Diese Einstellung wird nur bei lokaler Ausführung verwendet. Bei der Ausführung in Azure wird die PowerShell-Runtimeversion durch die Einstellung der powerShellVersion-Sitekonfiguration bestimmt, die im Portal festgelegt werden kann.

Informationen zum Verwenden von Werten aus dem values Array als Umgebungsvariablen im Funktionscode finden Sie im Entwicklerhandbuch unter Umgebungsvariablen .

Informationen zum Verwenden von Werten aus dem values Array als Umgebungsvariablen im Funktionscode finden Sie im Entwicklerhandbuch unter Umgebungsvariablen .

Informationen zum Verwenden von Werten aus dem values Array als Umgebungsvariablen im Funktionscode finden Sie im Entwicklerhandbuch unter Umgebungsvariablen .

Informationen zum Verwenden von Werten aus dem values Array als Umgebungsvariablen im Funktionscode finden Sie im Entwicklerhandbuch unter Umgebungsvariablen .

Synchronisieren der Einstellungen

Wenn Sie Ihre Funktionen lokal entwickeln, schließen Sie alle lokalen Einstellungen ein, die von Ihrer App in den App-Einstellungen der Funktions-App benötigt werden, in der Sie Ihren Code bereitstellen. Möglicherweise müssen Sie auch aktuelle Einstellungen aus der Funktions-App in Ihr lokales Projekt herunterladen. Während Sie App-Einstellungen im Azure-Portal manuell konfigurieren können, können Sie mit den folgenden Tools auch App-Einstellungen mit lokalen Einstellungen in Ihrem Projekt synchronisieren:

Trigger und Bindungen

Wenn Sie Ihre Funktionen lokal entwickeln, sollten Sie Trigger- und Bindungsverhalten in Betracht ziehen. Für HTTP-Trigger können Sie den HTTP-Endpunkt auf dem lokalen Computer mithilfe von http://localhost/ aufrufen. Verwenden Sie für nicht-HTTP ausgelöste Funktionen mehrere Optionen, um lokal auszuführen:

  • Sie können Verbindungszeichenfolgen verwenden, die auf Live-Azure-Dienste abzielen, um Bindungen während der lokalen Entwicklung zu testen. Fügen Sie die entsprechenden Verbindungseinstellungen im Values-Array der Datei local.settings.json hinzu. Wenn Sie dies tun, wirken sich lokale Ausführungen während des Tests möglicherweise auf Ihre Produktionsdienste aus. Erwägen Sie stattdessen, separate Livedienste einzurichten, die während der Entwicklung und tests verwendet werden sollen, und wechseln Sie dann während der Produktion zu verschiedenen Diensten.
  • Verwenden Sie für speicherbasierte Trigger einen lokalen Speicheremulator.
  • Führen Sie Nicht-HTTP-Triggerfunktionen manuell mithilfe spezieller Administratorendpunkte aus. Weitere Informationen finden Sie unter Manuelles Ausführen einer nicht HTTP ausgelösten Funktion.

Während des lokalen Tests müssen Sie den host ausführen, der von Core Tools (func.exe) lokal bereitgestellt wird. Weitere Informationen finden Sie unter Azure Functions Core Tools.

Test Tools für HTTP

Während der Entwicklung können Sie alle Funktionsendpunkte aus einem Webbrowser aufrufen, wenn sie die HTTP GET-Methode unterstützen. Für andere HTTP-Methoden, die Nutzdaten wie POST oder PUT unterstützen, müssen Sie jedoch ein HTTP-Testtool verwenden, um diese HTTP-Anforderungen an Ihre Funktionsendpunkte zu erstellen und zu senden.

Achtung

Stellen Sie für Szenarien, in denen Ihre Anforderungen vertrauliche Daten enthalten müssen, sicher, dass Sie ein Tool verwenden, das Ihre Daten schützt. Das verringert das Risiko, vertrauliche Daten der Öffentlichkeit offenzulegen. Vertrauliche Daten, die Sie schützen sollten, können umfassen: Anmeldeinformationen, geheime Schlüssel, Zugriffstoken, API-Schlüssel, Geolocation-Daten und personenbezogene Daten.

Schützen Sie Ihre Daten, indem Sie ein HTTP-Testtool auswählen, das offline oder lokal funktioniert, Ihre Daten nicht mit der Cloud synchronisiert und nicht erfordert, dass Sie sich bei einem Onlinekonto anmelden. Einige Tools können Ihre Daten auch vor versehentlicher Gefährdung schützen, indem bestimmte Sicherheitsfeatures implementiert werden.

Vermeiden Sie die Verwendung von Tools, die Ihren HTTP-Anforderungsverlauf (einschließlich vertraulicher Informationen) zentral speichern, keine bewährten Sicherheitsmethoden befolgen, oder nicht auf Datenschutzbedenken achten.

Erwägen Sie die Verwendung eines dieser Tools zum sicheren Senden von HTTP-Anforderungen an Ihre Funktionsendpunkte:

Lokaler Speicheremulator

Während der lokalen Entwicklung können Sie den lokalen Azurite-Emulator verwenden, wenn Sie Funktionen mit Azure Storage-Bindungen (Queue Storage, Blob Storage und Table Storage) testen, ohne eine Verbindung mit Remotespeicherdiensten herzustellen. Azurite ist in Visual Studio Code und Visual Studio integriert, und Sie können es auch über die Eingabeaufforderung mithilfe von npm ausführen. Weitere Informationen finden Sie unter Verwenden des Azurite-Emulators für lokale Azure Storage-Entwicklung.

Die folgende Einstellung in der Values-Sammlung der Datei „local.settings.json“ weist den lokalen Functions-Host an, Azurite für die AzureWebJobsStorage-Standardverbindung zu verwenden:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Wenn dieser Wert eingestellt ist, stellt jeder Azure Storage-Trigger oder jede Azure Storage-Bindung, der bzw. die AzureWebJobsStorage als Verbindung verwendet, bei lokaler Ausführung eine Verbindung mit Azurite her. Beachten Sie diese Überlegungen bei der Verwendung der Speicheremulation während der lokalen Ausführung:

  • Sie müssen Azurite installiert haben und ausführen.
  • Sie sollten vor der Veröffentlichung in Azure eine tatsächliche Speicherverbindung mit Azure-Diensten testen.
  • Wenn Sie Ihr Projekt veröffentlichen, veröffentlichen Sie die AzureWebJobsStorage-Einstellung nicht als UseDevelopmentStorage=true. In Azure muss die AzureWebJobsStorage-Einstellung immer die Verbindungszeichenfolge des von Ihrer Funktions-App verwendeten Speicherkontos sein. Weitere Informationen finden Sie unter AzureWebJobsStorage.