Azure Functions: Entwicklerhandbuch

In Azure Functions teilen sich alle Funktionen einige wichtige technische Konzepte und Komponenten, unabhängig von Ihrer bevorzugten Entwicklungssprache oder -umgebung. Dieser Artikel ist sprachspezifisch. Wählen Sie am Anfang des Artikels Ihre bevorzugte Entwicklungssprache aus.

Dieser Artikel setzt voraus, dass Sie die Einführung in Azure Functions bereits gelesen haben.

Wenn Sie lieber direkt einsteigen möchten, können Sie ein Schnellstart-Tutorial mit Visual Studio, Visual Studio Code oder über die Eingabeaufforderung abschließen.

Wenn Sie lieber direkt einsteigen möchten, können Sie ein Schnellstart-Tutorial mit Maven (Befehlszeile), Eclipse, IntelliJ IDEA, Gradle, Quarkus, Spring Cloud oder Visual Studio Code abschließen.

Wenn Sie lieber direkt einsteigen möchten, können Sie ein Schnellstart-Tutorial mit Visual Studio Code oder über die Eingabeaufforderung abschließen.

Wenn Sie lieber direkt einsteigen möchten, können Sie ein Schnellstart-Tutorial mit Visual Studio Code oder über die Eingabeaufforderung abschließen.

Wenn Sie lieber direkt einsteigen möchten, können Sie ein Schnellstart-Tutorial mit Visual Studio Code oder über die Eingabeaufforderung abschließen.

Wenn Sie lieber direkt einsteigen möchten, können Sie ein Schnellstart-Tutorial mit Visual Studio Code oder über die Eingabeaufforderung abschließen.

Code-Projekt

Im Kern von Azure Functions ist ein sprachspezifisches Codeprojekt, das eine oder mehrere Einheiten der Codeausführung implementiert, die als Funktionen bezeichnet werden. Funktionen sind einfach Methoden, die in der Azure-Cloud basierend auf Ereignissen, als Reaktion auf HTTP-Anforderungen oder nach einem Zeitplan ausgeführt werden. Stellen Sie sich Ihr Azure Functions Codeprojekt als Mechanismus zum Organisieren, Bereitstellen und gemeinsamen Verwalten Ihrer einzelnen Funktionen im Projekt vor, wenn diese in Azure ausgeführt werden. Weitere Informationen finden Sie unter Organisieren von Funktionen.

Die Art und Weise, wie Sie Ihr Codeprojekt gestalten und angeben, welche Methoden in Ihrem Projekt Funktionen sind, hängt von der Entwicklungssprache Ihres Projekts ab. Ausführliche sprachspezifische Anleitungen finden Sie im Leitfaden für C#-Entwickler.

Die Art und Weise, wie Sie Ihr Codeprojekt gestalten und angeben, welche Methoden in Ihrem Projekt Funktionen sind, hängt von der Entwicklungssprache Ihres Projekts ab. Ausführliche sprachspezifische Anleitungen finden Sie im Leitfaden für Java-Entwickler.

Die Art und Weise, wie Sie Ihr Codeprojekt gestalten und angeben, welche Methoden in Ihrem Projekt Funktionen sind, hängt von der Entwicklungssprache Ihres Projekts ab. Ausführliche sprachspezifische Anleitungen finden Sie im Leitfaden für Node.js-Entwickler.

Die Art und Weise, wie Sie Ihr Codeprojekt gestalten und angeben, welche Methoden in Ihrem Projekt Funktionen sind, hängt von der Entwicklungssprache Ihres Projekts ab. Ausführliche sprachspezifische Anleitungen finden Sie im Leitfaden für PowerShell-Entwickler.

Die Art und Weise, wie Sie Ihr Codeprojekt gestalten und angeben, welche Methoden in Ihrem Projekt Funktionen sind, hängt von der Entwicklungssprache Ihres Projekts ab. Ausführliche sprachspezifische Anleitungen finden Sie im Leitfaden für Python-Entwickler.

Alle Funktionen müssen über einen Trigger verfügen, der definiert, wie die Funktion gestartet wird und der Eingaben in die Funktion machen kann. Ihre Funktionen können optional Eingabe- und Ausgabebindungen definieren. Diese Bindungen vereinfachen Verbindungen mit anderen Diensten, ohne dass Sie mit Client-SDKs arbeiten müssen. Weitere Informationen finden Sie unter Konzepte für Azure Functions-Trigger und -Bindungen.

Azure Functions stellt eine Reihe sprachspezifischer Projekt- und Funktionsvorlagen bereit, die das Erstellen neuer Codeprojekte und das Hinzufügen von Funktionen zu Ihrem Projekt vereinfachen. Sie können jedes der Tools verwenden, die Azure Functions Entwicklung unterstützen, um mithilfe dieser Vorlagen neue Apps und Funktionen zu generieren.

Entwicklungstools

Die folgenden Tools bieten eine integrierte Entwicklungs- und Veröffentlichungsumgebung für Azure Functions in Ihrer bevorzugten Sprache:

Diese Tools sind in Azure Functions Core Tools integriert, sodass Sie mit der Functions-Runtime auf Ihrem lokalen Computer ausführen und debuggen können. Weitere Informationen finden Sie unter Lokales Codieren und Testen von Azure Functions.

Es gibt auch einen Editor im Azure-Portal, mit dem Sie Ihren Code und Ihre Definitionsdatei function.json direkt im Portal aktualisieren können. Sie sollten diesen Editor nur für kleine Änderungen oder das Erstellen von Proof-of-Concept-Funktionen verwenden. Sie sollten Ihre Funktionen nach Möglichkeit immer lokal entwickeln. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Funktion im Azure-Portal.

Die Portalbearbeitung wird nur für Node.js Version 3 unterstützt, welche die Datei function.json verwendet.

Die Portalbearbeitung wird nur für Python Version 1 unterstützt, welche die Datei function.json verwendet.

Bereitstellung

Wenn Sie Ihr Codeprojekt in Azure veröffentlichen, stellen Sie Ihr Projekt im Wesentlichen in einer vorhandenen Funktions-App-Ressource bereit. Eine Funktions-App bietet einen Ausführungskontext in Azure, in dem Ihre Funktionen ausgeführt werden. Daher ist dies die Bereitstellungs- und Verwaltungseinheit für Ihre Funktionen. Aus der Perspektive einer Azure-Ressource entspricht eine Funktions-App einer Websiteressource (Microsoft.Web/sites) im Azure App Service, was einer Web-App entspricht.

Eine Funktions-App besteht aus einer oder mehreren individuellen Funktionen, die zusammen verwaltet, bereitgestellt und skaliert werden. Der Tarif, die Bereitstellungsmethode und die Runtimeversion sind für alle Funktionen in einer Funktions-App gleich. Weitere Informationen finden Sie unter Verwalten von Funktions-Apps.

Wenn die Funktions-App und andere erforderliche Ressourcen noch nicht in Azure vorhanden sind, müssen Sie diese Ressourcen zuerst erstellen, bevor Sie Ihre Projektdateien bereitstellen können. Sie können diese Ressourcen auf eine der folgenden Arten erstellen:

Zusätzlich zur toolbasierten Veröffentlichung unterstützt Functions andere Technologien zum Bereitstellen von Quellcode in einer vorhandenen Funktions-App. Weitere Informationen finden Sie unter Bereitstellungstechnologien in Azure Functions.

Verbinden mit Diensten

Eine wichtige Anforderung eines cloudbasierten Computediensts ist das Lesen von Daten aus anderen Clouddiensten und das Schreiben von Daten in andere Clouddienste. Functions bietet eine umfangreiche Gruppe von Bindungen, die es Ihnen erleichtern, eine Verbindung mit Diensten herzustellen, ohne mit Client-SDKs arbeiten zu müssen.

Unabhängig davon, ob Sie die von Functions bereitgestellten Bindungserweiterungen verwenden oder direkt mit Client-SDKs arbeiten, speichern Sie Verbindungsdaten an sicherer Stelle und fügen Sie sie nicht in Ihren Code ein. Weitere Informationen finden Sie unter Verbindungen.

Bindungen

Functions stellt Bindungen für viele Azure-Dienste und einige Dienste von Drittanbietern bereit, die als Erweiterungen implementiert werden. Weitere Informationen finden Sie in der vollständigen Liste der unterstützten Bindungen.

Bindungserweiterungen können sowohl Ein- als auch Ausgaben unterstützen, und viele Trigger fungieren auch als Eingabebindungen. Mit Bindungen können Sie die Verbindung mit Diensten so konfigurieren, dass der Funktionshost den Datenzugriff für Sie verarbeiten kann. Weitere Informationen finden Sie unter Konzepte für Azure Functions-Trigger und -Bindungen.

Wenn Sie Probleme mit Fehlern haben, die von Bindungen stammen, lesen Sie die Dokumentation zu Azure Functions-Bindungsfehlercodes.

Client-SDKs

Während Functions Bindungen bereitstellt, um den Datenzugriff in Ihrem Funktionscode zu vereinfachen, können Sie dennoch ein Client-SDK in Ihrem Projekt verwenden, um direkt auf einen bestimmten Dienst zuzugreifen. Möglicherweise müssen Sie Client-SDKs direkt verwenden, wenn Ihre Funktionen eine Funktionalität des zugrunde liegenden SDK benötigen, die von der Bindungserweiterung nicht unterstützt wird.

Wenn Sie Client-SDKs verwenden, sollten Sie denselben Prozess zum Speichern und Zugreifen auf Verbindungszeichenfolgen verwenden, der von Bindungserweiterungen verwendet wird.

Wenn Sie eine Client-SDK-Instanz in Ihren Funktionen erstellen, sollten Sie die vom Client benötigten Verbindungsinformationen aus den Umgebungsvariablen abrufen.

Wenn Sie eine Client-SDK-Instanz in Ihren Funktionen erstellen, sollten Sie die vom Client benötigten Verbindungsinformationen aus den Umgebungsvariablen abrufen.

Wenn Sie eine Client-SDK-Instanz in Ihren Funktionen erstellen, sollten Sie die vom Client benötigten Verbindungsinformationen aus den Umgebungsvariablen abrufen.

Wenn Sie eine Client-SDK-Instanz in Ihren Funktionen erstellen, sollten Sie die vom Client benötigten Verbindungsinformationen aus den Umgebungsvariablen abrufen.

Wenn Sie eine Client-SDK-Instanz in Ihren Funktionen erstellen, sollten Sie die vom Client benötigten Verbindungsinformationen aus den Umgebungsvariablen abrufen.

Verbindungen

Als bewährte Sicherheitsmethode nutzt Azure Functions die Anwendungseinstellungsfunktionen von Azure App Service, um Zeichenfolgen, Schlüssel und andere Token, die für die Verbindung mit anderen Diensten erforderlich sind, sicherer zu speichern. Anwendungseinstellungen in Azure werden verschlüsselt gespeichert und können zur Laufzeit von Ihrer App als Umgebungsvariablenpaare namevalue aufgerufen werden. Für Trigger und Bindungen, die eine Verbindungseigenschaft erfordern, legen Sie den Namen der Anwendungseinstellung anstelle der tatsächlichen Verbindungszeichenfolge fest. Sie können eine Bindung nicht direkt mit einer Verbindungszeichenfolge oder einem Schlüssel konfigurieren.

Betrachten Sie beispielsweise eine Triggerdefinition, die über eine connection-Eigenschaft verfügt. Anstatt die Verbindungszeichenfolge zu verwenden, legen Sie connection auf den Namen einer Umgebungsvariable fest, welche die Verbindungszeichenfolge enthält. Die Verwendung dieser Strategie für den Zugriff auf geheime Informationen erhöht die Sicherheit Ihrer Apps und vereinfacht das Ändern von Verbindungen in verschiedenen Umgebungen. Für noch mehr Sicherheit können Sie identitätsbasierte Verbindungen verwenden.

Der Standardkonfigurationsanbieter verwendet Umgebungsvariablen. Diese Variablen werden bei der Ausführung in Azure in den Anwendungseinstellungen und bei der lokalen Entwicklung in der lokalen Einstellungsdatei definiert.

Verbindungswerte

Wenn der Verbindungsname in einen einzelnen exakten Wert aufgelöst wird, identifiziert die Laufzeit den Wert als Verbindungszeichenfolge, die in der Regel ein Geheimnis enthält. Die Details einer Verbindungszeichenfolge werden durch den Dienst definiert, mit dem Sie eine Verbindung herstellen möchten.

Ein Verbindungsname kann jedoch auch auf eine Sammlung von mehreren Konfigurationselementen verweisen, die für das Konfigurieren identitätsbasierter Verbindungen nützlich ist. Umgebungsvariablen können als Sammlung behandelt werden, indem ein gemeinsames Präfix verwendet wird, das auf doppelte Unterstriche (__) endet. Auf die Gruppe kann dann verwiesen werden, indem der Verbindungsname auf dieses Präfix festgelegt wird.

Beispielsweise kann die connection-Eigenschaft für eine Azure-Blobtriggerdefinition Storage1 lauten. Solange kein einzelner Zeichenfolgenwert von einer Umgebungsvariablen namens Storage1 konfiguriert wurde, kann die blobServiceUri-Eigenschaft durch eine Umgebungsvariable namens Storage1__blobServiceUri über die Verbindung informiert werden. Die Verbindungseigenschaften unterscheiden sich für jeden Dienst. In der Dokumentation finden Sie Informationen zu der Komponente, die die Verbindung verwendet.

Hinweis

Wenn Sie Azure App Configuration oder Key Vault verwenden, um Einstellungen für Verbindungen mit verwalteter Identität bereitzustellen, sollten die Namen der Einstellungen ein gültiges Schlüsseltrennzeichen wie : oder / anstelle von __ verwenden, um sicherzustellen, dass die Namen richtig aufgelöst werden.

Beispiel: Storage1:blobServiceUri.

Konfigurieren einer identitätsbasierten Verbindung

Einige Verbindungen in Azure Functions können so konfiguriert werden, dass anstelle eines Geheimnisses eine Identität verwendet wird. Die Unterstützung hängt von der Erweiterung ab, die die Verbindung verwendet. In einigen Fällen wird in Functions möglicherweise auch dann noch eine Verbindungszeichenfolge benötigt, wenn der Dienst, mit dem Sie eine Verbindung herstellen, identitätsbasierte Verbindungen unterstützt. Ein Tutorial zum Konfigurieren Ihrer Funktions-Apps mit verwalteten Identitäten finden Sie im Tutorial zum Erstellen einer Funktions-App mit identitätsbasierten Verbindungen.

Hinweis

Bei der Ausführung in einem Verbrauchs- oder Elastic Premium-Plan verwendet Ihre App die Einstellungen WEBSITE_AZUREFILESCONNECTIONSTRING und WEBSITE_CONTENTSHARE zum Herstellen einer Verbindung mit Azure Files für das Speicherkonto, das von Ihrer Funktions-App verwendet wird. Die Verwendung einer verwalteten Identität beim Zugriff auf die Dateifreigabe wird von Azure Files nicht unterstützt. Weitere Informationen finden Sie unter Azure Files: Unterstützte Authentifizierungsszenarien.

Die folgenden Komponenten unterstützen identitätsbasierte Verbindungen:

Verbindungsquelle Unterstützte Pläne Weitere Informationen
Azure Blobs-Trigger und -Bindungen Alle Azure Blobs-Erweiterung, Version 5.0.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Azure Queues-Trigger und -Bindungen Alle Azure Queues-Erweiterung, Version 5.0.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Azure Tables (bei Verwendung von Azure Storage) Alle Azure Tables-Erweiterung, Version 1.0.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Azure SQL-Datenbank All Verbinden einer Funktions-App in Azure SQL mit verwalteter Identität und SQL-Bindungen
Azure Event Hubs Auslöser und Bindungen Alle Azure Event Hubs-Erweiterung, Version 5.0.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Azure Service Bus Auslöser und Bindungen Alle Azure Service Bus-Erweiterung, Version 5.0.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Azure Event Grid-Ausgabebindung All Azure Event Grid Erweiterung Version 3.3.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Trigger und Bindungen bei Azure Cosmos DB Alle Azure Cosmos DB-Erweiterung, Version 4.0.0 oder höher,
Erweiterungspaket 4.0.2 oder höher
Azure SignalR-Trigger und -Bindungen Alle Azure SignalR-Erweiterungsversion 1.7.0 oder höher
Erweiterungsbündel 3.6.1 oder höher
Durable Functions-Speicheranbieter (Azure Storage) Alle Durable Functions-Erweiterung, Version 2.7.0 oder höher,
Erweiterungspaket 3.3.0 oder höher
Vom Host benötigter Speicher („AzureWebJobsStorage“) All Verbinden zum Hostspeicher mit einer Identität

Identitätsbasierte Verbindungen verwenden eine verwaltete Identität, wenn sie im Azure Functions-Dienst gehostet werden. Standardmäßig wird eine vom System zugewiesene Identität verwendet, auch wenn mit den Eigenschaften credential und clientID eine vom Benutzer zugewiesene Identität angegeben werden kann. Beachten Sie, dass das Konfigurieren einer benutzerseitig zugewiesenen Identität mit einer Ressourcen-ID nicht unterstützt wird. Bei Ausführung in anderen Kontexten (z. B. bei der lokalen Entwicklung) wird stattdessen Ihre Entwickleridentität verwendet, Dieses Verhalten kann angepasst werden. Weitere Informationen finden Sie unter Lokale Entwicklung mit identitätsbasierten Verbindungen.

Erteilen der Berechtigung für die Identität

Unabhängig davon, welche Identität verwendet wird, muss diese über Berechtigungen zum Ausführen der vorgesehenen Aktionen verfügen. Daher müssen Sie für die meisten Azure-Dienste eine Rolle in Azure RBAC zuweisen, indem Sie entweder integrierte oder benutzerdefinierte Rollen verwenden, die diese Berechtigungen bieten.

Wichtig

Vom Zieldienst werden möglicherweise einige nicht für alle Kontexte erforderliche Berechtigungen verfügbar gemacht. Befolgen Sie nach Möglichkeit das Prinzip der geringsten Berechtigung, und gewähren Sie der Identität nur die erforderlichen Berechtigungen. Wenn die App beispielsweise nur Daten aus einer Datenquelle lesen muss, verwenden Sie eine Rolle, die nur über Leseberechtigungen verfügt. Es wäre nicht angemessen, eine Rolle zu zuweisen, die auch das Schreiben in diesen Dienst zulässt, da dies eine übermäßige Berechtigung für einen Lesevorgang wäre. Ebenso sollten Sie sicherstellen, dass die Rollenzuweisung auf die Ressourcen begrenzt ist, die gelesen werden müssen.

Wählen Sie eine der folgenden Registerkarten aus, um mehr über Berechtigungen für jede Komponente zu erfahren:

Sie müssen eine Rollenzuweisung erstellen, die zur Laufzeit Zugriff auf Ihren Blob-Container ermöglicht. Verwaltungsrollen wie Besitzer sind nicht ausreichend. Die folgende Tabelle zeigt integrierte Rollen, die für den normalen Betrieb mit der Blob Storage-Erweiterung empfohlen werden. Ihre Anwendung erfordert möglicherweise weitere Berechtigungen basierend auf dem von Ihnen geschriebenen Code.

Bindungstyp Integrierte Beispielrollen
Trigger Besitzer von SpeicherblobdatenundMitwirkender an Speicherblobdaten1

Außerdem müssen der AzureWebJobsStorage-Verbindung zusätzliche Berechtigungen erteilt werden.2
Eingabebindung Leser von Speicherblobdaten
Ausgabebindung Besitzer von Speicherblobdaten

1 Fehler bei mehreren erneuten Versuchen werden vom Blobtrigger durch Schreiben nicht verarbeitbarer Blobs in eine Warteschlange für das durch die Verbindung angegebene Speicherkonto behandelt.

2 Die AzureWebJobsStorage-Verbindung wird intern für Blobs und Warteschlangen verwendet, die den Trigger aktivieren. Wenn die Verwendung einer identitätsbasierten Verbindung konfiguriert ist, sind zusätzliche Berechtigungen erforderlich, die über die Standardanforderung hinausgehen. Die erforderlichen Berechtigungen werden durch die Rollen Besitzer von Storage-Blobdaten, Mitwirkender für Storage-Warteschlangendaten und Speicherkontomitwirkender abgedeckt. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit dem Hostspeicher mit einer Identität.

Allgemeine Eigenschaften für identitätsbasierte Verbindungen

Eine identitätsbasierte Verbindung für einen Azure-Dienst akzeptiert die folgenden allgemeinen Eigenschaften, wobei <CONNECTION_NAME_PREFIX> der Wert Ihrer connection-Eigenschaft in der Trigger- oder Bindungsdefinition ist:

Eigenschaft Vorlage für Umgebungsvariable BESCHREIBUNG
Token-Anmeldeinformationen <CONNECTION_NAME_PREFIX>__credential Damit wird festgelegt, wie für die Verbindung ein Token abgerufen werden soll. Diese Einstellung sollte auf managedidentity festgelegt werden, wenn Ihre bereitgestellte Azure-Funktion die Authentifizierung mit verwalteter Identität verwenden soll. Dieser Wert ist nur gültig, wenn eine verwaltete Identität in der Hostingumgebung verfügbar ist.
Client-ID <CONNECTION_NAME_PREFIX>__clientId Wenn credential auf managedidentity festgelegt ist, kann mit dieser Eigenschaft die benutzerseitig zugewiesene Identität angegeben werden, die beim Abrufen eines Tokens verwendet werden soll. Die Eigenschaft akzeptiert eine Client-ID, die einer vom Benutzer zugewiesenen Identität entspricht, die der Anwendung zugeordnet ist. Es ist nicht möglich, sowohl eine Ressourcen-ID als auch eine Client-ID anzugeben. Wenn nichts angegeben wird, wird die vom System zugewiesene Identität verwendet. Diese Eigenschaft wird in Szenarien für die lokale Entwicklung anders verwendet, in denen credential nicht festgelegt werden darf.
Ressourcen-ID <CONNECTION_NAME_PREFIX>__managedIdentityResourceId Wenn credential auf managedidentity festgelegt ist, kann mit dieser Eigenschaft der Ressourcenbezeichner angegeben werden, der beim Abrufen eines Tokens verwendet werden soll. Die Eigenschaft akzeptiert einen Ressourcenbezeichner, der der Ressourcen-ID der benutzerdefinierten verwalteten Identität entspricht. Es ist nicht möglich, sowohl eine Ressourcen-ID als auch eine Client-ID anzugeben. Wenn nichts angegeben wird, wird die vom System zugewiesene Identität verwendet. Diese Eigenschaft wird in Szenarien für die lokale Entwicklung anders verwendet, in denen credential nicht festgelegt werden darf.

Für bestimmte Verbindungstypen können unter Umständen weitere Optionen unterstützt werden. Weitere Informationen zu der Komponente, die die Verbindung herstellt, finden Sie in der Dokumentation.

Lokale Entwicklung mit identitätsbasierten Verbindungen

Hinweis

Die lokale Entwicklung mit identitätsbasierten Verbindungen erfordert Version 4.0.3904 der Azure Functions Core Tools oder eine neuere Version.

Wenn Sie Ihr Funktionsprojekt lokal ausführen, weist die obige Konfiguration die Runtime an, Ihre lokale Entwickleridentität zu verwenden. Die Verbindung versucht, ein Token von den folgenden Speicherorten in der angegebenen Reihenfolge abzurufen:

  • Lokaler Cache, der von Microsoft-Anwendungen gemeinsam genutzt wird
  • Aktueller Benutzerkontext in Visual Studio
  • Aktueller Benutzerkontext in Visual Studio Code
  • Aktueller Benutzerkontext in der Azure CLI

Wenn keine dieser Optionen erfolgreich ist, tritt ein Fehler auf.

Ihre Identität verfügt möglicherweise bereits über Rollenzuweisungen für Azure-Ressourcen, die für die Entwicklung verwendet werden. Gegebenenfalls umfassen diese Rollen jedoch nicht den erforderlichen Datenzugriff. Verwaltungsrollen wie Besitzer sind nicht ausreichend. Überprüfen Sie, welche Berechtigungen für Verbindungen für jede Komponente erforderlich sind, und stellen Sie sicher, dass sie Ihnen selbst zugewiesen sind.

In einigen Fällen möchten Sie möglicherweise die Verwendung einer anderen Identität angeben. Sie können Konfigurationseigenschaften für die Verbindung hinzufügen, die auf die alternative Identität basierend auf einer Client-ID und einem geheimen Clientschlüssel für einen Microsoft Entra-Dienstprinzipal verweisen. Diese Konfigurationsoption wird nicht unterstützt, wenn das Hosting im Azure Functions-Dienst erfolgt. Um eine ID und ein geheime Informationen auf Ihrem lokalen Computer zu verwenden, definieren Sie die Verbindung mit den folgenden zusätzlichen Eigenschaften:

Eigenschaft Vorlage für Umgebungsvariable BESCHREIBUNG
Mandanten-ID <CONNECTION_NAME_PREFIX>__tenantId Die Microsoft Entra-Mandanten-ID (Verzeichnis-ID).
Client ID <CONNECTION_NAME_PREFIX>__clientId Die Client-ID (Anwendungs-ID) einer App-Registrierung im Mandanten.
Geheimer Clientschlüssel <CONNECTION_NAME_PREFIX>__clientSecret Ein Clientgeheimnis, das für die App-Registrierung generiert wurde.

Hier sehen Sie ein Beispiel für local.settings.json-Eigenschaften, die für identitätsbasierte Verbindungen mit Azure-Blobs erforderlich sind:

{
  "IsEncrypted": false,
  "Values": {
    "<CONNECTION_NAME_PREFIX>__blobServiceUri": "<blobServiceUri>",
    "<CONNECTION_NAME_PREFIX>__queueServiceUri": "<queueServiceUri>",
    "<CONNECTION_NAME_PREFIX>__tenantId": "<tenantId>",
    "<CONNECTION_NAME_PREFIX>__clientId": "<clientId>",
    "<CONNECTION_NAME_PREFIX>__clientSecret": "<clientSecret>"
  }
}

Verbinden zum Hostspeicher mit einer Identität

Der Azure Functions-Host verwendet den Speicherverbindungssatz AzureWebJobsStorage , um Kernverhalten wie die Koordination der Singletonausführung von Timertriggern und standardspeicherung des App-Schlüssels zu ermöglichen. Diese Verbindung kann auch für die Verwendung einer Identität konfiguriert werden.

Achtung

Andere Komponenten in Functions verwenden auf AzureWebJobsStorage für Standardverhalten. Sie sollten sie nicht in eine identitätsbasierte Verbindung verschieben, wenn Sie ältere Versionen von Erweiterungen verwenden, die diese Art von Verbindung nicht unterstützen. Dazu zählen u. a. Trigger und Bindungen für Azure-Blobs, Event Hubs und Durable Functions. Ebenso wird AzureWebJobsStorage für Bereitstellungsartefakte verwendet, wenn der serverseitig integrierte Linux-Verbrauch verwendet wird. Wenn Sie diese Option aktivieren, müssen Sie die Bereitstellung über AzureWebJobsStorage durchführen.

Darüber hinaus kann Ihre Funktions-App für andere Speicherverbindungen in ihren Triggern, Bindungen und/oder Funktionscode wiederverwenden AzureWebJobsStorage . Stellen Sie sicher, dass bei Verwendung von AzureWebJobsStorage immer das identitätsbasierte Verbindungsformat verwendet werden kann, bevor Sie diese Verbindung durch eine Verbindungszeichenfolge ändern.

Um eine identitätsbasierte Verbindung für AzureWebJobsStorage zu verwenden, konfigurieren Sie die folgenden App-Einstellungen:

Einstellung BESCHREIBUNG Beispielwert
AzureWebJobsStorage__blobServiceUri Der Datenebenen-URI des Blob-Diensts des Speicherkontos im HTTPS-Schema. https://<storage_account_name>.blob.core.windows.net
AzureWebJobsStorage__queueServiceUri Der Datenebenen-URI des Warteschlangendiensts des Speicherkontos im HTTPS-Schema. https://<storage_account_name>.queue.core.windows.net
AzureWebJobsStorage__tableServiceUri Der Datenebenen-URI eines Tabellendiensts des Speicherkontos im HTTPS-Schema. https://<speicherkonto_name>.table.core.windows.net

Allgemeine Eigenschaften für identitätsbasierte Verbindungen können auch festgelegt werden.

Wenn Sie AzureWebJobsStorage über ein Speicherkonto konfigurieren, das global das standardmäßige DNS-Suffix und den standardmäßigen Dienstnamen für Azure verwendet, können Sie stattdessen AzureWebJobsStorage__accountName gemäß dem https://<accountName>.[blob|queue|file|table].core.windows.net-Format auf den Namen Ihres Speicherkontos festlegen. Die Endpunkte für jeden Speicherdienst werden für dieses Konto abgeleitet. Dies funktioniert nicht, wenn sich das Speicherkonto in einer Sovereign Cloud befindet oder über ein benutzerdefiniertes DNS verfügt.

Einstellung BESCHREIBUNG Beispielwert
AzureWebJobsStorage__accountName Der Kontoname eines Speicherkontos, der nur gültig ist, wenn sich das Konto nicht in einer Sovereign Cloud befindet und nicht über ein benutzerdefiniertes DNS verfügt. Diese Syntax ist für AzureWebJobsStorage eindeutig und kann nicht für andere identitätsbasierte Verbindungen verwendet werden. <storage_account_name>

Sie müssen eine Rollenzuweisung erstellen, die den Zugriff auf das Speicherkonto für "AzureWebJobsStorage" zur Laufzeit ermöglicht. Verwaltungsrollen wie Owner sind nicht ausreichend. Die Rolle Storage Blob Data Owner deckt die grundlegenden Anforderungen von Functions Host Storage ab - die Laufzeit benötigt sowohl Lese- als auch Schreibzugriff auf Blobs und die Möglichkeit, Container zu erstellen. Diese Verbindung wird von mehreren Erweiterungen als Standardspeicherort für Blobs, Warteschlangen und Tabellen verwendet. Dabei gelten gegebenenfalls zusätzliche Anforderungen, wie in der Tabelle unten aufgeführt. Möglicherweise benötigen Sie zusätzliche Berechtigungen, wenn Sie „AzureWebJobsStorage“ für andere Zwecke verwenden.

Durchwahl Erforderliche Rollen Erklärung
Keine Erweiterung (nur Host) Besitzer von Speicherblobdaten Wird für die allgemeine Koordination verwendet, Standardschlüsselspeicher
Azure-Blobs (nur Trigger) Alle aus:
Speicherkontomitwirkender,
Besitzer von Speicherblobdaten,
Mitwirkender an Storage-Warteschlangendaten
Der Blobtrigger verwendet intern Azure-Warteschlangen und schreibt Blobbelege. Zu diesem Zweck wird unabhängig von der für den Trigger konfigurierten Verbindung AzureWebJobsStorage verwendet.
Azure Event Hubs (nur Trigger) (keine Abweichung von der Standardanforderung)
Besitzer von Speicherblobdaten
In Blobs, die die AzureWebJobsStorage-Verbindung verwenden, werden Prüfpunkte beibehalten.
Trigger mit Timer (keine Abweichung von der Standardanforderung)
Besitzer von Speicherblobdaten
Damit pro Ereignis eine Ausführung sichergestellt wird, werden bei Verwendung der AzureWebJobsStorage-Verbindung Sperren für Blobs eingesetzt.
Langlebige Funktionen Alle aus:
Mitwirkender an Storage-Blobdaten,
Mitwirkender an Storage-Warteschlangendaten,
Mitwirkender an Storage-Tabellendaten
Durable Functions verwendet Blobs, Warteschlangen und Tabellen, um Aktivitätsfunktionen zu koordinieren und den Orchestrierungszustand zu verwalten. Standardmäßig wird für all diese Zwecke die AzureWebJobsStorage-Verbindung verwendet. Sie können in der Konfiguration der Durable Functions-Erweiterung jedoch eine andere Verbindung angeben.

Melden von Problemen

Element BESCHREIBUNG Link
Laufzeit Script Host, Trigger und Bindungen, Sprachunterstützung Anlegen eines Eintrags
Vorlagen Vorlage für Codeprobleme bei der Erstellung Anlegen eines Eintrags
Portal Probleme mit der Benutzeroberfläche Anlegen eines Eintrags

Open Source-Repositorys

Der Code für Azure Functions ist Open Source. Wichtige Komponenten finden Sie in diesen GitHub-Repositorys:

Nächste Schritte

Weitere Informationen finden Sie in den folgenden Ressourcen: