Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure Functions sur Azure Container Apps offre un environnement d’hébergement serverless entièrement managé qui regroupe les fonctionnalités pilotées par les événements de Azure Functions avec les fonctionnalités robustes de Container Apps. Cette intégration inclut des fonctionnalités avancées telles que l’orchestration basée sur Kubernetes, la mise à l’échelle automatique intégrée optimisée par KEDA (mise à l’échelle automatique basée sur les événements Kubernetes), l’intégration de Dapr (Distributed Application Runtime), la prise en charge des charges de travail GPU, la prise en charge de side-car, la connectivité de réseau virtuel (VNet), et la gestion des révisions.
Cette approche est utile lorsque vous souhaitez que vos fonctions s’exécutent avec d’autres applications conteneurisées telles que les microservices, les API ou les sites web. En outre, la conteneurisation de vos applications de fonction peut vous aider quand vous avez besoin de dépendances personnalisées ou que vous souhaitez tirer parti de la mise à l’échelle à zéro pour réaliser des économies. Si vous exécutez de lourdes tâches de calcul telles que l’inférence IA, Container Apps prend également en charge l’hébergement basé sur GPU via l’offre GPU serverless et les profils de charge de travail dédiés.
En tant que fonctionnalité intégrée sur Azure Container Apps, vous pouvez déployer des images Azure Functions directement sur Azure Container Apps à l’aide du fournisseur de ressources Microsoft.App en définissant kind=functionapp lors de l’appel de az containerapp create. Les applications créées de cette façon ont accès à toutes les fonctionnalités de Azure Container Apps. Si vous effectuez un déploiement via Azure portail, vous pouvez activer l’option Optimize pour l’application Functions pendant l’installation. Pour plus d’informations, consultez la section déploiement et configuration pour plus d’informations.
Principaux avantages
Le modèle d’hébergement Container Apps s’appuie sur la flexibilité des charges de travail conteneurisées et sur la nature pilotée par les événements de Azure Functions. Il offre les avantages clés suivants :
- Exécutez les Azure Functions sous forme de conteneurs avec des dépendances personnalisées et des piles de langage.
- Effectuez un scale-in à zéro et effectuez un scale-out à 1 000 instances à l’aide de KEDA.
- Sécuriser la mise en réseau avec une intégration complète au réseau virtuel.
- Fonctionnalités d’application conteneur avancées telles que les révisions multiples, le fractionnement du trafic, l’intégration Dapr et les composants d’observabilité.
- Prise en charge du GPU dédié et sans serveur pour les charges de travail nécessitant beaucoup de ressources de calcul.
- Environnement Container Apps unifié pour exécuter des Fonctions aux côtés des microservices, des API et des travaux en arrière-plan.
Le tableau suivant vous aide à comparer les fonctionnalités de Functions sur Container Apps avec le plan de consommation Flex.
| Caractéristique | Applications de conteneur | Plan Consommation Flex |
|---|---|---|
| Mettre à l’échelle vers zéro | ✅ Oui (via KEDA) | ✅ Oui |
| Échelle horizontale maximale | 1 000 (par défaut 10, configurable) | 1 000 |
| Instances toujours actives |
✅ Oui (via minReplicas) |
✅ Oui (via des instances toujours disponibles) |
| Intégration au réseau virtuel | ✅ Oui | ✅ Oui |
| Prise en charge des conteneurs personnalisés | ✅ Oui (apportez votre propre image) | ❌ Limité (sans apporter votre propre conteneur) |
| Prise en charge de GPU | ✅ Oui (via le profil de charge de travail sans serveur dédié au GPU) | ❌ Non |
| Fonctionnalités intégrées | Prise en charge des fonctionnalités Container Apps. Par exemple, KEDA, Dapr, multi-révisions, mTLS, side-cars, contrôle d'entrée et plus encore | Fonctionnalités uniquement fonctionnelles |
| Modèle de facturation | Tarification de Container Apps : Plan de consommation (processeur virtuel, mémoire, requêtes) & Plan dédié (basé sur le profil de charge de travail) | Durée d’exécution + instances toujours prêtes |
Pour obtenir une comparaison complète des fonctions sur container Apps par rapport au plan Flex Consumption et à tous les autres types de plan et d’hébergement, consultez les options d’échelle et d’hébergement de Functions.
Scénarios
Azure Functions sur Container Apps sont idéales pour un large éventail de cas d’usage, en particulier lorsque vous avez besoin d’une exécution pilotée par les événements, d’une flexibilité de conteneur ou d’une intégration sécurisée avec d’autres services :
- API Line of business : Empaqueter des bibliothèques personnalisées, des packages et des API avec Azure Functions pour les applications métier.
- Migration et modernisation : migration d’applications héritées et/ou monolithes locales vers des microservices natifs cloud sur des conteneurs.
- Traitement piloté par les événements : Gérer les événements à partir d’Event Grid, de Service Bus, d’Event Hubs et d’autres sources d’événements grâce à la facilité du modèle de programmation Functions.
- Charges de travail IA & GPU : traitement de charge de travail serverless de vidéos, d’images, de transcriptions ou d’autres tâches nécessitant beaucoup de traitement et des ressources de calcul GPU. Pour plus d’informations, consultez Utilisant des GPU serverless dans Azure Container Apps.
- Microservices : Intégrez Azure Functions à d’autres services hébergés par Container Apps.
- Conteneurs personnalisés : empaquetez Functions avec des runtimes personnalisés ou des sidecars.
- Applications privées : sécurisez les fonctions internes uniquement à l’aide d’un réseau virtuel et de l’entrée interne.
- .NET Aspire : L’intégration de .NET Aspire avec Azure Functions vous permet de développer, de déboguer et d’orchestrer un projet Azure Functions .NET dans le cadre de l’hôte d’application .NET Aspire. En savoir plus sur Azure Functions avec .NET Aspire
- General Functions : Exécuter les scénarios standard Azure Functions pris en charge (par exemple, minuteurs, traitement de fichiers, déclencheurs de base de données).
Déploiement et configuration
Pour déployer Azure Functions sur Azure Container Apps, vous empaquetez votre application Functions en tant qu’image conteneur personnalisée et déployez-la comme n’importe quelle autre application conteneur avec une différence clé. Vous devez définir la propriété kind=functionapp lors de l’utilisation des modèles Azure CLI ou ARM/Bicep. Pour obtenir des étapes détaillées et des exemples, reportez-vous à la documentation de prise en main officielle.
az containerapp create \
--resource-group $RESOURCE_GROUP_NAME \
--name $CONTAINER_APP_NAME \
--environment $ENVIRONMENT_NAME \
--image mcr.microsoft.com/k8se/quickstart-functions:latest \
--ingress external \
--target-port 80 \
--kind functionapp \
--query properties.outputs.fqdn
Cette commande retourne l’URL de votre application Functions. Copiez cette URL et collez-la dans un navigateur web.
Dans le portail Azure, sélectionnez l’option Optimize pour Azure Functions lors de la création de l’application conteneur pour simplifier la configuration.
Toutes les méthodes de déploiement standard sont prises en charge, notamment :
- Azure CLI
- portail Azure
- Modèles ARM / Bicep
- Pipelines CI/CD (par exemple, GitHub Actions, Azure Pipelines)
Pour obtenir des étapes détaillées et des exemples, reportez-vous à la documentation de prise en main officielle.
Tarification et facturation
Azure Functions sur Azure Container Apps suivent le même modèle de tarification que Azure Container Apps. La facturation est basée sur le type de plan que vous sélectionnez pour votre environnement, qui peut être Consommation ou Dédié.
- Plan de consommation : cette option de calcul serverless vous facture uniquement les ressources que vos applications utilisent pendant leur exécution.
- Plan dédié : cette option fournit des ressources de calcul personnalisées, vous facturant pour les instances allouées à chaque profil de travail.
Votre choix de plan détermine la façon dont les calculs de facturation sont effectués. Différentes applications au sein d’un environnement peuvent utiliser différents plans.
Points clés à noter :
- Aucun frais supplémentaire n’est facturé pour l’utilisation du modèle de programmation Azure Functions dans Container Apps.
- Durable Functions et d’autres modèles avancés sont pris en charge et facturés sous le même modèle tarifaire Container Apps. Pour obtenir des exemples et des mécanismes de facturation détaillés, reportez-vous à la documentation Billing dans Azure Container Apps.
Mise à l’échelle pilotée par les événements
Azure Functions sur Container Apps prend en charge tous les principaux runtimes de langage disponibles dans Azure Functions, y compris C#, JavaScript / TypeScript (Node.js), Python, Java, PowerShell et conteneurs personnalisés (avec votre propre image).
Les fonctions Azure s'exécutant sur Azure Container Apps configurent automatiquement des règles de mise à l’échelle en fonction de la source d’événement, éliminant ainsi la nécessité de la définition manuelle des règles de mise à l’échelle KEDA. C’est pourquoi le bouton « Ajouter des règles d’échelle » sur le portail Azure est désactivé pour Functions sur Container Apps. Toutefois, vous pouvez toujours définir le nombre minimal et maximal de réplicas pour établir des limites de mise à l’échelle, et maintenir le contrôle sur l’allocation des ressources.
La plateforme convertit automatiquement vos paramètres de déclenchement Functions, issus de la configuration host.json ou des attributs de déclenchement, en paramètres de scaler KEDA appropriés. Pour obtenir une référence détaillée sur la façon dont les configurations de déclenchement des Functions correspondent aux paramètres de mise à l’échelle de KEDA, consultez Azure Functions les mappages de mise à l’échelle de KEDA.
Tous les déclencheurs et liaisons Azure Functions standard sont pris en charge dans Container Apps avec les exceptions suivantes :
- Stockage Blob Déclencher la mise à l’échelle automatique : fonctionne uniquement lors de l’utilisation d’Event Grid comme source. En savoir plus sur le déclenchement des fonctions Azure sur les conteneurs d’objets blob à l’aide d’un abonnement aux événements
- Durable Functions mise à l’échelle automatique : prend uniquement en charge les fournisseurs de stockage MSSQL (Microsoft SQL Server) et DTS (Planificateur de tâches durables). Voir plus d’instructions sur le déploiement de fonctions durables avec MSSQL
- Mise à l’échelle automatique non prise en charge pour :
- Azure Cache pour Redis
- Azure SQL
Les identités managées sont prises en charge pour les déclencheurs et les liaisons qui l’autorisent. Ils sont également disponibles pour :
- Compte de stockage par défaut (AzureWebJobsStorage)
- Azure Container Registry (ACR)
- Connexion à des sources d’événements de déclencheur
Pour les déclencheurs non pris en charge, utilisez les nombres de réplicas fixes (autrement dit, définissez minReplicas > 0) dans Azure Functions sur Azure Container Apps. Pour plus d’informations, consultez le guide des développeurs Functions.
Mise à l’échelle et niveau de performance
Azure Functions sur Azure Container Apps sont mises à l’échelle automatiquement en utilisant KEDA en fonction des événements, sans avoir à configurer manuellement des règles de mise à l’échelle. Vous pouvez toujours définir des réplicas minimales et maximales pour contrôler le comportement de mise à l’échelle.
- Mise à l’échelle basée sur les événements : effectue automatiquement une mise à l’échelle basée sur des déclencheurs tels que Event Grid, Service Bus ou HTTP.
- Mise à l’échelle à zéro : les applications inactives sont réduites à zéro pour réduire les coûts.
- Contrôle du démarrage à froid : en savoir plus sur la réduction du temps de démarrage à froid sur Azure Container Apps.
- Concurrence : chaque instance peut traiter plusieurs événements en parallèle.
- Grande échelle : scale-out vers 1 000 instances par application (la valeur par défaut est 10).
- Prise en charge du GPU : exécutez des charges de travail lourdes de calcul telles que l’inférence d’IA à l’aide de nœuds soutenus par GPU.
Cela rend les applications conteneurisées idéales pour les charges de travail en rafale et en régime permanent. Pour plus d’informations, consultez Définir les règles de mise à l’échelle dans Azure Container Apps
Le réseau et la sécurité
Azure Functions sur Container Apps bénéficie des fonctionnalités robustes networking et security pour des déploiements sécurisés et évolutifs :
- Intégration au réseau virtuel : accédez en toute sécurité aux ressources privées via des points de terminaison internes et des bases de données privées.
- Identité managée : authentifiez-vous auprès des services Azure à l’aide d’identités attribuées par le système/l’utilisateur, sans secrets ni chaînes de connexion nécessaires.
- Prise en charge Dapr : activez la publication/l'abonnement, la gestion de l'état et l'invocation de service sécurisé via les sidecars Dapr. Pour plus d’informations, consultez les API microservice alimentées par Dapr.
- Entrée et TLS : exposez des points de terminaison HTTP sécurisés avec TLS/mTLS, des domaines personnalisés ou conservez-les en interne.
- Isolation de l’environnement : Functions partagent les limites de l’environnement Container Apps pour la communication sécurisée et délimitée.
Ces fonctionnalités rendent les fonctions hébergées par Container Apps idéales pour les applications serverless sécurisées de classe entreprise.
Surveillance et journalisation
Azure Functions sur Container Apps s’intègrent en toute transparence aux outils d’observabilité de Azure pour le suivi des performances et le diagnostic des problèmes :
- Application Insights : fournit des données de télémétrie pour les requêtes, les dépendances, les exceptions, et les traces personnalisées. Pour plus d’informations, consultez Monitor Azure Functions.
- Log Analytics : Capture les événements de cycle de vie et de mise à l’échelle des conteneurs (par exemple, les entrées FunctionsScalerInfo). Pour plus d’informations, consultez Journalisation des applications dans Azure Container Apps.
- Journalisation personnalisée : pend en charge les frameworks standard tels que ILogger et la journalisation de console pour la sortie structurée.
- Supervision centralisée : l’environnement Container Apps offre des tableaux de bord et des alertes unifiés sur toutes les applications.
Variables d'environnement
Azure Functions s’exécutant sur Container Apps ont accès aux variables d’environnement fournies par le système. La CONTAINER_NAME variable d’environnement est automatiquement définie sur le nom du réplica de votre application de fonction. Utilisez cette variable pour la journalisation, la corrélation et le débogage dans les scénarios multi-réplica.
Pour obtenir la liste complète des variables d’environnement fournies par le système, consultez les variables Environment dans Azure Container Apps.
Considérations
Gardez à l’esprit ces autres considérations lors de l’utilisation de Azure Functions sur Azure Container Apps :
- Exigence d’entrée pour la mise à l’échelle automatique : pour activer la mise à l’échelle automatique basée sur les événements, l’entrée doit être activée (publiquement ou dans l’environnement interne Container Apps).
- Compte de stockage obligatoire : chaque application Functions déployée sur Container Apps doit être liée à un compte de stockage. Cela est nécessaire pour gérer les déclencheurs, les journaux, et l’état. Passez en revue les conseils relatifs au compte de stockage pour connaître les meilleures pratiques.
- Stockage à plusieurs révisions : lors du déploiement avec plusieurs révisions actives, affectez un compte de stockage dédié à chaque révision. L’utilisation d’un compte de stockage dédié permet d’éviter les conflits, et garantit une isolation appropriée. Autrement, si vous n’avez pas besoin de révisions simultanées, vous pouvez utiliser le mode de révision unique par défaut pour une gestion simplifiée.
- Déclencheurs à plusieurs révisions : si vous utilisez le mode multi-révision avec un déclencheur basé sur le tirage, utilisez une source d’événement différente pour chaque révision afin d’éviter les conflits liés aux consommateurs concurrents. Les fonctions qui utilisent des déclencheurs Stockage File d'attente Azure, Azure Event Hubs, Azure Service Bus ou Durable Functions sont des exemples de déclencheurs basés sur l'extraction.
- Latence de démarrage à froid : lorsque votre application conteneur est mise à l’échelle à zéro pendant les périodes inactives, la première demande après l’inactivité subit un démarrage à froid. Apprenez-en davantage sur la réduction des temps de démarrage à froid.
- Intégration d’Application Insights : pour une supervision et des diagnostics robustes, liez votre application Functions à Application Insights. Pour plus d’informations, consultez Intégration d’App Insights à Functions.
- Proxys Functions : non pris en charge. Pour les scénarios de passerelle d’API, intégrez-les à Gestion des API Azure à la place.
- Emplacements de déploiement : les emplacements intermédiaires et de production ne sont pas disponibles. Utilisez des stratégies de déploiement bleu-vert pour les mises en production sans temps d’arrêt.
- Clés d’accès Functions : l’utilisation du portail pour générer des clés d’accès Functions n’est pas prise en charge. Envisagez d’utiliser Azure Key Vault pour stocker des clés. Vous pouvez également utiliser les options suivantes pour sécuriser les points de terminaison HTTP en production :
- Limites de quota et de ressources : les environnements Container Apps ont des limites par défaut sur la mémoire, le processeur, et le nombre d’instances par région. Pour plus d’informations, consultez les limites d’environnement et les quotas par défaut. Si votre charge de travail nécessite davantage de ressources, vous pouvez demander une augmentation du quota.
- Configuration de règle de mise à l’échelle managée : le bouton « Ajouter des règles d’échelle » sur le portail Azure est désactivé pour Azure Functions hébergé sur Container Apps, car les règles de mise à l’échelle sont automatiquement configurées en fonction de la source d’événement. Les définitions manuelles de règles KEDA ne sont pas requises dans cette configuration.
Envoyer des commentaires
Envoyez un problème ou une demande de fonctionnalité au dépôt Azure Container Apps GitHub.
Étapes suivantes / Autres ressources
Pour continuer à apprendre et à créer avec Azure Functions sur Container Apps, explorez les ressources suivantes :
- Getting started : Guide pas à pas pour déployer et configurer des Azure Functions dans Azure Container Apps.
- documentation Azure Container Apps : référence complète pour les fonctionnalités Container Apps, notamment la mise à l’échelle, la mise en réseau, le dapr et les profils de charge de travail.
- Azure Container Apps tarification : détails sur la facturation basée sur la consommation et les coûts du plan dédié.
- Azure Functions options d’hébergement : comparaison des plans d’hébergement, notamment Container Apps, Flex Consumption, Premium et Dedicated.
- Azure Functions guide du développeur : présentation approfondie des déclencheurs, liaisons, comportement du runtime et configuration.