Os handlers processam solicitações, os lifecycle hooks gerenciam mudanças de estado das instâncias e os logs se integram ao Simple Log Service.
Handlers
Toda função exige um handler. O runtime do Function Compute carrega e invoca seu handler para processar as solicitações.
Runtimes integrados
Os handlers em runtimes integrados seguem um formato padrão e processam eventos de gatilhos como Object Storage Service (OSS), Simple Log Service, ApsaraMQ for RocketMQ e EventBridge. Os gatilhos HTTP fornecem um endpoint URI para invocação direta.
Runtimes personalizado e de contêiner personalizado
Os handlers dos runtimes personalizado e de contêiner personalizado funcionam de maneira diferente. Funções web.
Configure o handler
Defina o parâmetro Handler no console do Function Compute. Crie uma função.
Lifecycle hooks de instância
O Function Compute cria instâncias sob demanda para lidar com as solicitações. As instâncias ociosas são congeladas e depois destruídas após um tempo limite.
Os lifecycle hooks executam lógicas personalizadas quando o status de uma instância muda. Todos os runtimes suportam os hooks Initializer e PreStop. Configure os ciclos de vida das instâncias.
Initializer hook
O Initializer hook é executado após o início da instância, mas antes do handler. Ele executa exatamente uma vez por instância e precisa ter êxito. O comportamento em caso de falha depende do tipo de invocação:
Invocações síncronas: o sistema retorna o erro.
Invocações assíncronas: o sistema tenta novamente com base na política de repetição configurada.
Utilize o Initializer hook para configurações custosas que devem ser executadas apenas uma vez, e não em cada invocação:
Criar pools de conexões
Carregar dependências da função
Configurar tarefas relacionadas a banco de dados
PreStop hook
O PreStop hook é executado antes da destruição de uma instância da função. Use-o para tarefas de limpeza, tais como:
Fechar conexões com banco de dados
Relatar e atualizar o status da instância
Logging
O Function Compute armazena logs de invocação de funções e logs impressos pelo código no Simple Log Service.
Um Logstore no nível de serviço armazena os logs das funções. Configure o recurso de logging.
Ao ativar o logging durante a criação da função, o console cria automaticamente um Logstore padrão.
Instruções de log
Cada linguagem oferece uma instrução de log nativa e uma instrução de log do Function Compute. As instruções do Function Compute identificam as entradas com um ID de solicitação para facilitar a filtragem.
|
Linguagem |
Instrução nativa |
Instrução do Function Compute |
Referência |
|
Node.js |
|
|
|
|
Python |
|
|
|
|
Java |
|
|
|
|
PHP |
|
|
|
|
C# |
|
|
|
|
Golang |
|
|
Ambos os tipos de instrução enviam logs para o Logstore. As instruções do Function Compute adicionam um ID de solicitação a cada entrada:
# Built-in statement: print('hello world')
message: hello world
# Function Compute statement: logger.info('hello world')
message: 2020-03-13T04:06:49.099Z f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650 [INFO] hello world
Estrutura do log
Um log de execução de função contém o nome do serviço, o nome da função, a versão atual, o alias e os logs do código:
__source__:
__tag__:__receive_time__: 1584072413
__topic__: FCLogs:myFunction
functionName: myFunction
message: 2020-03-13T04:06:49.099Z f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650 [INFO] hello world
qualifier: LATEST
serviceName: myService
versionId:
O runtime imprime marcadores de início e fim para cada invocação:
Início:
FC Invoke Start RequestId: f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650Fim:
FC Invoke End RequestId: f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650
Sistemas operacionais
Os runtimes integrados são executados no Debian 9 LTS, Debian 10 LTS, Debian 11 LTS ou Debian 12 LTS. Apenas a arquitetura x86_64 é suportada.
Personalize o sistema operacional por meio de camadas ou variáveis de ambiente. Por exemplo, o Function Compute usa UTC como padrão. Defina TZ como Asia/Shanghai para usar UTC+8. Configure camadas e Configure variáveis de ambiente.