O Function Compute utiliza uma arquitetura orientada a eventos para processar automaticamente dados incrementais do Tablestore, permitindo respostas em tempo real e processamento automatizado.
Como funciona
O Function Compute usa um gatilho do Tablestore para processar automaticamente os dados incrementais no Tablestore. Quando uma tabela de dados é modificada, o Tablestore Stream captura essas alterações em tempo real. O gatilho monitora o stream e invoca automaticamente uma função para processar os novos dados, possibilitando respostas imediatas e automatizadas aos eventos de dados.
Essa abordagem orientada a eventos elimina a necessidade de polling, garante o processamento oportuno dos dados e evita desperdício de recursos. Em comparação com tarefas agendadas tradicionais ou processamento manual, o Function Compute oferece desempenho superior em tempo real e maior automação. Ao utilizar processamento assíncrono e dimensionamento elástico, ele reduz a complexidade do sistema e a sobrecarga operacional. Isso o torna ideal para casos de uso que exigem respostas imediatas a alterações de dados, como sincronização de dados, notificações de eventos e arquivamento de dados incrementais.
Além das funções de evento, o Function Compute também suporta outros tipos, como funções Web e funções de tarefa. Diferentes tipos de função atendem a diferentes cenários de negócios e arquiteturas técnicas. Para obter uma comparação detalhada e orientações sobre como selecionar o tipo apropriado, consulte Function selection .
Acesso ao Tablestore usando uma função de evento
Etapa 1: Ativar o Tablestore Stream
Um gatilho do Tablestore no Function Compute (FC) depende do Tablestore Stream para capturar dados incrementais. Portanto, ative primeiro esse recurso na tabela de dados de destino.
Os gatilhos do Tablestore estão disponíveis nas seguintes regiões: China (Beijing), China (Hangzhou), China (Shanghai), China (Shenzhen), Japan (Tokyo), Singapore, Germany (Frankfurt) e China (Hong Kong).
Faça login no console do Tablestore. Na barra de navegação superior, selecione a região onde sua instância está localizada e clique em no alias da instância de destino.
Na página Instance Details, clique em no nome da tabela de dados de destino na lista Tables.
Clique em na aba Tunnels e, em seguida, clique em Enable à direita de Stream Information.
-
Na caixa de diálogo Enable Stream, defina o tempo de expiração do log e clique em Enable.
O tempo de expiração do log deve ser um número inteiro diferente de zero em horas, com limite máximo de 168. Esta configuração não pode ser alterada após definida. Defina este valor com cautela.
Etapa 2: Criar e configurar uma função de evento
Ao criar um gatilho do Tablestore, selecione apenas instâncias do Tablestore e tabelas de dados que estejam na mesma região da função.
Faça login no console do Function Compute. Na barra de navegação superior, selecione a mesma região da sua instância do Tablestore.
No painel de navegação à esquerda, escolha .
Clique em Create Function, selecione Event Function como tipo de função e clique em Create Event Function.
-
Configure os parâmetros da função conforme descrito abaixo. Para instruções detalhadas, consulte Create an event function.
Function Name: Insira um nome exclusivo para a função. O nome deve ser único dentro da mesma conta e região, seguindo as convenções de nomenclatura.
Runtime: Recomendamos selecionar Built-in Runtime e escolher uma linguagem e versão familiares, como Python ou Java. Este tópico usa Python 3.12 como exemplo.
Code Upload Method: Selecione o método de upload do seu código. Este tópico usa Upload ZIP como exemplo. Baixe e faça upload do arquivo de código de exemplo: tablestore_trigger_example.zip.
Clique em Create.
Etapa 3: Testar e validar a função de evento
Antes de configurar o gatilho do Tablestore, teste a função simulando um evento. Um gatilho do Tablestore usa o formato Concise Binary Object Representation (CBOR) para codificação, mas você pode usar o formato JSON para simular eventos durante a depuração.
Na página Function Details, clique em na seta ao lado de Test Function e selecione Configure Test Parameters.
-
Insira um Event Name, como
test-event, cole o seguinte evento de exemplo no editor e clique em OK.{ "Version": "Sync-v1", "Records": [ { "Type": "PutRow", "Info": { "Timestamp": 1506416585740836 }, "PrimaryKey": [ { "ColumnName": "pk_0", "Value": 1506416585881590900 }, { "ColumnName": "pk_1", "Value": "2017-09-26 17:03:05.8815909 +0800 CST" }, { "ColumnName": "pk_2", "Value": 1506416585741000 } ], "Columns": [ { "Type": "Put", "ColumnName": "attr_0", "Value": "hello_table_store", "Timestamp": 1506416585741 }, { "Type": "Put", "ColumnName": "attr_1", "Value": 1506416585881590900, "Timestamp": 1506416585741 } ] } ] } -
Clique em Test Function e aguarde a conclusão do teste. Uma execução bem-sucedida retorna
OK. Visualize os logs de execução na aba Log Output.2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Begin to handle event 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] -------------------------------------------------- 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Event Type: PutRow 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Timestamp: 1506416585740836 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Primary Keys: 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Name: pk_0, Value: 1506416585881590900 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Name: pk_1, Value: 2017-09-26 17:03:05.8815909 +0800 CST 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Name: pk_2, Value: 1506416585741000 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Attribute Columns: 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Type: Put, Name: attr_0, Value: hello_table_store, Timestamp: 1506416585741 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] Type: Put, Name: attr_1, Value: 1506416585881590900, Timestamp: 1506416585741 2025-11-24 16:02:59 1-69241131-15e0c7d6-8ec1eb81c700 [INFO] --------------------------------------------------
Etapa 4: Configurar e validar o gatilho
Após testar e validar a função, configure o gatilho do Tablestore para executar a função automaticamente quando houver alterações na tabela de dados. Em seguida, verifique o gatilho realizando uma operação de dados.
Na página Function Details, clique em na aba Triggers e, em seguida, clique em Create Trigger.
-
Configure os parâmetros do gatilho da seguinte forma:
Trigger Type: Selecione Tablestore.
Name: Insira um nome personalizado para o gatilho, como
test_trigger.Instance: Selecione a instância do Tablestore de destino.
Table: Selecione a tabela de dados de destino.
Clique em OK.
Por exemplo, insira uma linha usando o console do Tablestore.
-
Na página Function Details, clique em na aba Logs para visualizar os logs de invocação e os resultados. Na coluna Actions, clique em Request Logs referente a uma solicitação específica para visualizar seus logs detalhados.
2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Begin to handle event 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] -------------------------------------------------- 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Event Type: PutRow 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Timestamp: 1763973009228992 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Primary Keys: 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Name: id, Value: 8 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Name: name, Value: test-name 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Attribute Columns: 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] Type: Put, Name: age, Value: 18, Timestamp: 1763973009229 2025-11-24 16:30:12 1-69241793-15071122-c8e16b8b5ce5 [INFO] --------------------------------------------------
Limitações
Por exemplo, uma função acionada por uma atualização na Tabela A não deve atualizar novamente a Tabela A, pois isso causaria invocações infinitas.
-
Se a execução de uma função falhar, o Function Compute tentará executá-la novamente até que os dados do stream no Tablestore expirem.
Nota-
Uma exceção durante a execução da função pode ocorrer nos seguintes casos:
O código da função lança uma exceção: A instância da função já foi iniciada, portanto, haverá cobrança pela duração da execução.
Falha ao iniciar a função: Se a instância não conseguir iniciar devido a um comando de inicialização incorreto ou outros problemas, não haverá cobrança.
Após excluir um gatilho, quaisquer instâncias de função em execução não param imediatamente e continuarão rodando até serem concluídas ou atingirem o tempo limite.
Caso a execução de uma função falhe, desative o Tablestore Stream para a tabela de dados a fim de evitar novas tentativas infinitas. Antes de desativar o recurso, certifique-se de que nenhum outro gatilho esteja utilizando a tabela de dados para evitar interrupções.
-
FAQ
Se não for possível criar um gatilho do Tablestore, verifique se a região selecionada oferece suporte a esse recurso.
Caso não encontre uma tabela de dados existente ao criar um gatilho do Tablestore, confirme se a tabela de dados e a função estão na mesma região.
Se você receber repetidamente um erro
Invocation canceled by clientao usar um gatilho do Tablestore, isso geralmente significa que o tempo limite do lado do cliente é menor que o tempo de execução da função. Para resolver isso, aumente o período de tempo limite do lado do cliente. Para mais informações, consulte What do I do if a client disconnects and reports an 'Invocation canceled by client' error?.-
Se um gatilho do Tablestore não for executado quando novos dados forem adicionados à tabela de dados, verifique o seguinte:
Confirme se o Tablestore Stream está ativado para a tabela de dados.
Verifique se a função configurada para o gatilho está correta. Utilize a função padrão do gatilho,
AliyunTableStoreStreamNotificationRole.Consulte os logs da função para verificar se houve falha na execução. Se uma função falhar, o Function Compute tentará executá-la novamente até que os dados do stream no Tablestore expirem.