Tous les produits
Search
Centre de documentation

Simple Log Service:Créer une fonction personnalisée

Dernière mise à jour :Aug 18, 2026

Lorsque les modèles de fonctions intégrés dans Log Service ne répondent pas à vos besoins, développez une fonction personnalisée pour Function Compute afin de consommer les données de journal.

Événement de fonction

Un événement de fonction est une chaîne sérialisée au format JSON qui contient les paramètres d'exécution de la fonction. Pour plus d'informations, consultez la rubrique Utiliser Function Compute pour consommer des données de journal.

  • Paramètres

    Parameter

    Description

    jobName

    Nom de la tâche ETL (extraction, transformation et chargement) dans Log Service. Chaque tâche ETL correspond à un déclencheur Function Compute.

    taskId

    Identifiant unique d'une invocation de fonction dans la tâche ETL.

    cursorTime

    Horodatage UNIX de la dernière entrée de journal reçue lors de l'invocation de la fonction.

    source

    Plage de données pour l'invocation actuelle de la fonction. Log Service génère cette valeur régulièrement pour chaque invocation.

    • endpoint : endpoint de la région où réside le projet. Consultez la page Endpoints.

    • projectName : nom du projet.

    • logstoreName : nom du Logstore.

    • shardId : ID d'un shard dans le Logstore.

    • beginCursor : position de départ pour la consommation des données dans le shard.

    • endCursor : position de fin pour la consommation des données dans le shard.

      Remarque

      L'intervalle de consommation est fermé à gauche et ouvert à droite, selon le format [beginCursor,endCursor).

    parameter

    Valeur de Function Configuration spécifiée lors de la création d'un déclencheur. Cet objet JSON est analysé par la fonction ETL personnalisée au moment de l'exécution. Consultez la rubrique Déclencheurs Simple Log Service.

  • Exemple

    {
        "source": {
            "endpoint": "http://cn-shanghai-intranet.log.aliyuncs.com", 
            "projectName": "fc-****************", 
            "logstoreName": "demo", 
            "shardId": 0, 
            "beginCursor": "MTUwNTM5MDI3NTY1ODcwNzU2Ng==", 
            "endCursor": "MTUwNTM5MDI3NTY1ODcwNzU2OA=="
        }, 
        "parameter": {
            ...
        }, 
        "jobName": "fedad35f51a2a97b466da57fd71f315f539d2234", 
        "taskId": "9bc06c96-e364-4f41-85eb-b6e579214ae4",
        "cursorTime": 1511429883
    }

Pour déboguer une fonction personnalisée, appelez l'opération GetCursor afin d'obtenir les curseurs, puis construisez un événement au format précédent pour tester la fonction.

Développement de fonctions

Log Service met à disposition des SDK pour Java, Python, Node.js et d'autres langages afin de développer des fonctions personnalisées. Consultez la référence Référence SDK.

L'exemple suivant utilise JRE 8 pour illustrer le développement d'une fonction ETL. Guide de programmation Java pour Function Compute.

  • Modèle de fonction Java

    Log Service fournit un modèle de fonction personnalisée basé sur JRE 8 comme point de départ pour votre logique personnalisée.

    Fonctionnalités intégrées :

    • Analyse des champs source, taskId et jobName des événements.

    • Utilisation du SDK Log Service pour Java pour récupérer les données en fonction du paramètre source et appel de processData pour les traiter.

    Personnalisations requises :

    • Analysez le champ parameter des événements à l'aide du fichier UserDefinedFunctionParameter.java.

    • Définissez la logique métier personnalisée dans la méthode processData du fichier UserDefinedFunction.java.

    • Renommez UserDefinedFunction avec un nom descriptif identifiant votre fonction ETL.

  • Méthode processData

    La méthode processData gère la consommation, la transformation et la distribution des données. Par exemple, LogstoreReplication.java lit les données d'un Logstore et les écrit dans un autre.

    Remarque
    • processData renvoie true en cas de succès ou false en cas d'échec. Lorsque false est renvoyé, la fonction ETL continue de s'exécuter, Log Service considère la tâche comme réussie et les données d'exception sont ignorées.

    • Si une erreur fatale ou une exception logique déclenche throw Exception, la fonction ETL s'arrête. Log Service considère la fonction comme ayant échoué et la réinvoque selon la règle de nouvelle tentative de la tâche ETL.

    • Pour les shards à haut débit, allouez suffisamment de mémoire pour éviter les erreurs de manque de mémoire (OOM).

    • Pour les fonctions gourmandes en temps ou les shards à haut débit, définissez un intervalle de déclenchement court et une période de délai d'expiration longue.

    • Accordez les autorisations nécessaires à Function Compute. Par exemple, accordez l'autorisation d'écriture OSS si la fonction écrit des données dans OSS.

Journaux ETL

  • Journaux de planification ETL

    Les journaux de planification ETL enregistrent l'heure de début, l'heure de fin, le statut de réussite et les informations de retour de chaque tâche ETL. Les erreurs génèrent des entrées de journal et déclenchent des alertes par e-mail ou SMS à l'administrateur système. Lors de la création d'un déclencheur, spécifiez un Logstore pour les journaux de déclencheur et activez les index. Consultez la rubrique Créer des index.

    Utilisez la fonction outputStream dans JRE 8 pour récupérer les résultats d'exécution. Le modèle de fonction produit une chaîne sérialisée au format JSON enregistrée dans le journal de planification pour interrogation et analyse.

  • Journaux de traitement ETL

    Les journaux de traitement ETL enregistrent les informations clés et les erreurs pour chaque étape, y compris l'heure de début, l'heure de fin, le statut d'initialisation et les détails des erreurs. Utilisez ces journaux pour surveiller et dépanner les fonctions ETL.

    Enregistrez les journaux de traitement avec la méthode context.getLogger(). Les journaux sont stockés dans un Logstore sous un projet spécifié. Nous vous recommandons d'activer l'indexation pour ce Logstore.