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:
Azure Functions Core Tools (Befehlszeile)
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.
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:
- Während der Visual Studio-Veröffentlichung
Programmgesteuerte Verwendung der Azure CLI, Azure PowerShell, ARM-Vorlagen oder Bicep-Vorlagen
Gehen Sie im Azure-Portal wie folgt vor:
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 Runtime von Ihrer App als Umgebungsvariablenpaare (name
value
) 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 Laufzeitversion und der Erweiterung, die die Verbindung verwendet, ab. 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.
Identitätsbasierte Verbindungen werden nur für Functions 4.x unterstützt. Wenn Sie Version 1.x verwenden, müssen Sie zuerst zu Version 4.x migrieren.
Die folgenden Komponenten unterstützen identitätsbasierte Verbindungen:
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:
- Azure Blobs-Erweiterung
- Azure Queues-Erweiterung
- Azure Tables-Erweiterung
- Event Hubs-Erweiterung
- Service Bus-Erweiterung
- Event Grid-Erweiterung
- Azure Cosmos DB-Erweiterung
- Azure SignalR-Erweiterung
- Durable Functions-Speicheranbieter
- Functions-Hostspeicher
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 Speicherblobdaten und Mitwirkender an Speicherabfragedaten1 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.
Azure SDK-Umgebungsvariablen
Achtung
Die Verwendung der Umgebungsvariablen EnvironmentCredential
des Azure SDK wird aufgrund der potenziell unbeabsichtigten Auswirkungen auf andere Verbindungen nicht empfohlen. Sie werden auch nicht vollständig unterstützt, wenn sie in Azure Functions bereitgestellt werden.
Die Umgebungsvariablen EnvironmentCredential
, die dem Azure SDK zugeordnet sind, können auch festgelegt werden, aber diese werden nicht vom Functions-Dienst für die Skalierung in Verbrauchsplänen verarbeitet. Diese Umgebungsvariablen sind nicht spezifisch für eine Verbindung und gelten als Standard, es sei denn, eine entsprechende Eigenschaft ist für eine bestimmte Verbindung nicht festgelegt. Wenn beispielsweise AZURE_CLIENT_ID
festgelegt ist, wird dies so verwendet, als wäre <CONNECTION_NAME_PREFIX>__clientId
konfiguriert worden. Die explizite <CONNECTION_NAME_PREFIX>__clientId
-Einstellung würde diese Standardeinstellung außer Kraft setzen.
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 die Speicherverbindung, die in AzureWebJobsStorage
festgelegt wurde, für Kernfunktionalität wie die Koordination der Singletonausführung von Timertriggern und den Standardspeicher für App-Schlüssel. 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 AzureWebJobsStorage
für andere Speicherverbindungen in ihren Triggern, ihren Bindungen und/oder ihrem Funktionscode wiederverwenden. 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: