Partager via


Sortie d’Azure Functions à partir d’Azure Stream Analytics

Azure Functions est un service de calcul serverless que vous pouvez utiliser pour exécuter du code à la demande sans avoir à provisionner ou gérer explicitement l’infrastructure. Il vous permet d’implémenter du code déclenché par des événements qui se produisent dans Azure ou dans des services partenaires. Cette capacité d’Azure Functions à répondre aux déclencheurs en fait une sortie naturelle pour Azure Stream Analytics. Cet adaptateur de sortie permet aux utilisateurs de connecter Stream Analytics à Azure Functions et d’exécuter un script ou un élément de code en réponse à divers événements.

La sortie Azure Functions de Stream Analytics n’est pas disponible dans Microsoft Azure géré par 21Vianet et Azure Allemagne (T-Systems International). La connexion à Azure Functions à l’intérieur d’un réseau virtuel à partir d’un travail Stream Analytics qui s’exécute dans un cluster multilocataire n’est pas non plus prise en charge.

Azure Stream Analytics appelle Azure Functions via des déclencheurs HTTP. L’adaptateur de sortie Azure Functions est disponible avec les propriétés configurables suivantes :

Nom de la propriété Description
Conteneur de fonctions Le nom de votre application Azure Functions.
Fonction Le nom de la fonction dans votre application Azure Functions.
Clé Si vous souhaitez utiliser une fonction Azure issue d’un autre abonnement, vous pouvez le faire en fournissant la clé pour accéder à votre fonction.
Taille maximale du lot Une propriété qui vous permet de définir la taille maximale pour chaque lot de sortie envoyé à votre fonction Azure. L’unité d’entrée est en octets. Par défaut, cette valeur est de 262 144 octets (256 Ko).
Nombre maximal de lots Une propriété qui vous permet de spécifier le nombre maximal d'événements envoyés à Azure Functions dans chaque lot. La valeur par défaut est 100.

Azure Stream Analytics s’attend à ce que l’état HTTP 200 de l’application Functions pour les lots qui ont été traités avec succès.

Quand Azure Stream Analytics reçoit une exception 413 (« entité de requête http trop grande ») d’une fonction Azure, elle réduit la taille des lots qu’il envoie à Azure Functions. Dans votre code de fonction Azure, utilisez cette exception pour vous assurer qu’Azure Stream Analytics n’envoie pas de lots surdimensionnés. Vérifiez également que le nombre maximal de lots et les valeurs de taille utilisées dans la fonction sont cohérentes avec les valeurs entrées dans le portail Stream Analytics.

Note

Lors du test de connexion, Stream Analytics envoie (POST) un lot vide à Azure Functions pour tester si la connexion entre les deux fonctionne. Assurez-vous que votre application Functions gère les demandes de lots vides pour vérifier que la connexion de test réussit.

En outre, dans une situation où il n’y a aucun événement d’atterrissage dans une fenêtre de temps, aucune sortie n’est générée. Par conséquent, la fonction computeResult n’est pas appelée. Ce comportement est cohérent avec les fonctions d’agrégation intégrées à fenêtres.

Partitionnement

La clé de partition est basée sur la clause PARTITION BY dans la requête. Le nombre d’enregistreurs de sortie suit le partitionnement d’entrée pour les requêtes entièrement parallélisées.

Taille du lot de sortie

La taille du lot par défaut est de 262 144 octets (256 Ko). Le nombre d’événements par lot par lot est de 100. La taille du lot est configurable et peut être augmentée ou réduite dans les options de sortie Stream Analytics.

Limitation

Azure Functions doit terminer sa requête en moins de 100 secondes, car le client HTTP expire après 100 secondes. S’il faut plus de 100 secondes pour qu’Azure Functions traite un lot de données, il existe un délai d’attente qui déclenche une nouvelle tentative. Cette nouvelle tentative peut entraîner des données en double, car Azure Functions traite à nouveau les données et génère potentiellement la même sortie, car elle a peut-être été générée partiellement dans la requête précédente.

Exemples de code

La sortie Azure Functions peut être utilisée pour relayer des messages dans des bases de données non prises en charge, telles que Redis ou mettre à jour des tables dans Azure SQL.

Étapes suivantes