

# Executar código com o Lambda
<a name="concepts-how-lambda-runs-code"></a>

Quando você escreve uma função do Lambda, está criando um código que será executado em um ambiente exclusivo com tecnologia sem servidor. A compreensão de como o Lambda executa o código envolve dois aspectos principais: o modelo de programação que define como o código interage com o Lambda e o ciclo de vida do ambiente de execução que determina como o Lambda gerencia o ambiente de runtime do código.

## O modelo de programação do Lambda
<a name="concepts-progmodel-overview"></a>

O modelo de programação funciona como um conjunto comum de regras sobre como o Lambda trabalha com o código, esteja você escrevendo em Python, em Java ou em qualquer outra linguagem com suporte. O modelo de programação inclui o runtime e o manipulador.

**Para funções padrão:**

1. O Lambda recebe um evento.

1. O Lambda usa o runtime para preparar o evento em um formato que o código possa usar.

1. O runtime envia o evento formatado para o manipulador.

1. Seu manipulador processa o evento usando o código que você escreveu.

**Para funções duráveis:**

1. O Lambda recebe um evento.

1. O runtime prepara o evento e o DurableContext

1. Seu manipulador pode:
   + Processar etapas com pontos de verificação automáticos
   + Pausar a execução sem consumir recursos
   + Retomar a partir do último ponto de verificação com êxito
   + Manter o estado entre as etapas

Essencial para esse modelo é o *manipulador*, ao qual o Lambda envia os eventos para serem processados pelo código. Pense nele como o ponto de entrada para o código. Quando o Lambda recebe um evento, ele passa esse evento e algumas informações de contexto para o manipulador. O manipulador então executa o código para processar esses eventos; por exemplo, ele pode ler um arquivo quando ele é carregado no Amazon S3, analisar uma imagem ou atualizar um banco de dados. Quando o código termina de processar um evento, o manipulador está pronto para processar o próximo.

## O modelo de execução do Lambda
<a name="concepts-exec-env-overview"></a>

Embora o modelo de programação defina como o Lambda interage com o código, o ambiente de execução é onde o Lambda realmente executa a função, pois é um espaço computacional seguro e isolado criado especificamente para a função.

**Cada ambiente segue um ciclo de vida que varia entre as funções padrão e duráveis:**

**Funções padrão (até 15 minutos):**

1. **Inicialização:** configuração do ambiente e carregamento de código

1. **Invocação:** execução única do código da função

1. **Desligamento:** limpeza do ambiente

**Funções duráveis (até 1 ano):**

1. **Inicialização**: configuração de ambiente e estado durável

1. **Invocação:** várias etapas com pontos de verificação automáticos

1. **Estados de espera:** pausa a execução sem consumo de recursos

1. **Retomar:** reiniciar a partir do último ponto de verificação

1. **Desligar:** limpeza do estado durável

Esse ambiente lida com aspectos importantes da execução da função. Ele fornece à função memória e um diretório `/tmp` para armazenamento temporário. **Para funções duráveis, ele também gerencia:**
+ Persistência de estado automática entre etapas
+ Armazenamento e recuperação em pontos de verificação
+ Coordenação do estado de espera
+ Acompanhamento do andamento em execuções de longa duração