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 de funções por meio da Autorização de Acesso a Recursos.
-
Function Compute
-
Simple Log Service (SLS)
-
Crie um projeto e dois Logstores: um para armazenar os logs coletados (garanta a ingestão contínua, pois o Function Compute é acionado por dados incrementais) e outro para armazenar os logs de gatilho do SLS.
ImportanteO projeto e o serviço Function Compute devem estar na mesma região.
-
Limitações
Você pode associar no máximo cinco vezes o número de Logstores de um projeto em gatilhos SLS. Configure até cinco gatilhos SLS por Logstore para evitar degradação no desempenho do envio de dados.
Cenários
-
Limpeza e transformação de dados
Colete, transforme, consulte e analise logs com o SLS.

-
Transferência de dados
Envie dados para vários destinos e crie pipelines de dados entre produtos de big data na nuvem.

Funções de transformação de dados
-
Tipos de função
-
Funções de modelo
Modelos disponíveis: aliyun-log-fc-functions.
-
Funções definidas pelo usuário
O formato de configuração varia conforme a implementação. Consulte o Guia de desenvolvimento de funções ETL.
-
-
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.NotaAtualizações de armazenamento podem alterar os cursores sem novos dados e causar uma invocação vazia extra por shard. Para lidar com isso, busque os dados usando o cursor em sua função. Se nenhum dado for retornado, ignore a invocação. Consulte o Guia de desenvolvimento de funções definidas 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 SLS
Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.
Na barra de navegação superior, selecione uma região. Na página Functions, clique na função desejada.
Na página de detalhes da função, clique na aba Trigger e 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. |
|
|
Version or Alias |
Versão ou alias da função à qual este gatilho será anexado. 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. |
|
|
Log Service Project |
Projeto SLS de onde os dados serão consumidos. |
|
|
Logstore |
Logstore a ser consumido. O gatilho consulta este Logstore no intervalo especificado. |
|
|
Trigger Interval |
Frequência com que o SLS invoca a função, em segundos. Intervalo válido: 3–600. Padrão: 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 |
|
|
Trigger Log |
Logstore que registra os logs de execução da função para este gatilho. |
|
|
Invocation Parameters |
Parâmetros personalizados passados para a função como uma string formatada em JSON. Entregues como o campo |
— |
|
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. |
|
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
Na página de detalhes da função, selecione a aba Configuration. Na seção Advanced Settings, clique em Modify.
-
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 grava no SLS ou acessa outros serviços, crie uma função RAM com:
Trusted entity: Cloud Service → Function Compute. Consulte Criar uma função RAM para um serviço confiável da Alibaba Cloud.
Permissões: as permissões SLS necessárias para sua função. Consulte Exemplos de políticas RAM personalizadas.
Clique em Deploy.
Etapa 3: Implantar e visualizar logs
-
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 cursores do evento de gatilho. Ele usa credenciais temporárias de
context.credentialspara 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' 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
Na aba Code, clique no ícone
ao lado de Test Function e selecione Configure Test Parameters.No painel Configure Test Parameters, selecione Create New Test Event ou Modify Existing Test Event. Selecione o modelo Log Service, insira um nome de evento e clique em OK.
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 |
|
|
Valor dos Invocation Parameters especificados ao criar o gatilho. Vazio por padrão. |
Campos de origem (o bloco de log que sua função lê)
|
Campo |
Descrição |
|
|
Endpoint da região do Projeto SLS. |
|
|
Nome do Projeto SLS. |
|
|
Nome do Logstore que o gatilho está consumindo. |
|
|
Shard específico dentro do Logstore. |
|
|
Posição onde o consumo de dados começa (inclusivo). |
|
|
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 |
|
|
Nome do trabalho ETL do SLS correspondente a este gatilho. |
|
|
Identificador determinístico para esta invocação específica da função. |
|
|
Timestamp Unix (segundos) de quando o último log chegou ao servidor SLS. |
Durante a depuração, use a API GetCursor by time para obter os valores de beginCursor e endCursor e montar 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. Criar um índice.
-
Visualizar logs de execução da função
Use a CLI para inspecionar detalhes da execução da função. Visualizar logs de invocação.
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ó é acionado quando os dados do shard mudam. 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 produz 10 invocações por intervalo durante a 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é 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 na Etapa 2: Configurar permissões.