API-Unterstützung in Azure Static Web Apps mit Azure Functions

Front-End-Web-Anwendungen rufen häufig Back-End-APIs für Daten und Dienste auf. Von Azure Static Web Apps werden serverlose API-Endpunkte über Azure Functions bereitgestellt.

Azure Functions-APIs werden in Azure Static Web Apps je nach Hostingplan von zwei möglichen Konfigurationen unterstützt:

  • Verwaltete Funktionen: Standardmäßig ist die API einer statischen Web-App eine Azure Functions-Anwendung, die von Azure Static Web Apps verwaltet und bereitgestellt wird, was mit ein paar Einschränkungen einhergeht.

  • Bring Your Own Functions (BYOF) (Nutzung eigener Funktionen): Optional können Sie eine vorhandene Azure Functions-Anwendung eines beliebigen Plantyps bereitstellen, die über alle Features von Azure Functions verfügt. Mit dieser Konfiguration sind Sie dafür verantwortlich, eine separate Bereitstellung für die Functions-App zu verarbeiten.

Die folgende Tabelle vergleicht die Unterschiede zwischen der Verwendung verwalteter und vorhandener Funktionen.

Feature Verwaltete Funktionen Nutzung eigener Funktionen (BYOF)
Zugriff auf Azure Functions-Trigger Nur HTTP Alle
Unterstützte Azure Functions-Runtimes1 Node.js 12
Node.js 14
Node.js 16
.NET Core 3.1
.NET 6.0
.NET 7.0
Python 3.8
Python 3.9
Alle
Unterstützte Hostingpläne für Azure Functions Nutzung Nutzung
Premium
Dediziert
Integrierte Sicherheit mit direktem Zugriff auf Benutzerdaten für die Authentifizierung und rollenbasierte Autorisierung
Routingintegration, durch die die /api ganz ohne benutzerdefinierte CORS-Regeln auf sichere Weise für die Web-App verfügbar gemacht wird.
Durable Functions-Programmiermodell
Verwaltete Identität
Tokenverwaltung mithilfe der Authentifizierungs- und Autorisierungsfunktionen von Azure App Service
Außerhalb von Azure Static Web Apps verfügbare API-Funktionen
Key Vault-Verweise

1 Um die Laufzeitversion in verwalteten Funktionen anzugeben, fügen Sie Ihrer Front-End-App eine Konfigurationsdatei hinzu, und legen Sie die -Eigenschaft fest. Die Unterstützung unterliegt der Unterstützungsrichtlinie für die Azure Functions-Sprachlaufzeit.

API-Optionen für Static Web Apps umfassen die folgenden Azure-Dienste:

Weitere Informationen finden Sie in der APIs-Übersicht.

Konfiguration

API-Endpunkte sind für die Web-App über die api verfügbar.

Verwaltete Funktionen Nutzung eigener Funktionen
Während die /api-Route festgelegt ist, haben Sie die Kontrolle über den Quellcode-Ordnerspeicherort der verwalteten Functions-App. Dieser Ort kann durch Bearbeiten der YAML-Datei des Workflows geändert werden, die sich im Ordner .github/workflows Ihres Repositorys befindet. Anforderungen an die /api-Route werden an Ihre vorhandene Azure Functions-App gesendet.

Problembehandlung und Protokolle

Protokolle sind nur verfügbar, wenn Sie Application Insights hinzufügen.

Verwaltete Funktionen Nutzung eigener Funktionen
Aktivieren Sie die Protokollierung, indem Sie Application Insights für Ihre statische Web-App aktivieren. Aktivieren Sie die Protokollierung, indem Sie Application Insights für Ihre Azure Functions-App aktivieren.

Einschränkungen

Zusätzlich zu den Static Web Apps-API-Einschränkungen gelten ebenfalls die folgenden Einschränkungen für Azure Functions-APIs:

Verwaltete Funktionen Nutzung eigener Funktionen
  • Trigger sind auf HTTP beschränkt.
  • Die Azure Functions-App muss entweder in Node.js 12, Node.js 14, Node.js 16, .NET Core 3.1, .NET 6.0, Python 3.8 oder Python 3.9 geschrieben sein.
  • Einige Anwendungseinstellungen werden vom Dienst verwaltet, weshalb die folgenden Präfixe von der Runtime reserviert sind:
    • APPSETTING_, AZUREBLOBSTORAGE_, AZUREFILESSTORAGE_, AZURE_FUNCTION_, CONTAINER_, DIAGNOSTICS_, DOCKER_, FUNCTIONS_, IDENTITY_, MACHINEKEY_, MAINSITE_, MSDEPLOY_, SCMSITE_, SCM_, WEBSITES_, WEBSITE_, WEBSOCKET_, AzureWeb
  • Einige Anwendungstags werden vom Dienst intern verwendet. Daher sind die folgenden Tags reserviert:
    • AccountId, EnvironmentId, FunctionAppId.
  • Sie sind für die Verwaltung der Bereitstellung der Functions-App verantwortlich.

Nächste Schritte