Azure Functions: Entwicklerhandbuch
In Azure Functions nutzen bestimmte Funktionen einige wichtige technische Konzepte und Komponenten gemeinsam, unabhängig von der verwendeten Sprache oder Bindung. Bevor Sie sich mit den spezifischen Details einer bestimmten Sprache oder Bindung beschäftigen, sollten Sie diese Übersicht lesen, die für alle Funktionen gilt.
Dieser Artikel setzt voraus, dass Sie die Einführung in Azure Functions bereits gelesen haben.
Funktionscode
Ein Funktion ist das primäre Konzept in Azure Functions. Eine Funktion enthält zwei wichtige Komponenten: Ihren Code, der in einer Vielzahl von Programmiersprachen geschrieben sein kann, und die Datei „function.json“ mit Konfigurationsinformationen. Für kompilierte Sprachen wird diese Konfigurationsdatei automatisch aus Anmerkungen im Code generiert. Für Skriptsprachen müssen Sie die Konfigurationsdatei selbst bereitstellen.
Die Datei „function.json“ definiert den Trigger, die Bindungen und weitere Konfigurationseinstellungen der Funktion. Jede Funktion verfügt nur über einen einzigen Trigger. Anhand dieser Konfigurationsdatei ermittelt die Runtime, welche Ereignisse überwacht werden sollen und wie Daten in die Funktionsausführung übergeben und aus dieser zurückgegeben werden. Im Folgenden finden Sie eine function.json-Beispieldatei.
{
"disabled":false,
"bindings":[
// ... bindings here
{
"type": "bindingType",
"direction": "in",
"name": "myParamName",
// ... more depending on binding
}
]
}
Weitere Informationen finden Sie unter Konzepte für Azure Functions-Trigger und -Bindungen.
In der Eigenschaft bindings
werden sowohl Trigger als auch Bindungen konfiguriert. Einige Einstellungen gelten für alle Bindungen, einige Einstellungen sind spezifisch für einen bestimmten Bindungstyp. Jede Bindung erfordert folgende Einstellungen:
Eigenschaft | Werte | Typ | Kommentare |
---|---|---|---|
type | Der Name der Bindung. Beispiel: queueTrigger . |
Zeichenfolge | |
direction | in , out |
Zeichenfolge | Gibt an, ob die Bindung zum Empfangen von Daten in der Funktion oder zum Senden von Daten aus der Funktion dient. |
name | Der Funktionsbezeichner. Beispiel: myQueue . |
Zeichenfolge | Der Name, der für die gebundenen Daten in der Funktion verwendet wird. In C# ist dies ein Argumentname, in JavaScript ist es der Schlüssel in einer Schlüssel-Wert-Liste. |
Funktionen-App
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. 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. Eine Funktionen-App ist somit eine Möglichkeit, mit der Sie Ihre Funktionen organisieren und kollektiv verwalten können. Weitere Informationen finden Sie unter Verwalten einer Funktions-App.
Hinweis
Alle Funktionen in einer Funktions-App müssen in der gleichen Programmiersprache erstellt werden. In Vorgängerversionen der Azure Functions-Runtime war dies nicht erforderlich.
Ordnerstruktur
Der Code für alle Funktionen in einer bestimmten Funktions-App befindet sich in einem Stammprojektordner, der eine Hostkonfigurationsdatei enthält. Die Datei host.json enthält die runtimespezifische Konfiguration und befindet sich im Stammordner der Funktions-App. Ein Ordner bin enthält Pakete und andere Bibliotheksdateien, die von der Funktions-App benötigt werden. Bestimmte Ordnerstrukturen, die von der Funktions-App benötigt werden, sind von der Sprache abhängig:
In der Version 2.x und höheren Versionen der Functions-Runtime müssen sich alle Funktionen in der Funktions-App denselben Sprachstapel teilen.
Oben sehen Sie die standardmäßige (und empfohlene) Ordnerstruktur für eine Funktions-App. Falls Sie den Dateispeicherort des Codes einer Funktion ändern möchten, ändern Sie den Abschnitt scriptFile
der Datei scriptFile
. Außerdem empfehlen wir, das Projekt mithilfe der Paketbereitstellung in Ihrer Funktions-App in Azure bereitzustellen. Sie können auch vorhandene Tools wie Continuous Integration und Continuous Deployment und Azure DevOps verwenden.
Hinweis
Wenn Sie ein Paket manuell bereitstellen, müssen die Datei host.json und die Funktionsordner direkt im Ordner bereitgestellt werden. Schließen Sie den Ordner wwwroot
nicht in Ihre Bereitstellungen ein. Andernfalls erhalten Sie wwwroot\wwwroot
-Ordner.
Verwenden von lokalen Tools und Veröffentlichung
Funktions-Apps können mit verschiedenen Tools erstellt und veröffentlicht werden, darunter Visual Studio, Visual Studio Code, IntelliJ, Eclipse und Azure Functions Core Tools. Weitere Informationen finden Sie unter Lokales Codieren und Testen von Azure Functions.
Bearbeiten von Funktionen im Azure-Portal
Mit dem integrierten Functions-Editor im Azure-Portal können Sie Ihren Code und die Datei function.json direkt inline aktualisieren. Dies wird nur für kleine Änderungen oder Proof of Concept-Projekte empfohlen. Die bewährte Methode ist die Verwendung eines lokalen Entwicklungstools wie Visual Studio Code.
Parallele Ausführung
Wenn die Auslösung mehrerer Ereignisse schneller erfolgt als die Runtime einer Singlethreadfunktion sie verarbeiten kann, kann die Runtime die Funktion mehrmals parallel aufrufen. Wenn eine Funktionen-App den verbrauchsbasierten Hostingplan verwendet, kann die App automatisch aufskaliert werden. Jede Instanz der Funktionen-App – unabhängig davon, ob die App im verbrauchsbasierten Hostingplan oder einem regulären App Service-Hostingplan ausgeführt wird – kann gleichzeitige Funktionsaufrufe über mehrere Threads parallel verarbeiten. Die maximale Anzahl gleichzeitiger Funktionsaufrufe in jeder Funktionen-App-Instanz variiert je nach Art des verwendeten Triggers sowie je nach den Ressourcen, die von anderen Funktionen innerhalb der Funktionen-App verwendet werden.
Versionsverwaltung der Functions-Runtime
Sie können die Version der Functions-Runtime mit der App-Einstellung FUNCTIONS_EXTENSION_VERSION
konfigurieren. Der Wert „~3“ bedeutet beispielsweise, dass für Ihre Funktions-App „3.x“ als Hauptversion verwendet wird. Funktions-Apps werden auf jede neue Nebenversion aktualisiert, wenn sie freigegeben werden. Weitere Informationen finden Sie unter Einstellen von Runtimeversionen von Azure Functions als Ziel, einschließlich der Informationen zum Anzeigen der genauen Version Ihrer Funktions-App.
Repositorys
Der Code für Azure Functions ist Open Source und in GitHub-Repositorys gespeichert:
- Azure-Funktionen
- Azure Functions-Host
- Azure Functions-Portal
- Azure Functions-Vorlagen
- Azure WebJobs SDK
- Azure WebJobs SDK-Erweiterungen
Bindungen
Hier finden Sie eine Tabelle aller unterstützten Bindungen.
Die folgende Tabelle zeigt die Bindungen, die in den Hauptversionen der Azure Functions-Runtime unterstützt werden:
type | 1.x | 2.x und höher1 | Trigger | Eingabe | Output |
---|---|---|---|---|---|
Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure SQL (Vorschauversion)2 | ✔ | ✔ | ✔ | ✔ | |
Dapr3 | ✔ | ✔ | ✔ | ✔ | |
Event Grid | ✔ | ✔ | ✔ | ✔ | |
Event Hubs | ✔ | ✔ | ✔ | ✔ | |
HTTP und Webhooks | ✔ | ✔ | ✔ | ✔ | |
IoT Hub | ✔ | ✔ | ✔ | ||
Kafka2 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Queue Storage | ✔ | ✔ | ✔ | ✔ | |
RabbitMQ2 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Tabellenspeicherung | ✔ | ✔ | ✔ | ✔ | |
Zeitgeber | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
1 Ab Version 2.x der Runtime müssen alle Bindungen mit Ausnahme von HTTP und Timer registriert werden. Siehe Registrieren von Bindungserweiterungen.
2 Trigger werden im Verbrauchstarif nicht unterstützt. Erfordert runtimegesteuerte Trigger.
3 Wird nur in Kubernetes, IoT Edge und anderen selbstgehosteten Modi unterstützt.
Haben Sie Probleme mit Fehlern, die aus den Bindungen stammen? Lesen Sie die Dokumentation Fehlerbehandlung in Azure Functions.
Verbindungen
Ihr Funktionsprojekt verweist anhand des Namens auf Verbindungsinformationen aus seinem Konfigurationsanbieter. Die Verbindungsdetails werden nicht direkt akzeptiert, sodass sie in verschiedenen Umgebungen geändert werden können. Eine Triggerdefinition kann z. B. eine connection
-Eigenschaft enthalten. Dies kann sich auf eine Verbindungszeichenfolge beziehen, aber Sie können die Verbindungszeichenfolge nicht direkt in einer Datei function.json
festlegen. Stattdessen würden Sie connection
auf den Namen einer Umgebungsvariablen festlegen, die die Verbindungszeichenfolge enthält.
Der Standardkonfigurationsanbieter verwendet Umgebungsvariablen. Diese werden möglicherweise von Anwendungseinstellungen festgelegt, wenn Sie im Azure Functions-Dienst ausgeführt werden, oder aus der lokalen Einstellungsdatei bei der lokalen Entwicklung.
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 ist möglicherweise weiterhin eine Verbindungszeichenfolge in Functions erforderlich, obwohl 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.
Identitätsbasierte Verbindungen werden von den folgenden Komponenten unterstützt:
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 unten eine Registerkarte aus, um mehr über Berechtigungen für die einzelnen Komponenten zu erfahren:
- Azure Blobs-Erweiterung
- Azure Queues-Erweiterung
- Azure Tables-Erweiterung
- Event Hubs-Erweiterung
- Service Bus-Erweiterung
- Azure Cosmos DB-Erweiterung
- Durable Functions-Speicheranbieter (Vorschau)
- Funktionen Hostspeicher (Vorschau)
Sie müssen eine Rollenzuweisung erstellen, die zur Laufzeit Zugriff auf Ihren Blobcontainer 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 zusätzliche 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. Diese werden durch die Rollen Besitzer von Speicherblobdaten, Mitwirkender an 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. Wird nur empfohlen, wenn eine vom Benutzer zugewiesene Identität angegeben wird. Dann muss sie auf „managedidentity“ festgelegt werden. Dies gilt nur, wenn sie im Azure Functions-Dienst gehostet wird. |
Client-ID | <CONNECTION_NAME_PREFIX>__clientId |
Wenn credential auf „managedidentity“ festgelegt ist, wird mit dieser Eigenschaft die vom Benutzer zugewiesene Identität angegeben, 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. Wenn nichts angegeben wird, wird die vom System zugewiesene Identität verwendet. Diese Eigenschaft wird in Szenarios für die lokale Entwicklung anders verwendet, wenn nicht festgelegt werden darf. |
Für einen bestimmten Verbindungstyp können weitere Optionen unterstützt werden. Weitere Informationen finden Sie in der Dokumentation zu der Komponente, die die Verbindung herstellt.
Lokale Entwicklung mit identitätsbasierten Verbindungen
Hinweis
Die lokale Entwicklung mit identitätsbasierten Verbindungen erfordert aktualisierte Versionen der Azure Functions Core Tools. Sie können die derzeit installierte Version überprüfen, indem Sie func -v
ausführen. Verwenden Sie für Functions v3 die Version 3.0.3904
oder höher. Verwenden Sie für Functions v4 die Version 4.0.3904
oder höher.
Bei lokaler Ausführung weist die Konfiguration oben die Laufzeit 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 ein Azure Active Directory-Dienstprinzipal verweisen. Diese Konfigurationsoption wird nicht unterstützt, wenn das Hosting im Azure Functions-Dienst erfolgt. Um eine ID und ein Geheimnis 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 ID des Azure Active Directory-Mandanten (Verzeichnis). |
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. |
Beispiel für local.settings.json
-Eigenschaften, die für identitätsbasierte Verbindungen mit Azure Blob 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 mit dem Hostspeicher mit einer Identität (Vorschau)
Der Azure Functions-Host verwendet die AzureWebJobsStorage-Verbindung für Kernfunktionalität wie die Koordination der Singletonausführung von Timertriggern und den Standardspeicher für App-Schlüssel. Sie kann auch so konfiguriert werden, dass eine Identität genutzt wird.
Achtung
Andere Komponenten in Functions basieren für Standardverhalten auf „AzureWebJobsStorage“. 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.
Außerdem verwenden einige Apps „AzureWebJobsStorage“ für andere Speicherverbindungen in ihren Triggern, Bindungen und/oder in ihrem Funktionscode wieder. Stellen Sie sicher, dass alle Benutzer*innen von „AzureWebJobsStorage“ das identitätsbasierte Verbindungsformat verwenden können, bevor Sie diese Verbindung einer 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 zum Konfigurieren von AzureWebJobsStorage ein Speicherkonto verwenden, das global das DNS-Standardsuffix und den Standarddienstnamen für Azure verwendet, können Sie gemäß dem https://<accountName>.blob/queue/file/table.core.windows.net
-Format stattdessen AzureWebJobsStorage__accountName
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 |
Nächste Schritte
Weitere Informationen finden Sie in den folgenden Ressourcen: