Tous les produits
Search
Centre de documentation

Simple Log Service:Utiliser Function Compute pour consommer des données de journal

Dernière mise à jour :Oct 09, 2026

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.

    Important

    Le 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

  • 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.

    Remarque

    Les 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

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur Functions.

  2. 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.

  3. 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.

log_trigger

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.

LATEST

Log Service Project

Le projet SLS à partir duquel consommer les données.

aliyun-fc-cn-hangzhou-2238f0df-a742-524f-9f90-976ba457****

Logstore

Le Logstore à consommer. Le déclencheur interroge ce Logstore à l'intervalle spécifié.

function-log

Trigger Interval

Fréquence d'invocation de la fonction par SLS, en secondes. Plage valide : 3 à 600. Valeur par défaut : 60.

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 UnhandledInvocationError ni HandledInvocationError dans l'en-tête X-Fc-Error-Type. Si toutes les tentatives échouent, le système entre dans une phase de nouvelle tentative avec temporisation exponentielle et un intervalle accru. Consultez Éléments de réponse.

3

Trigger Log

Le Logstore qui enregistre les journaux d'exécution de la fonction pour ce déclencheur.

function-log2

Invocation Parameters

Paramètres personnalisés à transmettre à la fonction sous forme de chaîne au format JSON. Ils sont transmis dans le champ parameter de l'événement. Vide par défaut.

—

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.

AliyunLogETLRole

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

  1. Sur la page de détails de la fonction, sélectionnez l'onglet Configuration. Dans la section Advanced Settings, cliquez sur Modify.

  2. 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 :

      1. Trusted entity : Cloud Service → Function Compute. Consultez Créer un rôle RAM pour les services Alibaba Cloud.

      2. Permissions : les permissions SLS dont votre fonction a besoin. Consultez Exemples de politiques personnalisées RAM.

  3. Cliquez sur Deploy.

Étape 3 : Déployer et consulter les journaux

  1. 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.credentials pour 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'
  2. 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é

  1. Dans l'onglet Code, cliquez sur l'icône image.png à côté de Test Function, puis sélectionnez Configure Test Parameters.

  2. 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.

  3. 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

parameter

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

source.endpoint

Endpoint de la région du projet SLS.

source.projectName

Nom du projet SLS.

source.logstoreName

Nom du Logstore consommé par le déclencheur.

source.shardId

Shard spécifique dans le Logstore.

source.beginCursor

Position où commence la consommation des données (inclusive).

source.endCursor

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

jobName

Nom de la tâche ETL SLS correspondant à ce déclencheur.

taskId

Identifiant déterministe pour cette invocation de fonction spécifique.

cursorTime

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.