Todos os produtos
Search
Central de documentação

Function Compute:Simple log service triggers

Última atualização: Jun 29, 2026

Um gatilho do Simple Log Service (SLS) conecta o SLS ao Function Compute: o SLS monitora um Logstore, detecta novos dados ao consultar periodicamente as informações de shard e invoca sua função com um intervalo de cursor para processamento.

Casos de uso

  • Limpeza e processamento de dados — colete, filtre e transforme logs em tempo real antes de encaminhá-los a sistemas downstream.

    image

  • Envio de dados — construa pipelines que entregam logs a outros produtos de big data na nuvem ou a serviços de terceiros.

    image

Como funciona

Cada gatilho SLS tem uma relação de um para um com um trabalho ETL no SLS. Ao criar o gatilho, o SLS inicia um temporizador que consulta periodicamente as informações de shard no Logstore configurado, conforme o intervalo especificado.

Quando novos dados chegam a um shard, o SLS gera um evento de gatilho como uma tríade <shard_id, begin_cursor, end_cursor> e invoca sua função com esse evento. O intervalo de cursor abrange todos os dados gravados durante o intervalo do gatilho. Por exemplo, um intervalo de 60 segundos produz um alcance de [now - 60s, now). Sua função lê os dados de log do shard dentro desse intervalo.

Se nenhum dado novo for gravado em um shard, a função não será acionada para ele.

image

Nota

Durante atualizações do sistema de armazenamento do SLS, pode ocorrer uma alteração de cursor mesmo sem novos dados gravados. Nesse cenário, cada shard é acionado uma vez com um payload vazio. Para lidar com isso, extraia os dados do intervalo de cursor. Se a resposta não retornar grupos de logs, ignore a invocação. Para mais detalhes, consulte Guia de desenvolvimento de funções personalizadas.

Frequência de acionamento e comportamento de recuperação

Cada shard é acionado de forma independente. Portanto, um Logstore com 10 shards gera 10 invocações de função por intervalo durante a operação normal.

Se a posição atual de processamento em um shard ficar mais de 10 segundos atrás dos dados gravados mais recentemente, o gatilho acelera para aproximadamente uma invocação a cada 2 segundos por shard. O processamento de dados continua em janelas iguais ao intervalo original do gatilho até que o shard recupere o atraso.

Funções de processamento

Dois tipos de função são suportados:

Limitações

O número máximo de gatilhos SLS associáveis a um único Project corresponde a cinco vezes a quantidade de Logstores nesse Project. Configure no máximo cinco gatilhos SLS por Logstore para evitar degradação no desempenho do envio de dados.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Uma função acionada por eventos no Function Compute. Consulte Criar uma função acionada por eventos

  • Um Project SLS e dois Logstores: um Logstore de origem para os logs a serem consumidos e um Logstore para registrar os logs de execução do gatilho. Consulte Criar um Project e um Logstore

  • Coleta contínua de logs no Logstore de origem. O gatilho só dispara quando novos dados são gravados.

Importante

O Project SLS e o serviço Function Compute devem estar na mesma região.

Referência de eventos

Parâmetro event

Quando o gatilho dispara, o SLS passa o seguinte objeto JSON para o parâmetro event da função:

{
    "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
}

Campos configuráveis pelo usuário

Campo

Descrição

parameter

Valor dos Invocation Parameters especificados durante a criação do gatilho. Vazio por padrão.

Campos de source (o bloco de log lido pela sua função)

Campo

Descrição

source.endpoint

Endpoint da região do Project SLS.

source.projectName

Nome do Project SLS.

source.logstoreName

Nome do Logstore consumido pelo gatilho.

source.shardId

Shard específico dentro do Logstore.

source.beginCursor

Posição onde o consumo de dados começa (inclusivo).

source.endCursor

Posição onde o consumo de dados termina (exclusivo).

Campos gerados pelo sistema (preenchidos automaticamente pelo Function Compute, sem necessidade de configuração)

Campo

Descrição

jobName

Nome do trabalho ETL do SLS correspondente a este gatilho.

taskId

Identificador determinístico para esta invocação específica da função.

cursorTime

Timestamp Unix (segundos) de quando o último log chegou ao servidor SLS.

Nota

Para depuração, utilize a API GetCursor by time para obter os valores de beginCursor e endCursor e montar um evento de teste com base no exemplo acima.

Parâmetro context

O Function Compute passa um objeto context para cada invocação. Ele contém informações sobre a invocação, detalhes do serviço, metadados da função, e dados do ambiente de execução.

Utilize context.credentials para obter credenciais temporárias (accessKeyId, accessKeySecret e securityToken). Para todos os campos disponíveis, consulte Context.

Etapa 1: Criar um gatilho SLS

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

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

  3. Na página de detalhes da função, clique na aba Trigger e, em seguida, clique em Create Trigger. No painel Create Trigger, defina Trigger Type como Log Service, configure os parâmetros abaixo e clique em OK.

Parâmetro

Descrição

Exemplo

Name

Nome personalizado para o gatilho. Se deixado em branco, o Function Compute gera um automaticamente.

log_trigger

Version or Alias

Versão ou alias da função à qual anexar este gatilho. O padrão é LATEST. Para usar uma versão ou alias diferente, alterne para ela no canto superior direito da página de detalhes da função antes de criar o gatilho. Consulte Gerenciar versões e Gerenciar aliases.

LATEST

Log Service Project

Project SLS de onde os dados serão consumidos.

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

Logstore

Logstore a ser consumido. O gatilho consulta este Logstore no intervalo especificado.

function-log

Trigger Interval

Frequência com que o SLS invoca a função, em segundos. Faixa válida: 3–600. Padrão: 60.

60

Retries

Número máximo de tentativas por invocação. Faixa válida: 0–100. Padrão: 3. Uma invocação bem-sucedida retorna HTTP 200 sem UnhandledInvocationError ou HandledInvocationError no cabeçalho X-Fc-Error-Type. Se todas as tentativas falharem, o sistema entra em uma fase de nova tentativa com backoff e intervalo aumentado. Consulte Parâmetros de resposta.

3

Trigger Log

Logstore que registra os logs de execução da função para este gatilho.

function-log2

Invocation Parameters

Parâmetros personalizados passados à função como uma string formatada em JSON. Entregues como o campo parameter no evento. Vazio por padrão.

Role Name

Selecione AliyunLogETLRole. Se esta for a primeira vez que você cria um gatilho SLS, clique em OK e selecione Authorize Now na caixa de diálogo exibida.

AliyunLogETLRole

Após a criação, o gatilho aparece na aba Triggers. Para modificar ou excluir um gatilho, consulte Gerenciamento de gatilhos.

Etapa 2: Configurar permissões

  1. Na página de detalhes da função, selecione a aba Configuration. Na seção Advanced Settings, clique em Modify.

  2. No painel Advanced Settings, selecione uma Function Role:

  3. Clique em Deploy.

Etapa 3: Implantar e visualizar logs

  1. Na aba Code, cole o código da função no editor e clique em Deploy. O exemplo Python a seguir lê dados de log do Logstore de origem usando o intervalo de cursor do evento de gatilho. Ele utiliza credenciais temporárias de context.credentials para inicializar o cliente SLS, sem necessidade de chaves codificadas.

    """
    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. Na página de detalhes da função, acesse Logs > Function Logs para verificar se a função está recebendo e processando dados. Caso a mensagem "The logging feature is not enabled for the current function." apareça, clique em Enable.

(Opcional) Etapa 4: Testar com um evento simulado

  1. Na aba Code, clique no ícone image.png ao lado de Test Function e selecione Configure Test Parameters.

  2. No painel Configure Test Parameters, selecione Create New Test Event ou Modify Existing Test Event. Escolha o modelo Log Service, insira um nome para o evento e clique em OK.

  3. Clique em Test Function. Após a conclusão da execução, visualize o resultado acima da aba Code.

Perguntas frequentes

O gatilho SLS não invoca a função

Verifique se novos dados estão sendo gravados no Logstore configurado. O gatilho só dispara quando há alterações nos dados do shard. Se houver fluxo de dados, verifique os logs do gatilho e os logs de execução da função em busca de mensagens de erro.

Por que a contagem de invocações está alta?

Cada shard dispara de forma independente. Um Logstore com 10 shards gera 10 invocações por intervalo durante a operação normal. Se o gatilho estiver recuperando um atraso (quando o processamento fica mais de 10 segundos atrás), ele acelera para cerca de uma invocação a cada 2 segundos por shard até recuperar o atraso.

Erro: "denied by sts or ram"

A função RAM está sem as permissões SLS necessárias. Revise e atualize a função conforme descrito em Etapa 2: Configurar permissões.