Deaktivieren von Funktionen in Azure Functions

In diesem Artikel wird erläutert, wie Sie eine Funktion in Azure Functions deaktivieren. Durch das Deaktivieren einer Funktion wird die Runtime angewiesen, das Ereignis zu ignorieren, das die Funktion auslösen soll. Dadurch können Sie das Ausführen einer bestimmten Funktion verhindern, ohne die gesamte Funktions-App ändern und erneut veröffentlichen zu müssen.

Sie können eine Funktion deaktivieren, indem Sie eine App-Einstellung im Format AzureWebJobs.<FUNCTION_NAME>.Disabled erstellen, das auf true festgelegt ist. Sie können diese Anwendungseinstellung auf verschiedene Arten erstellen und ändern, z. B. über die Azure CLI, Azure PowerShell und im Azure-Portal auf der Registerkarte Übersicht der Funktion.

Änderungen an den Anwendungseinstellungen führen dazu, dass die Funktions-App neu gestartet wird. Weitere Informationen finden Sie unter Referenz zu App-Einstellungen für Azure Functions.

Deaktivieren einer Funktion

Verwenden Sie einen dieser Modi, um eine App-Einstellung zu erstellen, die eine Beispielfunktion mit dem Namen QueueTrigger deaktiviert:

Verwenden Sie die Schaltflächen Aktivieren und Deaktivieren auf der Seite Übersicht der Funktion. Diese Schaltflächen ändern den Wert der App-Einstellung AzureWebJobs.QueueTrigger.Disabled. Die funktionsspezifische App-Einstellung wird beim ersten Deaktivieren einer Funktion erstellt.

Function state switch

Auch wenn Sie Ihre Funktions-App aus einem lokalen Projekt veröffentlichen, können Sie weiterhin das Portal verwenden, um Funktionen in der Funktions-App zu deaktivieren.

Hinweis

Deaktivierte Funktionen können weiterhin ausgeführt werden, indem der REST-Endpunkt mithilfe eines Hauptschlüssels aufgerufen wird. Weitere Informationen finden Sie unter Ausführen einer deaktivierten Funktion. Dies bedeutet, dass eine deaktivierte Funktion weiterhin ausgeführt wird, wenn sie im Portal im Fenster Test/Ausführen mithilfe des Haupt- bzw. Hostschlüssels gestartet wird.

Deaktivieren von Funktionen in einem Slot

App-Einstellungen gelten standardmäßig auch für Apps, die in Bereitstellungsslots ausgeführt werden. Sie können jedoch die vom Slot verwendete App-Einstellung überschreiben, indem Sie eine slotspezifische App-Einstellung festlegen. Beispielsweise soll eine Funktion in der Produktionsumgebung aktiv sein, aber nicht während der Bereitstellungstests. Es ist üblich, durch einen Timer ausgelöste Funktionen in Slots zu deaktivieren, um gleichzeitige Ausführungen zu verhindern.

So deaktivieren Sie eine Funktion nur im Bereitstellungsslot

Navigieren Sie zu der Slotinstanz Ihrer Funktions-App, indem Sie unter Bereitstellung die Option Bereitstellungsslots und dann Ihren Slot und in der Slotinstanz Funktionen auswählen. Wählen Sie Ihre Funktion aus, und verwenden Sie dann die Schaltflächen Aktivieren und Deaktivieren auf der Seite Übersicht der Funktion. Diese Schaltflächen ändern den Wert der App-Einstellung AzureWebJobs.<FUNCTION_NAME>.Disabled. Diese funktionsspezifische Einstellung wird beim ersten Deaktivieren der Funktion erstellt.

Sie können die App-Einstellung mit dem Namen AzureWebJobs.<FUNCTION_NAME>.Disabled und dem Wert true auch direkt in der Konfiguration für die Slotinstanz hinzufügen. Wenn Sie eine slotspezifische App-Einstellung hinzufügen, stellen Sie sicher, dass Sie das Kontrollkästchen Bereitstellungssloteinstellung aktivieren. Diese Option behält den Einstellungswert während eines Austauschs für den Slot bei.

Weitere Informationen finden Sie unter Azure Functions-Bereitstellungsslots.

Ausführen einer deaktivierten Funktion

Sie können eine deaktivierte Funktion trotzdem ausführen lassen, indem Sie den Hauptschlüssel in einer REST-Anforderung an die Endpunkt-URL der deaktivierten Funktion übergeben. Auf diese Weise können Sie Funktionen in Azure in deaktiviertem Zustand entwickeln und überprüfen und gleichzeitig verhindern, dass andere auf sie zugreifen können. Die Verwendung eines anderen Schlüsseltyps in der Anforderung liefert die HTTP-Antwort 404.

Achtung

Aufgrund der erhöhten Berechtigungen, die der Hauptschlüssel in Ihrer Funktions-App erteilt, sollten Sie diesen Schlüssel nicht für Dritte freigeben oder in nativen Clientanwendungen verteilen. Gehen Sie umsichtig vor, wenn Sie die Zugriffsebene „Administrator“ auswählen.

Weitere Informationen zum Hauptschlüssel finden Sie unter Abrufen von Schlüsseln. Weitere Informationen zum Aufrufen von nicht per HTTP ausgelösten Funktionen in Azure finden Sie unter Manuelles Ausführen einer nicht per HTTP ausgelösten Funktion.

Lokales Deaktivieren von Funktionen

Funktionen können bei lokaler Ausführung auf die gleiche Weise deaktiviert werden. Um eine Funktion mit dem Namen QueueTrigger zu deaktivieren, fügen Sie der Values-Sammlung in der Datei „local.settings.json“ einen Eintrag wie folgt hinzu:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true", 
    "AzureWebJobs.QueueTrigger.Disabled": true
  }
}

Überlegungen

Berücksichtigen Sie beim Deaktivieren von Funktionen folgende Aspekte:

  • Wenn Sie eine per HTTP ausgelöste Funktion mithilfe der in diesem Artikel beschriebenen Methoden deaktivieren, kann der Zugriff auf den Endpunkt bei Ausführung auf Ihrem lokalen Computer und im Portal weiterhin erfolgen.

  • Derzeit können Funktionen mit Namen, die einen Bindestrich (-) enthalten, nicht deaktiviert werden, wenn sie unter Linux ausgeführt werden. Falls Sie planen, Ihre Funktionen bei der Ausführung unter Linux zu deaktivieren, verwenden Sie keine Bindestriche in Ihren Funktionsnamen.

Nächste Schritte

In diesem Artikel wird das Deaktivieren von automatischen Triggern behandelt. Weitere Informationen zu Triggern finden Sie unter Trigger und Bindungen.