AWS Lambda
Guia do desenvolvedor

Modelo de programação

Você pode escrever o código para sua função do Lambda em uma das linguagens compatíveis com o AWS Lambda. Independentemente da linguagem escolhida, há um padrão comum para escrever código para uma função do Lambda que inclui os seguintes conceitos principais:

  • Handler– Handler é a função que o AWS Lambda chama para iniciar a execução da função do Lambda. Você identifica o handler quando cria sua função do Lambda. Quando uma função do Lambda é chamada, o AWS Lambda começa a executar seu código chamando a função de handler. O AWS Lambda passa todos os dados de evento para esse handler como o primeiro parâmetro. O handler deve processar os dados de eventos de entrada e pode invocar quaisquer outras funções/métodos em seu código.

  • Contexto – O AWS Lambda também transmite um objeto de contexto para a função do manipulador como o segundo parâmetro. Com esse objeto de contexto, o código pode interagir com o AWS Lambda. Por exemplo, o código pode encontrar o tempo de execução restante antes que o AWS Lambda encerre sua função do Lambda.

    Além disso, para linguagens como Node.js, não há uma plataforma assíncrona que usa retornos de chamadas. O AWS Lambda fornece métodos adicionais sobre esse objeto de contexto. Você pode usar esses métodos de objeto de contexto para informar ao AWS Lambda para encerrar sua função do Lambda e, opcionalmente, valores de retorno para o chamador.

  • Registro em log – A função do Lambda pode conter instruções para fazer registros em log. O AWS Lambda grava esses logs no CloudWatch Logs. As instruções de linguagem específicas geram entradas de log, dependendo da linguagem usada para criar o código da sua função do Lambda.

    O registro em log está sujeito a limites do CloudWatch Logs. Os dados de log podem ser perdidos devido a limitações ou, em alguns casos, quando o contexto de execução é encerrado.

  • Exceções– Sua função do Lambda precisa comunicar o resultado da execução da função para o AWS Lambda. Dependendo da linguagem em que você criar o código da função do Lambda, há diferentes maneiras para encerrar uma solicitação com êxito ou para notificar o AWS Lambda sobre um erro durante a execução. Se você invocar a função de forma síncrona, o AWS Lambda encaminhará o resultado de volta para o cliente.

  • Simultaneidade – Quando a função é invocada mais rapidamente do que a capacidade de uma única instância da função processar eventos, o Lambda dimensiona executando instâncias adicionais. Cada instância da função processa apenas uma solicitação por vez, portanto, você não precisa se preocupar com a sincronização de threads ou processos. No entanto, você pode usar os recursos de linguagem assíncrona para processar lotes de eventos em paralelo e salvar os dados no diretório /tmp para uso em futuras invocações na mesma instância.

O código da sua função do Lambda deve ser escrito em estilo stateless e não deve ter afinidade com a infraestrutura de computação subjacente. O código deve esperar que o acesso ao sistema de arquivo local, processos filhos e itens semelhantes seja limitado ao tempo de vida da solicitação. O estado persistente deve ser armazenado no Amazon S3, no Amazon DynamoDB, ou em outro serviço de armazenamento em nuvem. A exigência de que as funções sejam stateless permite que o AWS Lambda inicie quantas cópias de uma função sejam necessárias para dimensionar de acordo com a taxa de entrada de eventos e solicitações. Essas funções nem sempre são executadas na mesma instância de computação de uma solicitação para outra, e uma determinada instância de sua função do Lambda pode ser usada mais de uma vez pelo AWS Lambda. Para obter mais informações, consulte Melhores práticas para trabalhar com funções do AWS Lambda.