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

Les applications web front-end appellent souvent des API back-end 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.

Azure Functions API dans Static Web Apps sont disponibles dans deux configurations possibles en fonction du plan hébergement :

  • fonctions Managed : 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.

  • Bring your own functions : Vous pouvez éventuellement fournir une application Azure Functions existante de tout type de plan, qui inclut 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 fonctions personnalisées
Accès à Azure Functions déclencheurs et liaisons HTTP uniquement Tous
Fonctions Azure prises en charge environnements d'exécution1 Consulter langages et runtimes pris en charge. Tous
Plans Azure Functions hébergement pris en charge Consommation Consommation
Haut de gamme
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
modèle de programmation Durable Functions
Identité gérée
Gestion des jetons pour l'authentification et l'autorisation d'Azure App Service
Fonctions API disponibles en dehors de Azure Static Web Apps
Références de 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 Azure Functions de support du langage runtime.

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

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

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 demandes 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 l’API Static Web Apps constraints, 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 dans Node.js 12, Node.js 14, Node.js 16, Node.js 18, Node.js 20 (préversion), .NET Core 3.1, .NET 6.0, .NET 7.0, .NET 8.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 Functions.

Étapes suivantes