Todos os produtos
Search
Central de documentação

Function Compute:Simple Log Service triggers

Última atualização: Aug 24, 2026

Um trigger do Simple Log Service (SLS) integra o SLS ao Function Compute invocando automaticamente uma função quando novos logs são gerados. Use um trigger do SLS para consumir incrementalmente os dados em um Logstore do SLS e executar tarefas de processamento personalizadas.

Casos de uso

  • Limpeza e processamento de dados

    Use o SLS para coletar, processar, consultar e analisar logs rapidamente.

    image

  • Envio de dados

    Entregue dados de log para destinos, como produtos de big data na cloud ou services de terceiros, e crie pipelines de dados entre eles.

    image

Como funciona

Um trigger do SLS corresponde a um job de ETL do SLS no Function Compute. Após a criação de um job de ETL do SLS, o SLS inicia um temporizador com base na configuração do job. Esse temporizador consulta as informações de shard no Logstore. Quando novos dados são gravados, o SLS gera uma tríade <shard_id, begin_cursor, end_cursor> como evento da função e a invoca.

Durante atualizações do sistema de armazenamento, pode ocorrer uma alteração de cursor mesmo sem gravação de novos dados. Nesse cenário, cada shard é acionado uma vez adicionalmente sem dados. Use o cursor na função para tentar obter os dados do shard. Se nenhum dado for retornado, a invocação será considerada um trigger vazio e poderá ser ignorada. Para mais informações, consulte Custom function development guide.

O mecanismo de trigger é baseado em tempo. Por exemplo, se você definir o intervalo de trigger do job de ETL como 60 segundos e houver gravação contínua de dados no Shard0 do Logstore, o shard acionará uma invocação de função a cada 60 segundos. Caso não haja gravação de novos dados no shard, nenhuma invocação será acionada. A entrada de cada invocação corresponde ao intervalo de cursores dos últimos 60 segundos. Na função, leia os dados do Shard0 com base no cursor para processamento subsequente.

A frequência de trigger apresenta as seguintes características:

  • Cada shard é acionado separadamente. O número total de invocações exibido para um Logstore pode ser elevado, mas o tempo real de trigger de cada shard ainda respeita o intervalo configurado. Por exemplo, se um Logstore possuir 10 shards, o processamento de dados em tempo real sem atraso de trigger resultará em 10 invocações de função a cada 60 segundos.

  • O intervalo de trigger de um único shard equivale ao intervalo de tempo dos dados processados em cada execução. Suponha que o intervalo de trigger seja de 60 segundos. Durante a execução da função, o intervalo de trigger se enquadra em dois casos:

    • Sem atraso de trigger: a função é acionada a cada 60 segundos conforme programado, e o intervalo de dados processados é [now -60s, now).

    • Com atraso de trigger: ocorre quando a posição atual de processamento do shard do SLS fica mais de 10 segundos atrás dos dados gravados mais recentemente. O trigger tenta compensar o atraso e pode ser disparado uma vez a cada 2 segundos. Cada invocação ainda processa uma janela de 60 segundos.

    image

Funções de processamento de dados

A função invocada por um trigger do SLS pode ser de um dos seguintes tipos:

Pré-requisitos

  • Function Compute

  • Simple Log Service (SLS)

    • Create a Project and a Logstore

    • Crie um Project e dois Logstores. Um Logstore armazena os logs coletados. Como o Function Compute é acionado por logs incrementais, garanta que os logs possam ser coletados continuamente neste Logstore. O outro Logstore armazena os logs gerados pelo trigger do SLS.

    O Project deve estar na mesma região do service Function Compute.

Etapa 1: Criar um trigger do SLS

Configure um trigger do SLS para obter periodicamente dados atualizados e invocar uma função que consuma incrementalmente os dados em um Logstore do SLS. Na função, execute tarefas de processamento personalizadas, como limpeza e processamento de dados, e entregue os dados a services de terceiros. Este exemplo demonstra apenas como obter dados de log e imprimi-los. A função usada para processamento de dados pode ser um modelo fornecido pelo SLS ou uma função personalizada. As etapas a seguir usam uma função personalizada.

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Functions > Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em na função que deseja gerenciar.

  3. Na página Function Details, clique em na aba Trigger e em Create Trigger. No painel Create Trigger, defina Trigger Type como Log Service, configure os demais parâmetros e clique em OK.

ParameterDescriptionExample
NameNome personalizado para o trigger. Se este parâmetro for deixado em branco, o Function Compute gerará um nome de trigger automaticamente.log_trigger
Version or AliasValor padrão: LATEST. Para criar um trigger para outra versão ou alias, primeiro mude para essa versão ou alias no canto superior direito da página Function Details. Para uma introdução sobre versões e aliases, consulte Manage versions e Manage aliases.LATEST
Log Service ProjectO Project do SLS a ser consumido.aliyun-fc-cn-hangzhou-2238f0df-a742-524f-9f90-976ba457****
LogstoreO Logstore a ser consumido. O trigger assina periodicamente os dados neste Logstore e os entrega à função para processamento personalizado.function-log
Trigger IntervalIntervalo no qual o SLS invoca a função. Valores válidos: [3.600]. Unidade: segundos. Valor padrão: 60.60
Retries

Número máximo de tentativas permitidas para um único trigger. Valores válidos: [0.100]. Valor padrão: 3.

Nota

Uma invocação é bem-sucedida quando status=200 e o cabeçalho X-Fc-Error-Type não é nem UnhandledInvocationError nem HandledInvocationError. Todos os outros casos indicam falha na invocação e acionam uma nova tentativa. Para mais informações sobre o parâmetro X-Fc-Error-Type, consulte Response parameters. Se a função falhar, a solicitação atual será repetida até que a função tenha êxito. As tentativas seguem inicialmente o número configurado de retentativas. Se a invocação ainda falhar após o número máximo de tentativas, o intervalo aumentará e o sistema entrará em modo de retentativa com backoff.

3
Trigger LogSelecione um Logstore existente. Os logs gerados quando o SLS invoca a função são registrados neste Logstore.function-log2
Invocation ParametersPara passar parâmetros personalizados, configure-os aqui. O valor é passado para a função como o campo parameter do evento. O valor deve ser uma string formatada em JSON. Valor padrão: vazio.Nenhum
Role Name

Selecione AliyunLogETLRole.

Nota

Se esta for a primeira vez que você cria um trigger deste tipo, clique em OK e selecione Authorize Now na caixa de diálogo exibida.

AliyunLogETLRole

Após a criação, o trigger aparece na aba Triggers. Para modificar ou excluir o trigger, consulte "Manage Triggers" no Guia do Usuário do Function Compute.

Etapa 2: Configurar permissões

A função (role) fornece as permissões do SLS necessárias para a execução da sua função.

  1. Na página Function Details, clique em na aba Configuration. Na seção Advanced Settings, clique em Modify. No painel Advanced Settings, selecione uma Function Role.

    • Se sua função apenas ler dados de log, use a role padrão AliyunFCServerlessDevsRole, que possui permissões de somente leitura no SLS por padrão.

    • Caso sua função necessite de permissões além do acesso de somente leitura ao SLS, crie uma role personalizada do RAM que atenda aos dois requisitos abaixo:

      a. Ao criar a role do RAM, defina Trusted entity como Cloud Service e Trusted service como Function Compute. Para mais informações, consulte Create a RAM role for a trusted Alibaba Cloud service.

      b. Conceda à role do RAM as permissões do SLS exigidas pela sua função. Para mais informações, consulte Examples of custom RAM policies.

  2. Clique em Deploy.

Etapa 3: Implantar a função e visualizar logs impressos

  1. Na aba Code da página Function Details, escreva seu código no editor de código e clique em Deploy.

    Este exemplo implanta uma função Python que executa as seguintes ações:

    • Obtém informações do evento do SLS, como endpoint, projectName, logstoreName e beginCursor, a partir de event.

    • Obtém as informações de credencial accessKeyId, accessKeySecret e securityToken de context.

    • Inicializa o cliente do SLS com base nas informações obtidas.

    • Obtém os dados de log na posição de cursor especificada do Logstore de source. Use o código de exemplo a seguir como modelo inicial para a maioria dos cenários de processamento de logs.

    """
    This sample code is mainly doing the following things:
    * Get SLS processing related information from event
    * Initiate SLS client
    * Pull logs from source log store
    """
    import logging
    import json
    from aliyun.log import LogClient
    
    logger = logging.getLogger()
    
    def handler(event, context):
        # Access keys can be fetched through context.credentials
        print("The content in context entity is: ", context)
        creds = context.credentials
        access_key_id = creds.access_key_id
        access_key_secret = creds.access_key_secret
        security_token = creds.security_token
    
        # parse event in object
        event_obj = json.loads(event.decode())
        print("The content in event entity is: ", event_obj)
    
        # Get the name of log project, the name of log store, the endpoint of sls, begin cursor, end cursor and shardId from event.source
        source = event_obj['source']
        log_project = source['projectName']
        log_store = source['logstoreName']
        endpoint = source['endpoint']
        begin_cursor = source['beginCursor']
        end_cursor = source['endCursor']
        shard_id = source['shardId']
    
        # Initialize client of sls
        client = LogClient(endpoint=endpoint, accessKeyId=access_key_id, accessKey=access_key_secret, securityToken=security_token)
    
        # Read data from source logstore within cursor: [begin_cursor, end_cursor) in the example, which contains all the logs trigger the invocation
        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("get %d log group from %s" % (log_group_cnt, log_store))
            logger.info(response.get_loggroup_list())
            begin_cursor = response.get_next_cursor()
    
        return 'success'
  2. Na página Function Details, escolha Logs > Function Logs para visualizar os dados mais recentes obtidos durante a execução da função. Se a mensagem The logging feature is not enabled for the current function. for exibida, clique em Enable. Você concluiu a configuração do trigger do SLS. Após o término do intervalo de trigger e a gravação de novos dados no Logstore de source, o trigger invocará a função e os logs da função aparecerão na página Function Logs. Verifique também o Logstore especificado no parâmetro Trigger Log na Etapa 1 para confirmar o disparo do trigger. Para depurar o código no console, siga as etapas abaixo.

(Opcional) Etapa 4: Testar a função com um evento simulado

  1. Na aba Code da página Function Details, clique em no ícone image.png à direita de Test Function e selecione Configure Test Parameters na lista suspensa.

  2. No painel Configure Test Parameters, selecione Create New Test Event ou Modify Existing Test Event, insira um nome de evento e o conteúdo do evento e clique em OK. Ao criar um novo evento de teste, recomenda-se selecionar o modelo de evento Log Service. Para mais informações sobre os dados de teste, consulte event parameter.

  3. Após configurar o evento simulado, clique em Test Function. Após a conclusão da invocação, visualize o resultado acima da aba Code.

Limites

A quantidade de triggers do SLS associados a um único Project não pode exceder cinco vezes o número de Logstores existentes nesse Project.

Não configure mais de cinco triggers do SLS para cada Logstore. Caso contrário, a eficiência da entrega de dados ao Function Compute pode ser afetada.

Parâmetros de entrada

context

Quando o Function Compute executa sua função, ele passa um objeto de contexto para o parâmetro de entrada context da função. Esse objeto contém informações sobre a invocação, o service, a função e o ambiente de execução.

Este tópico usa context.credentials para obter informações de credencial. Para mais informações sobre os campos disponíveis, consulte Context.

event

Após o disparo do trigger do SLS, os dados do evento são passados para o runtime. O runtime converte o evento em um objeto JSON e o transmite para o parâmetro de entrada event da função. O formato é o seguinte:

{
    "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
}
ParameterDescription
parameterValor dos parâmetros de invocação especificados durante a criação do trigger.
source

Informações sobre o bloco de logs lido pela função.

Nota

endpoint: o endpoint do SLS da região à qual o Project do SLS pertence. projectName: o nome do Project do SLS. logstoreName: o nome do Logstore consumido pelo Function Compute. O trigger assina periodicamente os dados neste Logstore e os entrega à função para processamento personalizado. shardId: um shard específico no Logstore. beginCursor: a posição onde o consumo de dados começa. endCursor: a posição onde o consumo de dados termina. Ao depurar a função, chame a operação GetCursor by time para obter beginCursor e endCursor e crie um evento de função para testes com base no exemplo anterior.

jobNameNome do job de ETL do SLS. Um trigger do SLS configurado para uma função corresponde a um job de ETL do SLS. Este parâmetro é gerado automaticamente pelo Function Compute. Não é necessário configurá-lo.
taskIdPara um job de ETL, taskId é um identificador determinístico de uma invocação de função. Este parâmetro é gerado automaticamente pelo Function Compute. Não é necessário configurá-lo.
cursorTimeTimestamp Unix no qual o último log chegou ao servidor do SLS. Unidade: segundos.

Perguntas frequentes

Por que a frequência com que o trigger do SLS invoca a função às vezes é maior que o esperado?

Como cada shard é acionado separadamente, o número total de invocações para um Logstore pode parecer superior ao intervalo configurado. A frequência real de trigger de cada shard ainda corresponde ao intervalo definido. Para detalhes sobre o comportamento da frequência de trigger, consulte How it works.

denied by sts or ram, action: log:GetCursorOrData, resource: ****

Se este erro aparecer nos logs da função, as permissões podem não estar configuradas corretamente ou a política de acesso pode estar incorreta. Consulte Step 2: Configure permissions.

O trigger do SLS não invoca a função quando novos logs são gerados. O que devo fazer?

Verifique os seguintes itens:

  • Confirme se existem alterações incrementais de dados no Logstore configurado para a tarefa de trigger do Function Compute. A função é invocada quando há mudança nos dados do shard.

  • Analise os logs do trigger e os logs de execução da função em busca de exceções. Os logs do trigger são armazenados no Logstore especificado no parâmetro Trigger Log na Etapa 1.