Lorsque vous travaillez avec Azure Functions en mode de consommation flexible, les développeurs peuvent rencontrer des difficultés pour configurer un déclencheur Blob pour les applications de fonction Python. Cet article présente la solution pour que le déclencheur Blob fonctionne comme prévu et fournit des ressources supplémentaires pour la mise en œuvre.
Aperçu du problème
Le problème survient lorsque l'on tente de configurer un déclencheur Blob pour une application de fonction Python déployée en mode de consommation flexible. Malgré un déploiement correct, le déclencheur peut ne pas se déclencher lorsqu'un blob est chargé dans le conteneur spécifié. Les symptômes courants sont les suivants :
- Le déclencheur Blob ne se déclenche pas.
- La supervision dans Application Insights n'affiche aucune requête.
- La documentation et les exemples concernant les déclencheurs Blob en mode de consommation flexible sont limités ou peu clairs.
Cause racine
Les déclencheurs Blob en mode de consommation flexible nécessitent des déclencheurs basés sur Event Grid pour fonctionner correctement. Cela diffère du comportement par défaut du déclencheur Blob dans le plan de consommation standard. Une mauvaise configuration ou le recours à une documentation obsolète peut entraîner des échecs de déploiement.
Solution
Le problème a été résolu en passant à un déclencheur basé sur Event Grid pour le stockage Blob. Voici les étapes pour mettre en œuvre la solution :
Étapes pour configurer le déclencheur Blob en mode de consommation flexible
- Utiliser Event Grid pour le stockage Blob
Les déclencheurs de stockage Blob Azure reposent sur les notifications Event Grid pour fonctionner en mode de consommation flexible. Suivez la documentation officielle ici : Déclencheur de stockage Blob Azure pour Azure Functions. - Mettre à jour le code de la fonction
Assurez-vous que votre application de fonction Python est configurée pour gérer les événements Event Grid. Voici un exemple de code de fonction :
import logging
import azure.functions as func
def main(event: func.EventGridEvent):
logging.info('Event received: %s', event.get_json())
- Configurer le stockage Blob et Event Grid
- Créez un compte de stockage Blob et activez les notifications Event Grid .
- Configurez un abonnement Event Grid pour transférer les événements vers votre fonction Azure.
- Déployer avec des modèles Bicep ou ARM
Voici un exemple de modèle Bicep pour déployer l'application de fonction avec l'intégration Event Grid :
resource blobStorage 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: 'myBlobStorage'
location: 'East US'
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
}
resource eventGridSubscription 'Microsoft.EventGrid/eventSubscriptions@2022-06-15' = {
name: 'myBlobEventSubscription'
scope: blobStorage
properties: {
destination: {
endpointType: 'AzureFunction'
properties: {
functionAppResourceId: '<FunctionAppResourceId>'
}
}
filter: {
includedEventTypes: [
'Microsoft.Storage.BlobCreated'
]
}
}
}
- Vérifier le déploiement
- Chargez un blob dans le conteneur spécifié du stockage Blob.
- Vérifiez Application Insights pour voir les requêtes entrantes.
Remarques supplémentaires
- Si vous utilisez GitHub Actions ou Azure DevOps pour le déploiement, assurez-vous que les paramètres corrects pour le mode de consommation flexible sont appliqués.
- Pour le dépannage, consultez Surveillance d'Azure Functions pour obtenir des informations sur l'activité du déclencheur.
Conclusion
Le problème de configuration d'un déclencheur Blob pour les applications de fonction Python en mode de consommation flexible peut être résolu en utilisant des déclencheurs basés sur Event Grid. En suivant les étapes décrites ci-dessus, vous pouvez vous assurer que votre déclencheur Blob fonctionne parfaitement avec Azure Functions.
Pour plus d'informations, consultez la documentation officielle : Déclencheur de stockage Blob Azure pour Azure Functions.