Prise en charge des API dans Azure Static Web Apps avec Azure Functions

Les applications web frontales appellent souvent des API principales pour les données et les services. Par défaut, Azure Static Web Apps fournit des points de terminaison d’API serverless intégrés via Azure Functions.

Les API Azure Functions dans Static Web Apps sont prises en charge par deux configurations possibles en fonction du plan d’hébergement :

  • Fonctions managées : par défaut, l’API d’une application web statique est une application Azure Functions gérée et déployée par Azure Static Web Apps associée à certaines restrictions.

  • Apportez vos propres fonctions : Si vous le souhaitez, vous pouvez fournir une application Azure Functions existante, quel que soit le type de plan, qui est accompagnée de toutes les fonctionnalités d’Azure Functions. Dans cette configuration, vous avez la responsabilité de gérer un déploiement distinct pour l’application Azure Functions.

Le tableau suivant compare les différences entre l’utilisation de fonctions gérées et celle de fonctions existantes.

Fonctionnalité Fonctions managées Apportez vos propres fonctions
Accéder aux déclencheurs et des liaisons Azure Functions HTTP uniquement Tous
Runtimes Azure Functions pris en charge1 Node.js 12
Node.js 14
Node.js 16
Node.js 18 (Préversion publique)
.NET Core 3.1
.NET 6.0
.NET 7.0
Python 3.8
Python 3.9
Python 3.10
Tous
Prise en charge des plans d’hébergement Azure Functions Consommation Consommation
Premium
Dédié
Sécurité intégrée avec accès direct aux données d’authentification des utilisateurs et d’autorisation basées sur les rôles
Intégration du routage qui met l’itinéraire /api à la disposition de l’application web en toute sécurité sans nécessiter de règles CORS. personnalisées
Fonctions distribuées (préversion) pour la distribution globale dynamique du calcul backend.
Modèle de programmation Durable Functions
Identité gérée
Gestion des jetons d’authentification et d’autorisation Azure App Service
Fonctions d’API disponibles en dehors d’Azure Static Web Apps
Références Key Vault

1 Pour spécifier la version du runtime dans les fonctions managées, ajoutez un fichier config à votre application front-end et définissez la propriété apiRuntime. La prise en charge est soumise à la stratégie de prise en charge du runtime du langage Azure Functions.

Les options d’API pour Static Web Apps incluent les services Azure suivants :

Pour plus d’informations, consultez la Vue d’ensemble des API.

Remarque

Les fonctions distribuées sont disponibles avec les fonctions managées. Les fonctions distribuées distribuent automatiquement vos fonctions managées dans des régions avec des charges de requêtes élevées.

Configuration

Les points de terminaison d’API sont disponibles pour l’application web via l’itinéraire api.

Fonctions managées Amener vos propres fonctions
Bien que l’itinéraire /api soit fixe, vous contrôlez l’emplacement du dossier du code source de l’application de fonction managée. Vous pouvez modifier cet emplacement en modifiant le fichier YAML de flux de travail situé dans le dossier . GitHub/workflows de votre référentiel. Les requêtes adressées à l’itinéraire /api sont envoyées à votre application Azure Functions existante.

Résolution des problèmes et journaux

Les journaux ne sont disponibles que si vous ajoutez Application Insights.

Fonctions managées Amener vos propres fonctions
Activez la journalisation en activant Application Insights sur votre application web statique. Activez la journalisation en activant Application Insights sur votre application Azure Functions.

Contraintes

Outre les contraintes de l’API Static Web Apps, les restrictions suivantes s’appliquent également aux API Azure Functions :

Fonctions managées Amener vos propres fonctions
  • Les déclencheurs et les liaisons sont limités à HTTP.
  • L’application Azure Functions doit être en Node.js 12, Node.js 14, Node.js 16, Node.js 18 (préversion publique) .NET Core 18, .NET 3.1, Python 6.0, Python 3.8, Python 3.9 ou Python 3.10.
  • Certains paramètres d’application sont gérés par le service. Par conséquent, les préfixes suivants sont réservés par le runtime :
    • APPSETTING_, AZUREBLOBSTORAGE_, AZUREFILESSTORAGE_, AZURE_FUNCTION_, CONTAINER_, DIAGNOSTICS_, DOCKER_, FUNCTIONS_, IDENTITY_, MACHINEKEY_, MAINSITE_, MSDEPLOY_, SCMSITE_, SCM_, WEBSITES_, WEBSITE_, WEBSOCKET_, AzureWeb
  • Certaines balises d’application sont utilisées en interne par le service. Par conséquent, les balises suivantes sont réservées :
    • AccountId, EnvironmentId, FunctionAppId.
  • Vous êtes responsable de la gestion du déploiement de l’application Azure Functions.

Étapes suivantes