Konfiguriere Verbindungen zu entfernten Diensten in Azure Functions

Dieser Artikel ist die Hauptreferenz dafür, wie Azure Functions mit entfernten Diensten verbunden ist. Es gibt spezifische Hinweise basierend auf Verbindungstyp und Authentifizierungsmethode.

Important

Verwenden Sie wann immer möglich verwaltete Identitäten mit Microsoft Entra ID. Diese Authentifizierungsmethode eliminiert Geheimnisse und bietet die höchste Sicherheit.

Verbindungskategorien

Azure Functions-Verbindungen fallen in diese Grundkategorien:

  • Host erforderlich: Verbindungen, die der Funktionshost zum Betrieb benötigt, wie Speicherung und Überwachung.
  • Bindungen: Verbindungen, die der Host für Ihre Trigger und Bindungen verwaltet.
  • Client-SDK: Verbindungen, die Sie in Ihrem eigenen Funktionscode erstellen und verwalten.

Tipp

Functions unterstützt außerdem verwaltete Connectors (in der Vorschau), mit denen Sie sich mit Diensten wie Office 365, Teams und SharePoint verbinden können, mit integriertem OAuth und Webhook-Handling über einen Connector Namespace. Weitere Informationen finden Sie unter Use Connectors in Azure Functions.

Der Functions-Host verlangt, dass deine App diese spezifischen benannten Verbindungen hat, die sowohl Funktionsausführungen als auch Logging unterstützen:

  • AzureWebJobsStorage: Functions nutzt dieses Standardspeicherkonto, um Kernverhalten zu ermöglichen, wie die Koordination der Einzelausführung von Timer-Triggern und der Standardspeicherung für Funktionszugriffsschlüssel. Der Host benötigt diese Verbindung zu einem unterstützten Speicherkonto. Deine Funktions-App kann ohne diese Verbindungseinstellung nicht starten. Weitere Informationen finden Sie unter Storage-Überlegungen für Azure Functions.

  • APPLICATIONINSIGHTS_CONNECTION_STRINGSie sollten den Host auch so konfigurieren, dass er Logs in eine Application Insights-Instanz schreibt.

  • WEBSITE_AZUREFILESCONNECTIONSTRING: Wird nur von Apps verwendet, die im Konsumplan oder Elastic Premium-Plan laufen. Definiert das Speicherkonto, das die Azure Files-Freigabe enthält, in der das Bereitstellungspaket für Ihre App verwaltet wird.

Authentifizierungsmethoden

Important

Wenn möglich, nutze verwaltete Identitäten für deine Verbindungen. Dieser Ansatz beseitigt Geheimnisse vollständig. Wenn der Zieldienst keine Microsoft Entra ID-Authentifizierung unterstützt, verwenden Sie Azure Key Vault, um Geheimnisse zentral zu verwalten. Nutze geteilte Geheimnisse nur direkt in den App-Einstellungen als letztes Mittel.

Functions unterstützt diese Authentifizierungsmethoden bei der Verbindung zu entfernten Diensten:

Authentifizierungsmethode Sicherheit Wann verwenden?
Verwaltete Identitäten Am höchsten Der Target-Dienst unterstützt Microsoft Entra ID. Keine Geheimnisse zu verwalten.
Azure Key Vault High Der Service unterstützt keine verwalteten Identitäten, oder du brauchst eine zentrale Geheimnisverwaltung mit Rotation.
Gemeinsames Geheimnis Niedrig Veralteter Standard. Migriere so schnell wie möglich zu verwalteten Identitäten oder Key Vault.

Wählen Sie Ihre bevorzugte Authentifizierungsmethode am Anfang des Artikels , um detaillierte Konfigurationsanleitungen zu sehen.

Zusammenhänge definieren

Während der Laufzeit greift Ihre Funktions-App als Umgebungsvariablen von diesen Standorten auf Verbindungsinformationen zu:

Umwelt Wo Einstellungen gespeichert werden
Azure Anwendungseinstellungen (verschlüsselt im Ruhestand)
Lokale Entwicklung local.settings.json (optional verschlüsselt)

In beiden Umgebungen werden deinem Code Einstellungen als Umgebungsvariablen zur Verfügung gestellt. Die genauen Einstellungen, die du brauchst, hängen sowohl vom Verbindungstyp als auch von der gewählten Authentifizierungsmethode ab.

Wenn Sie Microsoft Entra-Authentifizierung verwenden, um sich mit einem Azure-Dienst zu verbinden, hängen die spezifischen App-Einstellungen vom verbundenen Dienst ab und davon, ob Sie eine system- oder benutzerzugewiesene Identität zur Authentifizierung verwenden.

Die Identitäten, die du für deine Verbindungen verwendest, müssen Berechtigungen haben, um die vorgesehenen Aktionen auszuführen. Für die meisten Azure-Dienste bedeutet diese Anforderung, dass Sie eine Rolle in Azure RBAC zuweisen müssen, entweder mit eingebauten oder benutzerdefinierten Rollen, die diese Berechtigungen bereitstellen. Weitere Informationen finden Sie unter Erteilen von Berechtigungen für eine Identität.

Behalte diese Überlegungen im Hinterkopf, wenn du identitätsbasierte Verbindungen verwendest:

  • In einer von Functions gehosteten App verwenden identitätsbasierte Verbindungen eine verwaltete Identität. Die systemzugewiesene Identität, die speziell für Ihre App ist, wird standardmäßig verwendet. Benutzerzugewiesene Identitäten, die ebenfalls die *__credential Eigenschaften und *__clientID erfordern, sind jedoch flexibler und empfehlenswerter.

  • Wenn Ihre App in anderen Kontexten läuft, wie zum Beispiel in lokaler Entwicklung, wird stattdessen Ihre Entwickleridentität verwendet. Weitere Informationen finden Sie im Artikel zur lokalen Entwicklung .

  • Identitätsbasierte Verbindungen werden nur ab Version 4.x und später der Functions-Laufzeit unterstützt. Wenn du eine Legacy-C#-App auf Version 1.x der Functions-Laufzeit betreibst, musst du zuerst auf Version 4.x migrieren.

Du kannst deine Funktions-App so konfigurieren, dass sie eine Identität statt eines Verbindungszeichenfolge verwendet, wenn du dich mit dem Standardspeicherkonto (AzureWebJobsStorage) und anderen host-benötigten Verbindungen verbindest.

Die Unterstützung für verwaltete Identitäten mit AzureWebJobsStorage variiert je nach Hosting-Plan:

Hosting-Paket MI für Hostspeicher Azure Files-Anforderung Recommendation
Flex-Verbrauch Vollständiger Support Keine (keine Azure Files) Empfohlen für MI
Dediziert (App Service) Vollständiger Support Keine (keine dynamische Skalierung) Volles MI, keine Lösung nötig
Verbrauch Blobs, Warteschlangen, Tabellen Key Vault oder Azure Files entfernen Im Key Vault aufbewahren WEBSITE_AZUREFILESCONNECTIONSTRING
Elastischer Aufpreis Blobs, Warteschlangen, Tabellen Key Vault oder Azure Files entfernen Im Key Vault aufbewahren WEBSITE_AZUREFILESCONNECTIONSTRING

Bevor Sie verwaltete Identitäten für host-erforderliche Verbindungen verwenden, beachten Sie diese Einschränkungen:

  • Für Konsum- und Premium-Tarife implementiere eine dieser Workarounds für Azure Files:

    • Speichern Sie nur die WEBSITE_AZUREFILESCONNECTIONSTRING Verbindungszeichenfolge in Key Vault, das die nächstsicherste Option ist.
    • Erstellen Sie eine Consumption- oder Premium-Plan-App, die ohne Azure Files läuft. Es gibt Leistungseinflüsse, wenn man ohne Azure Files läuft. Weitere Informationen finden Sie unter Erstellen einer App ohne Azure Files.
  • Diese Trigger sind darauf AzureWebJobsStorage angewiesen, korrekt zu funktionieren:

    • Azure Blob Storage (Speicherdienst von Azure für unstrukturierte Daten)
    • Azure Event Hubs
    • Durable Functions (standardmäßig)
    • Zeitanzeige

    Wenn deine App eine dieser Erweiterungen verwendet, stelle sicher, dass ihre Version auch verwaltete Identitäten unterstützt.

  • AzureWebJobsStorage verwaltet Bereitstellungsartefakte in serverseitigen (Remote-)Builds in einem Linux-Verbrauchsplan. In diesem Szenario müssen Sie Ihre App aus einem externen Bereitstellungspaket bereitstellen und ausführen.

  • Andere Komponenten Ihrer Funktions-App könnten die AzureWebJobsStorage Verbindung wiederverwenden, darunter Storage Binding Extensions oder Storage Clients, die mit dem Azure SDK erstellt wurden. Wenn Sie verwaltete Identitäten verwenden, erstellen Sie neue Anwendungseinstellungen für diese Nicht-Host-Komponenten, selbst wenn sie verwaltete Identitäten unterstützen.

Diese spezifischen App-Einstellungen definieren identitätsbasierte Verbindungen sowohl zu AzureWebJobsStorage als auch zu APPLICATIONINSIGHTS_CONNECTION_STRING:

Einstellung Description
AzureWebJobsStorage__blobServiceUri Die URI für Blob Storage im Standardspeicherkonto. Erforderlich für souveräne Clouds oder einen benutzerdefinierten Speicher-DNS, wie zum Beispiel: https://mystorageaccount.blob.contoso.com. HTTPS ist erforderlich.
AzureWebJobsStorage__queueServiceUri Die URI für den Queuespeicher im Standardspeicherkonto. Erforderlich für souveräne Clouds oder einen benutzerdefinierten Speicher-DNS, wie zum Beispiel: https://mystorageaccount.queue.contoso.com. HTTPS ist erforderlich.
AzureWebJobsStorage__tableServiceUri Die URI für Table Storage im Standardspeicherkonto. Erforderlich für souveräne Clouds oder einen benutzerdefinierten Speicher-DNS, wie zum Beispiel: https://mystorageaccount.table.contoso.com. HTTPS ist erforderlich.
AzureWebJobsStorage__credential Legen Sie managedidentity fest, um die Authentifizierung mit verwalteter Identität zu verwenden. Eine verwaltete Identität muss in der Hosting-Umgebung verfügbar sein.
AzureWebJobsStorage__clientId oder
AzureWebJobsStorage__managedIdentityResourceId
Gibt eine spezifische, vom Benutzer zugewiesene Identität zurück, die zur Erlangung eines Zugriffstokens für die Authentifizierung der verwalteten Identität verwendet wird. Wenn keines von beiden gesetzt ist, wird die systemzugewiesene Identität der Anwendung verwendet.
APPLICATIONINSIGHTS_AUTHENTICATION_STRING Ermöglicht Verbindungen zu Application Insights mittels Microsoft Entra-Authentifizierung. Setzen Sie entweder Authorization=AAD auf (systemzugewiesen) oder ClientId=<YOUR_CLIENT_ID>;Authorization=AAD (benutzerdefiniert).

Da der Wert mit doppeltem Unterstrich (__) zur Laufzeit als Doppelpunkt (:) interpretiert wird, wird die Reihe von Einstellungen als Eigenschaften des AzureWebJobsStorage-Objekts interpretiert. Betrachten Sie zum Beispiel diese AzureWebJobsStorage Verbindungseinstellungen:

  • AzureWebJobsStorage__blobServiceUri=https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net
  • AzureWebJobsStorage__queueServiceUri=https://<STORAGE_ACCOUNT_NAME>.queue.core.windows.net
  • AzureWebJobsStorage__tableServiceUri=https://<STORAGE_ACCOUNT_NAME>.table.core.windows.net
  • AzureWebJobsStorage__credential=managedidentity
  • AzureWebJobsStorage__clientId=<MY_USER_ASSIGNED_IDENTITY_ID>

Zur Laufzeit interpretiert der Host diese Einstellungen als eine komplexe AzureWebJobsStorage-Einstellung.

"AzureWebJobsStorage":
{
    "blobServiceUri": "https://<STORAGE_ACCOUNT_NAME>.blob.core.windows.net",
    "queueServiceUri": "https://<STORAGE_ACCOUNT_NAME>.queue.core.windows.net",
    "tableServiceUri": "https://<STORAGE_ACCOUNT_NAME>.table.core.windows.net",
    "credential": "managedidentity",
    "clientId": "<MY_USER_ASSIGNED_IDENTITY_ID>"
}

Sie müssen außerdem Berechtigungen für die Identität im Standardspeicherkonto erteilen, damit der Host sich mit ausreichenden Berechtigungen verbinden kann, um die erforderlichen Aufgaben auszuführen. Um zu erfahren, wie das geht, siehe Gewähren von Berechtigungen für eine Identität.

Erteilen von Berechtigungen für eine Identität

Wenn Sie verwaltete Identitäten mit Microsoft Entra ID-Authentifizierung verwenden, müssen Sie speziell Berechtigungen der Identität zuweisen, die Ihre App beim Herstellen von Verbindungen zum entfernten Dienst verwendet. Der einfachste Weg, Ihrer App Least-Privileg-Berechtigungen zu gewähren, ist die Zuweisung integrierter Rollen.

Beachte diese Empfehlungen, wenn du den Identitäten deiner App RBAC-Berechtigungen gewährst:

  • Wann immer möglich, halte dich an das Prinzip des geringsten Privilegs , indem du der Identität nur die minimal erforderlichen Privilegien gewährst. Wenn die App zum Beispiel nur aus einer Datenquelle lesen muss, verwenden Sie eine Rolle, die nur die Berechtigung zum Lesen und nicht zum Schreiben von Daten hat.
  • Verwende keine breit eingebauten Rollen wie Eigentümer, selbst nicht nur, um die App zum Laufen zu bringen.
  • Nachdem du eine Rollenzuweisung erstellt oder geändert hast, kann es bis zu 10 Minuten dauern, bis sich die Änderung verbreitet. Während dieser Zeit kann Ihre Funktion Autorisierungsfehler (403) erhalten, obwohl die Rolle korrekt zugewiesen ist. Wenn Sie direkt nach der Erstellung einer Rollenzuweisung Fehler bemerken, warten Sie ein paar Minuten und versuchen Sie es erneut.
  • Wenn mehrere Verbindungen Berechtigungen für denselben Dienst benötigen, verwenden Sie die Rolle, die die minimale Teilmenge der Berechtigungen für alle Verbindungen zu diesem Dienst ist.
  • Mehrere Bindungen erfordern umfassendere Berechtigungen in deinem Speicherkonto als das, was die Verbindung AzureWebJobsStorage verlangt.
  • Um auf Schlüssel in Key Vault über verwaltete Identitäten zuzugreifen, weisen Sie Ihre App der Rolle Key Vault Secrets User zu. Sie können auch eine Key Vault-Zugriffsrichtlinie verwenden, um der verwalteten Identität die Berechtigung Abrufen für Geheimnisse zuzuweisen. Weitere Informationen finden Sie unter Gewähren einer Identität in Ihrer App Zugriff auf Ihren Schlüsselsafe.
  • Dieser Artikel bezieht sich nur auf integrierte Rollen, die die Mindestberechtigungen gewähren. Je nach Anforderungen deiner App musst du vielleicht stattdessen eigene Rollen erstellen.

Die benötigten Berechtigungen hängen von der Art der Verbindung ab:

  • AzureWebJobsStorage: Die Rolle Storage Blob Data Owner gewährt die Mindestberechtigungen für das Speicherkonto für die vom Host benötigte AzureWebJobsStorage-Verbindung. Diese Rolle gewährt den Speicherzugriff, den der Functions-Host benötigt, unter Wahrung des Prinzips der geringsten Rechte.

    Bei bestimmten Arten von Problemen kann Functions diagnostische Ereignisse auslösen, die Ihnen bei der Fehlersuche helfen, auch wenn Ihre App nicht starten kann. Sie müssen außerdem die Rolle Storage Table Data Contributor hinzufügen, die Zugriff auf den Table Storage bietet, in dem diese Diagnoseereignisse dauerhaft gespeichert werden. Ohne diese zusätzlichen Berechtigungen könnten Sie in Ihren Logs Warnungen sehen, dass diese Ereignisse nicht geschrieben werden können.

    Für einige andere Bindungen müssen Sie möglicherweise eine etwas umfassendere Rolle verwenden. Die Spalte "Host-required storage" in der Tabelle im Tab Bindings listet diese Rollenanforderungen auf.

  • APPLICATIONINSIGHTS_AUTHENTICATION_STRING: Die Rolle Monitoring Metrics Publisher gewährt die Mindestberechtigungen, die der Host benötigt, um sich mit Application Insights für das Logging zu verbinden.

Hinweis

Wenn Sie APPLICATIONINSIGHTS_AUTHENTICATION_STRING verwenden, um sich über die Microsoft Entra-Authentifizierung mit Application Insights zu verbinden, sollten Sie auch die lokale Authentifizierung für Application Insights deaktivieren. Diese Konfiguration erfordert Microsoft Entra Authentifizierung, damit Telemetrie in Ihren Arbeitsbereich aufgenommen werden kann.

Hinweis

Verwenden Sie Key Vault nur für Verbindungen, die Microsoft Entra ID mit verwalteten Azure-Identitäten derzeit nicht unterstützen.

Da einige Dienste die Microsoft Entra-Authentifizierung noch nicht unterstützen, kann es sein, dass Ihre App in bestimmten Fällen weiterhin Geheimnisse benötigt. In diesen Fällen kann Azure Key Vault helfen, den Verwaltungszyklus für geheimnisbasierte Authentifizierung zu optimieren. Ihre App kann Key Vault verwenden, um freigegebene Geheimnisse, einschließlich der Standardverbindungszeichenfolge für das Speicherkonto, sicherer zu speichern und darauf zuzugreifen. Obwohl Verbindungen weiterhin gemeinsame Geheimnisse nutzen, bietet Key Vault ein höheres Sicherheitsniveau für Ihre Geheimnisse, einschließlich der Schlüsselpflege und -rotation. Ihre App kann sich mit Key Vault verbinden, indem Sie verwaltete Identitäten verwenden, selbst wenn der Dienst selbst noch keine verwalteten identitätsbasierten Verbindungen unterstützt.

Wenn du Key Vault verwendest, erstelle deine Anwendungseinstellung für die Verbindung, indem du eine Key Vault-Referenz anstelle des eigentlichen Geheimnisses verwendest. Weitere Informationen finden Sie unter Quell-App-Einstellungen im Key Vault.

Beachten Sie diese Überlegungen bei der Pflege von Verbindungen in Key Vault:

  • Um auf Schlüssel im Tresor zuzugreifen, müssen Sie in Ihrer App eine Identität für Ihren Schlüsseltresor gewähren.

  • Sie können Key Vault nutzen, um Einstellungen für Ihre verwalteten, identitätsbasierten Verbindungen zu speichern. Wenn Ihre App Key Vault verwendet, müssen Referenzen einen Schlüsseltrenner von : oder /verwenden, wie zum Beispiel Storage1:blobServiceUri. Wenn Sie das reguläre Trennzeichen für Anwendungseinstellungen __ verwenden, werden Verweisnamen nicht ordnungsgemäß aufgelöst.

Man kann die AzureWebJobsStorage Einstellung so konfigurieren, dass eine Key Vault-Referenz zurückgegeben wird, die den Verbindungszeichenfolge enthält, anstatt den Verbindungszeichenfolge selbst zurückzugeben. Informationen dazu finden Sie unter Verwenden von Key Vault-Verweisen als App-Einstellungen.

Azure Files unterstützt derzeit keine verwalteten Identitätsverbindungen. Aufgrund dieser Einschränkung sollten Sie Key Vault verwenden, um die WEBSITE_AZUREFILESCONNECTIONSTRING Einstellung zu sichern, die für dynamische Skalierung sowohl von Consumption- als auch Premium-Tarifen erforderlich ist. Der Flex Consumption-Plan ist ebenfalls ein dynamischer Plan, der keine Azure Files verwendet und vollständig verwaltete Identitätsverbindungen unterstützt.

Caution

Vermeiden Sie es, direkt mit gemeinsamen Geheimnissen zu arbeiten. Verwenden Sie, wann immer möglich, eine sicherere Authentifizierungsmethode für Ihre Verbindungen.

Mindern Sie die potenziellen Nachteile durch verlorene oder kompromittierte Geheimnisse, indem Sie verwaltete Identitäten mit Microsoft Entra ID-Authentifizierung verwenden. Wenn der Ferndienst keine verwalteten Identitäten unterstützt, sollten Sie zumindest Azure Key Vault verwenden, das gemeinsame Geheimnisse sicherer verwaltet.

Falls Sie aus irgendeinem Grund keine sicherere Authentifizierungsmethode verwenden können, verschlüsselt die Plattform die Daten in Ihren Anwendungseinstellungen im Ruhemodus. Migrieren Sie Ihre Apps so schnell wie möglich von der Nutzung gemeinsamer Geheimnisse zu einer sichereren Authentifizierungsmethode.

Setzen Sie die Verbindungszeichenfolge für das Standardspeicherkonto in der Einstellung AzureWebJobsStorage fest. Diese Einstellung ist das Standard-Verbindungsverhalten, wenn du deine Funktions-App erstellst.

Verwaltung der SDK-Client-Verbindungen

Wenn du deine eigenen Client-SDK-Verbindungen im Funktionscode erstellst, verwende immer Client-Instanzen über Aufrufe hinweg, anstatt neue zu erstellen. Diese Best Practice bei allen Hosting-Plänen reduziert die Latenz, verhindert Socket-Erschöpfung und verbessert die Ressourceneffizienz.

Client-Instanzen wiederverwenden

Befolgen Sie diese Richtlinien, wenn Sie einen dienstspezifischen Client in einer Azure Functions-Anwendung verwenden:

  • Erstelle nicht bei jedem Funktionsaufruf einen neuen Client.
  • Erstelle einen einzelnen, gemeinsamen Client, den jede Funktionsaufrufung wiederverwenden kann.
  • Erwägen Sie, einen einzelnen, geteilten Client in einer Helferklasse zu erstellen, wenn verschiedene Funktionen denselben Dienst verwenden.

Der empfohlene Ansatz hängt von deiner Sprache ab:

Verwenden Sie Abhängigkeitsinjektion, um Singleton- oder Scoped-Clients zu registrieren.

Siehe Beispiele für Client-Code für vollständige Muster in jeder Sprache.

Verbindungslimits in einem Verbrauchsplan

Hinweis

Die in diesem Abschnitt beschriebenen festen Verbindungslimits gelten nur für den Legacy-Verbrauchsplan. Der Flex Consumption-Plan läuft nicht in derselben Sandbox-Umgebung und setzt diese Grenzen nicht auf. Jedoch wird die Wiederverwendung von Clients bei allen Tarifen weiterhin für optimale Leistung empfohlen.

Im alten Verbrauchsplan laufen Funktions-Apps in einer Sandbox-Umgebung , die die Anzahl der ausgehenden Verbindungen auf 600 aktive (insgesamt 1.200) pro Instanz begrenzt. Wenn Sie dieses Limit erreichen, schreibt der Functions-Host folgende Nachricht in die Logs: Host thresholds exceeded: Connections. Weitere Informationen finden Sie unter Funktionen: Diensteinschränkungen.

Dieser Grenzwert gilt pro Instanz. Wenn der Skalierungscontroller Funktions-App-Instanzen hinzufügt, um mehr Anforderungen zu verarbeiten, weist jede Instanz einen unabhängigen Verbindungsgrenzwert auf. Das bedeutet, es gibt kein globales Verbindungslimit und du kannst mehr als 600 aktive Verbindungen in allen aktiven Instanzen haben.

Bei der Fehlerbehebung von Verbindungsproblemen stellen Sie sicher, dass Application Insights für Ihre Arbeits-App aktiviert ist. Mit Application Insights können Sie Metriken für Ihre Funktions-Apps wie Ausführungen anzeigen. Weitere Informationen finden Sie unter Anzeigen von Telemetriedaten in Application Insights.

Clientcodebeispiele

Dieser Abschnitt veranschaulicht Best Practices für die Erstellung und Verwendung von Clients über den Funktionscode.

HTTP-Anfragen

Registrieren Sie einen gemeinsamen HttpClient durch Abhängigkeitsinjektion, sodass alle Funktionsaufrufe dieselbe Instanz wiederverwenden. In diesem Fall müssen Sie den Client nicht verwerfen, da die Runtime dessen Lebensdauer verwaltet.

using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace;

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddHttpClient();
    }
}

Fügen Sie dann IHttpClientFactory oder HttpClient in Ihre Funktionsklasse ein:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace MyNamespace;

public class MyFunction(HttpClient httpClient, ILogger<MyFunction> logger)
{
    [Function("MyFunction")]
    public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo timer)
    {
        var response = await httpClient.GetAsync("https://example.com");
        logger.LogInformation("Response status: {Status}", response.StatusCode);
    }
}

Azure Cosmos DB clients

Registrieren Sie einen Singleton CosmosClient in Ihrem Start-up, sodass alle Funktionen eine Verbindung teilen. Die Azure Cosmos DB-Dokumentation empfiehlt, einen Singleton-Client für die gesamte Lebensdauer Ihrer Anwendung zu verwenden.

using Microsoft.Azure.Cosmos;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace;

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddSingleton(_ =>
        {
            var connectionString = Environment.GetEnvironmentVariable("CosmosDBConnection");
            return new CosmosClient(connectionString);
        });
    }
}

Dann injiziere CosmosClient in deine Funktionsklasse:

using Microsoft.Azure.Cosmos;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace MyNamespace;

public class MyCosmosFunction(CosmosClient cosmosClient, ILogger<MyCosmosFunction> logger)
{
    private readonly Container _container = cosmosClient.GetContainer("mydb", "mycontainer");

    [Function("MyCosmosFunction")]
    public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo timer)
    {
        var item = new { id = "myId", partitionKey = "myPartitionKey", data = "example" };
        await _container.UpsertItemAsync(item, new PartitionKey("myPartitionKey"));
        logger.LogInformation("Item upserted");
    }
}

SqlClient-Verbindungen

Funktionscode kann den .NET Framework-Datenanbieter für SQL Server (SqlClient) verwenden, um Verbindungen zu einer relationalen SQL-Datenbank herzustellen. Dieser Anbieter ist auch der zugrunde liegende Anbieter von Datenframeworks, die auf ADO.NET basieren, wie zum Beispiel Entity Framework. Im Gegensatz zu HttpClient- und DocumentClient-Verbindungen implementiert ADO.NET standardmäßig das Verbindungspooling. Da jedoch noch immer nicht genügend Verbindungen verfügbar sein können, sollten Sie die Verbindungen mit der Datenbank optimieren. Weitere Informationen finden Sie unter SQL Server-Verbindungspooling (ADO.NET).

Tipp

Einige Daten-Frameworks, z.B. Entity Framework, rufen Verbindungszeichenfolgen üblicherweise aus dem Abschnitt ConnectionStrings einer Konfigurationsdatei ab. In diesem Fall müssen Sie der Sammlung Verbindungszeichenfolgen der Funktions-App-Einstellungen und der Datei local.settings.json im lokalen Projekt explizit SQL-Datenbank-Verbindungszeichenfolgen hinzufügen. Wenn du eine Instanz von SqlConnection in deinem Funktionscode erstellst, speichere den Wert der Verbindungszeichenfolge in den Anwendungseinstellungen zusammen mit deinen anderen Verbindungen.

Azure App-Konfiguration

Azure App Configuration ist ein Azure-Dienst, den Sie nutzen können, um Anwendungseinstellungen zentral zu verwalten. App Configuration unterstützt hierarchische Schlüssel-Wert-Paare und Versionsmanagement und integriert sich mit Azure Key Vault für ein sichereres Geheimnismanagement. Weitere Informationen finden Sie unter Was ist die Azure-App-Konfiguration?

Für bessere Sicherheit verwendet Ihre Funktions-App verwaltete Identitäten mit Microsoft Entra-Authentifizierung, um auf Einstellungen in einem Application Store zuzugreifen. Weitere Informationen finden Sie unter Verwenden von App Configuration-Verweisen für Azure Functions.

Hinweis

Bei der Verwendung der Azure App Configuration zur Speicherung von Einstellungen für verwaltete, identitätsbasierte Verbindungen müssen Referenzen einen Schlüsseltrenner von : oder / im Format <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespaceverwenden. Wenn Sie das reguläre Trennzeichen für Anwendungseinstellungen __ verwenden, werden Verweisnamen nicht ordnungsgemäß aufgelöst.