SLS s'intègre à Function Compute pour la transformation de données en continu. Configurez un déclencheur pour consommer périodiquement les données incrémentales du Logstore et exécuter des fonctions de transformation à l'aide de modèles intégrés ou de fonctions définies par l'utilisateur.
Prérequis
Autorisez SLS à déclencher l'exécution de fonctions via Autorisation d'accès aux ressources.
-
Function Compute
-
Simple Log Service (SLS)
-
Créer un projet et des Logstores
Créez un projet et deux Logstores : l'un pour stocker les journaux collectés (assurez une ingestion continue, car Function Compute se déclenche sur les données incrémentales), et l'autre pour stocker les journaux de déclenchement SLS.
ImportantLe projet et le service Function Compute doivent se trouver dans la même région.
-
Limites
Le nombre maximal de déclencheurs SLS associés à un seul projet est égal à cinq fois le nombre de Logstores dans ce projet.
Remarque
Nous vous recommandons de configurer au maximum cinq déclencheurs SLS par Logstore. Sinon, la transmission des données vers Function Compute risque d'être affectée.
Scénarios
-
Nettoyage et transformation des données
Collectez, transformez, interrogez et analysez les journaux avec SLS.

-
Scénarios de transfert de données
Expédiez des données vers diverses destinations et construisez des pipelines de données entre les produits de big data sur le cloud.

Fonctions de transformation de données
-
Types de fonctions
-
Fonctions modèles
Modèles disponibles : aliyun-log-fc-functions.
-
Fonctions définies par l'utilisateur
Le format de configuration varie selon l'implémentation. Guide de développement de fonctions ETL.
-
-
Mécanisme de déclenchement de Function Compute
Chaque tâche de déclenchement correspond à un déclencheur Function Compute. SLS démarre une minuterie qui interroge périodiquement les informations des shards dans le Logstore. Lorsque de nouvelles données arrivent, SLS génère un triplet
<shard_id,begin_cursor,end_cursor>en tant qu'événement de fonction et déclenche l'exécution.RemarqueLes mises à niveau du stockage peuvent décaler les curseurs sans nouvelles données, ce qui entraîne une invocation vide supplémentaire par shard. Gérez ce cas en récupérant les données avec le curseur dans votre fonction : si aucune donnée n'est retournée, ignorez l'invocation. Guide de développement de fonctions définies par l'utilisateur.
Les déclencheurs sont basés sur le temps. Par exemple, avec un intervalle de 60 secondes et des écritures continues sur le shard 0, une fonction se déclenche toutes les 60 secondes pour ce shard. Les shards sans nouvelles données sont ignorés. La fonction reçoit la plage de curseurs des 60 dernières secondes et l'utilise pour lire les données du shard afin de les traiter.

Étape 1 : Créer un déclencheur SLS
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur Functions.
Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction que vous souhaitez gérer.
Sur la page de détails de la fonction, cliquez sur l'onglet Trigger, puis cliquez sur Create Trigger. Dans le panneau Create Trigger, définissez le paramètre Trigger Type sur Log Service, configurez les paramètres suivants, puis cliquez sur OK.
|
Paramètre |
Description |
Exemple |
|
Name |
Nom personnalisé pour le déclencheur. Si ce champ est laissé vide, Function Compute en génère un automatiquement. |
|
|
Version or Alias |
Version ou alias de la fonction à laquelle attacher ce déclencheur. La valeur par défaut est LATEST. Pour utiliser une version ou un alias différent, basculez vers celui-ci dans le coin supérieur droit de la page de détails de la fonction avant de créer le déclencheur. Consultez Gérer les versions et Gérer les alias. |
|
|
Log Service Project |
Le projet SLS à partir duquel consommer les données. |
|
|
Logstore |
Le Logstore à consommer. Le déclencheur interroge ce Logstore à l'intervalle spécifié. |
|
|
Trigger Interval |
Fréquence d'invocation de la fonction par SLS, en secondes. Plage valide : 3 à 600. Valeur par défaut : 60. |
|
|
Retries |
Nombre maximal de tentatives par invocation. Plage valide : 0 à 100. Valeur par défaut : 3. Une invocation réussie renvoie un code HTTP 200 sans erreur |
|
|
Trigger Log |
Le Logstore qui enregistre les journaux d'exécution de la fonction pour ce déclencheur. |
|
|
Invocation Parameters |
Paramètres personnalisés à transmettre à la fonction sous forme de chaîne au format JSON. Ils sont transmis dans le champ |
— |
|
Role Name |
Sélectionnez AliyunLogETLRole. Si c'est la première fois que vous créez un déclencheur SLS, cliquez sur OK, puis sélectionnez Authorize Now dans la boîte de dialogue qui s'affiche. |
|
Une fois le déclencheur créé, il apparaît dans l'onglet Triggers. Pour modifier ou supprimer un déclencheur, consultez Gestion des déclencheurs.
Étape 2 : Configurer les permissions
Sur la page de détails de la fonction, sélectionnez l'onglet Configuration. Dans la section Advanced Settings, cliquez sur Modify.
-
Dans le panneau Advanced Settings, sélectionnez un Function Role :
Rôle par défaut : AliyunFCServerlessDevsRole accorde un accès en lecture seule à SLS et couvre la plupart des cas d'usage.
-
Rôle RAM personnalisé : si votre fonction écrit dans SLS ou accède à d'autres services, créez un rôle RAM avec :
Trusted entity : Cloud Service → Function Compute. Consultez Créer un rôle RAM pour les services Alibaba Cloud.
Permissions : les permissions SLS dont votre fonction a besoin. Consultez Exemples de politiques personnalisées RAM.
Cliquez sur Deploy.
Étape 3 : Déployer et consulter les journaux
-
Dans l'onglet Code, collez le code de votre fonction dans l'éditeur et cliquez sur Deploy. L'exemple Python suivant lit les données de journal du Logstore source en utilisant la plage de curseurs de l'événement de déclenchement. Il utilise les identifiants temporaires de
context.credentialspour initialiser le client SLS, sans nécessiter de clés codées en dur.""" Reads log data from an SLS Logstore within the cursor range provided by the trigger event. """import logging import json from aliyun.log import LogClient logger = logging.getLogger() def handler(event, context): # Get temporary credentials from the function's execution role. creds = context.credentials access_key_id = creds.access_key_id access_key_secret = creds.access_key_secret security_token = creds.security_token # Parse the trigger event. event_obj = json.loads(event.decode()) source = event_obj['source'] endpoint = source['endpoint'] log_project = source['projectName'] log_store = source['logstoreName'] shard_id = source['shardId'] begin_cursor = source['beginCursor'] end_cursor = source['endCursor'] # Initialize the SLS client with temporary credentials. client = LogClient( endpoint=endpoint, accessKeyId=access_key_id, accessKey=access_key_secret, securityToken=security_token ) # Pull all log groups in the range [begin_cursor, end_cursor).while True: response = client.pull_logs( project_name=log_project, logstore_name=log_store, shard_id=shard_id, cursor=begin_cursor, count=100, end_cursor=end_cursor, compress=False ) log_group_cnt = response.get_loggroup_count() if log_group_cnt == 0: break logger.info("Got %d log group(s) from %s", log_group_cnt, log_store) logger.info(response.get_loggroup_list()) begin_cursor = response.get_next_cursor() return 'success' Sur la page de détails de la fonction, accédez à Logs > Function Logs pour vérifier que la fonction reçoit et traite bien les données. Si le message "The logging feature is not enabled for the current function." s'affiche, cliquez sur Enable.
(Facultatif) Étape 4 : Tester avec un événement simulé
Dans l'onglet Code, cliquez sur l'icône
à côté de Test Function, puis sélectionnez Configure Test Parameters.Dans le panneau Configure Test Parameters, sélectionnez Create New Test Event ou modifiez un événement de test existant. Sélectionnez le modèle Log Service, saisissez un nom d'événement, puis cliquez sur OK.
Cliquez sur Test Function. Une fois l'exécution terminée, consultez le résultat au-dessus de l'onglet Code.
Paramètre event
Lorsque le déclencheur se déclenche, SLS transmet l'objet JSON suivant au paramètre event de la fonction :
{"parameter": {},"source": {"endpoint": "http://cn-hangzhou-intranet.log.aliyuncs.com","projectName": "fc-test-project","logstoreName": "fc-test-logstore","shardId": 0,"beginCursor": "MTUyOTQ4MDIwOTY1NTk3ODQ2Mw==","endCursor": "MTUyOTQ4MDIwOTY1NTk3ODQ2NA=="},"jobName": "1f7043ced683de1a4e3d8d70b5a412843d81****","taskId": "c2691505-38da-4d1b-998a-f1d4bb8c****","cursorTime": 1529486425}
Champs configurables par l'utilisateur
|
Champ |
Description |
|
|
Valeur des paramètres d'invocation que vous avez spécifiés lors de la création du déclencheur. Vide par défaut. |
Champs source (le bloc de journaux que votre fonction lit)
|
Champ |
Description |
|
|
Endpoint de la région du projet SLS. |
|
|
Nom du projet SLS. |
|
|
Nom du Logstore consommé par le déclencheur. |
|
|
Shard spécifique dans le Logstore. |
|
|
Position où commence la consommation des données (inclusive). |
|
|
Position où se termine la consommation des données (exclusive). |
Champs générés par le système (renseignés automatiquement par Function Compute, aucune configuration requise)
|
Champ |
Description |
|
|
Nom de la tâche ETL SLS correspondant à ce déclencheur. |
|
|
Identifiant déterministe pour cette invocation de fonction spécifique. |
|
|
Horodatage Unix (en secondes) de l'arrivée du dernier journal sur le serveur SLS. |
Remarque
Lors du débogage, utilisez l'API GetCursor pour obtenir les valeurs beginCursor et endCursor, puis construisez un événement de test à partir de l'exemple ci-dessus.
Opérations connexes
-
Interroger les journaux de déclenchement
Pour consulter les statistiques d'exécution du déclencheur, créez un index sur le Logstore des journaux de déclenchement. Créer un index.
-
Consulter les journaux d'exécution de la fonction
Utilisez la CLI pour inspecter les détails d'exécution de la fonction. Consulter les journaux d'invocation.
FAQ
Le déclencheur SLS n'invoque pas la fonction
Vérifiez que de nouvelles données sont écrites dans le Logstore configuré : le déclencheur ne s'active que lorsque les données du shard changent. Si les données circulent bien, consultez les journaux du déclencheur et les journaux d'exécution de la fonction pour rechercher des messages d'erreur.
Pourquoi le nombre d'invocations est-il élevé ?
Chaque shard se déclenche indépendamment. Un Logstore avec 10 shards produit 10 invocations par intervalle en fonctionnement normal. Si le déclencheur rattrape son retard après un délai (lorsque le traitement accuse plus de 10 secondes de retard), il accélère pour atteindre environ une invocation toutes les 2 secondes par shard jusqu'à ce qu'il soit à jour.
Erreur : « denied by sts or ram »
Le rôle de la fonction ne dispose pas des permissions SLS requises. Vérifiez et mettez à jour le rôle comme décrit dans Déclencheurs Simple Log Service.