Todos os produtos
Search
Central de documentação

Simple Log Service:Usar o Function Compute para consumir dados de log

Última atualização: Oct 09, 2026

O SLS integra-se ao Function Compute para transformação de dados em streaming. Configure um gatilho para consumir periodicamente dados incrementais do Logstore e executar funções de transformação com modelos integrados ou funções definidas pelo usuário.

Pré-requisitos

  • Autorize o SLS a acionar a execução da função por meio da Autorização de Acesso a Recursos.

  • Function Compute

  • Simple Log Service (SLS)

    • Crie um projeto e Logstores

      Crie um projeto e dois Logstores: um para armazenar os logs coletados (garanta ingestão contínua, pois o Function Compute aciona com base em dados incrementais) e outro para armazenar os logs do gatilho do SLS.

    Importante

    O projeto e o service Function Compute devem estar na mesma região.

Limites

O número máximo de gatilhos do SLS associados a um único projeto corresponde a cinco vezes a quantidade de Logstores nesse projeto.

Nota

Recomendamos configurar no máximo cinco gatilhos do SLS para cada Logstore. Caso contrário, a entrega de dados ao Function Compute pode ser afetada.

Cenários

  • Limpeza e transformação de dados

    Colete, transforme, consulte e analise logs com o SLS.

  • Cenários de transferência de dados

    Envie dados para diversos destinos e crie pipelines de dados entre produtos de big data na cloud.

Funções de transformação de dados

  • Tipos de função

  • Mecanismo de gatilho do Function Compute

    Cada tarefa de gatilho corresponde a um gatilho do Function Compute. O SLS inicia um temporizador que consulta as informações de shard no Logstore. Quando novos dados chegam, o SLS gera uma tríade <shard_id,begin_cursor,end_cursor> como evento da função e aciona a execução.

    Nota

    Atualizações de armazenamento podem alterar os cursores sem novos dados, causando uma invocação vazia adicional por shard. Para lidar com isso, busque os dados usando o cursor na sua função. Se nenhum dado for retornado, ignore a invocação. Guia de desenvolvimento de função definida pelo usuário.

    Os gatilhos são baseados em tempo. Por exemplo, com um intervalo de 60 segundos e gravações contínuas no Shard 0, a função é acionada a cada 60 segundos para esse shard. Shards sem novos dados são ignorados. A função recebe o intervalo de cursores dos últimos 60 segundos e o utiliza para ler e processar os dados do shard.

Etapa 1: Criar um gatilho do 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 a seguir 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 este gatilho será vinculado. 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 Gerencie versões e Gerencie aliases.

LATEST

Log Service Project

Projeto do 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. Intervalo válido: 3–600. Padrão: 60.

60

Retries

Número máximo de tentativas por invocação. Intervalo válido: 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 Elementos 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 do 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:

    • Função padrão: AliyunFCServerlessDevsRole concede acesso somente leitura ao SLS e atende à maioria dos casos de uso.

    • Função RAM personalizada: se sua função gravar no SLS ou acessar outros serviços, crie uma função RAM com:

      1. Trusted entity: Cloud Service → Function Compute. Consulte Crie uma função RAM para services da Alibaba Cloud.

      2. Permissões: as permissões do SLS necessárias para sua função. Consulte Exemplos de política personalizada do RAM.

  3. Clique em Deploy.

  4. 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 source usando o intervalo de cursores 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. Se a mensagem "The logging feature is not enabled for the current function." aparecer, 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.

    Parâmetro event

    Quando o gatilho é acionado, 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 função)

    Campo

    Descrição

    source.endpoint

    Endpoint da região do projeto SLS.

    source.projectName

    Nome do projeto SLS.

    source.logstoreName

    Nome do Logstore que o gatilho está consumindo.

    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

    Durante a depuração, use a API GetCursor para obter os valores de beginCursor e endCursor e crie um evento de teste com base no exemplo acima.

    Operações relacionadas

    • Consultar logs de gatilho

      Para visualizar estatísticas de execução do gatilho, crie um índice no Logstore de logs do gatilho. Crie um índice.

    • Visualizar logs de execução da função

      Utilize a CLI para inspecionar detalhes da execução da função. Visualize logs de invocação.

    FAQ

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

    Verifique se novos dados estão sendo gravados no Logstore configurado. O gatilho só é acionado quando há alteração 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 independentemente. Um Logstore com 10 shards gera 10 invocações por intervalo durante operação normal. Se o gatilho estiver recuperando atrasos (quando o processamento fica mais de 10 segundos atrás), ele acelera para aproximadamente uma invocação a cada 2 segundos por shard até regularizar.

    Erro: "denied by sts or ram"

    A função RAM está sem as permissões necessárias do SLS. Revise e atualize a função conforme descrito em Gatilhos do Simple Log Service.