Recursos do AWS Lambda - AWS Lambda

Recursos do AWS Lambda

O AWS Lambda fornece um console de gerenciamento e uma API para gerenciar e invocar funções. Proporciona tempos de execução que oferecem suporte a um conjunto padrão de recursos para que você possa alternar facilmente entre linguagens e estruturas, dependendo do que precisar. Além das funções, também é possível criar versões, aliases, camadas e tempos de execução personalizados.

Modelo de programação

As especificações de criação variam entre os tempos de execução, mas todos os tempos de execução compartilham um modelo de programação comum que define a interface entre o seu código e o código do tempo de execução. Você pode instruir ao tempo de execução qual método executar definindo um manipulador na configuração da função e o tempo de execução executa esse método. O tempo de execução transmite ao manipulador os objetos que contêm o evento de invocação e o contexto, como o nome da função e o ID da solicitação.

Quando o handler termina de processar o primeiro evento, o tempo de execução o envia outro. A classe da função permanece na memória, de forma que é possível reutilizar clientes e variáveis que são declarados fora do método do manipulador no código de inicialização. Para economizar tempo de processamento em eventos subsequentes, crie recursos reutilizáveis como clientes do AWS SDK durante a inicialização. Uma vez inicializada, cada instância da função pode processar milhares de solicitações.

A inicialização é faturada como parte da duração da primeira invocação processada por uma instância da função. Quando o rastreamento do X-Ray está habilitado, o tempo de execução registra subsegmentos separados para inicialização e execução.


        Um rastreamento do X-Ray com subsegmentos de inicialização e invocação.

A função também tem acesso ao armazenamento local no diretório /tmp. As instâncias da sua função que estão atendendo solicitações permanecem ativas por algumas horas antes de serem recicladas.

O tempo de execução captura a saída do registro em log da função e a envia para o Amazon CloudWatch Logs. Além de registrar em log a saída da função, o tempo de execução também registra em log as entradas quando a invocação da função é iniciada e termina. Isso inclui um log de relatório com o ID da solicitação, a duração faturada, a duração da inicialização e outros detalhes. Se a função lançar um erro, o tempo de execução retornará esse erro para o chamador.

nota

O registro em log está sujeito a limites do CloudWatch Logs. Os dados de log podem ser perdidos devido a limitação ou, em certos casos, quando uma instância da sua função é interrompida.

Para obter uma introdução prática do modelo de programação na linguagem de programação de sua preferência, consulte os capítulos a seguir.

O Lambda dimensiona a função executando instâncias adicionais dela à medida que a demanda aumenta, e interrompendo instâncias à medida que a demanda diminui. Salvo indicação em contrário, as solicitações de entrada poderiam ser processadas fora de ordem ou simultaneamente. Armazene o estado do aplicativo em outros serviços e não dependa de que instâncias da função sejam de longa duração. Use o armazenamento local e os objetos do nível de classe para aumentar o desempenho, mas mantenha o mínimo do tamanho do pacote de implantação e da quantidade de dados transferidos para o ambiente de execução.

Pacote de implantação

O código da função consiste em scripts ou programas compilados e suas dependências. Quando você cria funções no console do Lambda ou um toolkit, o cliente cria um arquivo ZIP do seu código chamado pacote de implantação. Depois, o cliente enviará o pacote ao serviço Lambda. Quando gerencia funções com a API do Lambda, ferramentas de linha de comando ou SDKs, você cria o pacote de implantação. Você também precisa criar um pacote de implantação manualmente para linguagens compiladas e para adicionar dependências à sua função.

Para obter instruções específicas de linguagem, consulte os tópicos a seguir.

Camadas

As camadas do Lambda são um mecanismo de distribuição para bibliotecas, tempos de execução personalizados e outras dependências da função. As camadas permitem que você gerencie seu código de função no desenvolvimento de forma independente do código inalterável e os recursos que ele usa. Você pode configurar a função para usar camadas que você criar, camadas fornecidas pela AWS ou camadas de outros clientes da AWS.

Para obter mais informações, consulte Camadas do AWS Lambda.

Escalabilidade

O Lambda gerencia a infraestrutura que executa o código, e a dimensiona automaticamente em resposta às solicitações recebidas. Quando a função é invocada mais rapidamente do que a capacidade de uma única instância da função processar eventos, o Lambda faz o dimensionamento executando instâncias adicionais. Quando o tráfego diminui, as instâncias inativas são congeladas ou interrompidas. Você só paga pelo tempo em que sua função está inicializando ou processando eventos.


        A função é escalada automaticamente com base no número de solicitações abertas.

Para obter mais informações, consulte Escalabilidade de função do AWS Lambda.

Controles de simultaneidade

Use configurações de simultaneidade para garantir que seus aplicativos de produção estejam altamente disponíveis e altamente responsivos. Para evitar que uma função use muita simultaneidade e reservar uma parte da simultaneidade disponível da sua conta para uma função, use a simultaneidade reservada. A simultaneidade reservada divide o pool de simultaneidade disponível em subconjuntos. Uma função com simultaneidade reservada usa apenas a simultaneidade do pool dedicado dela.


        Simultaneidade reservada alocada para duas funções.

Para permitir que as funções sejam dimensionadas sem flutuações na latência, use simultaneidade provisionada. Para funções que levam muito tempo para serem inicializadas ou que exigem latência extremamente baixa para todas as invocações, a simultaneidade provisionada permite que você pré-inicialize instâncias de sua função e mantenha-as em execução o tempo todo. O Lambda integra-se ao Aplicativo Auto Scaling para oferecer suporte à escalabilidade automática para simultaneidade provisionada com base na utilização.


        Escalabilidade automática de simultaneidade provisionada com o Aplicativo Auto Scaling.

Para obter mais informações, consulte Gerenciar a simultaneidade para uma função do Lambda.

Invocação assíncrona

Quando você invocar uma função, poderá optar por invocá-la de forma síncrona ou assíncrona. Com a invocação síncrona, você aguarda a função processar o evento e retornar uma resposta. Com a chamada assíncrona, o Lambda coloca o evento na fila para processamento e retorna uma resposta imediatamente.


        O Lambda coloca os eventos de invocação assíncrona em fila antes de enviá-los para a função.

Para chamadas assíncronas, o Lambda manipula novas tentativas se a função retornar um erro ou for limitada. Para personalizar esse comportamento, você pode configurar parâmetros de tratamento de erros em uma função, versão ou alias. Também pode configurar o Lambda para enviar eventos que falharam no processamento para uma fila de mensagens mortas ou para enviar um registro de qualquer chamada para um destino.

Para obter mais informações, consulte Invocação assíncrona.

Mapeamentos de origem do evento

Para processar itens de um stream ou fila, você pode criar um mapeamento da origem do evento. O mapeamento de uma origem de evento é um recurso no Lambda que lê os itens de uma fila do Amazon SQS, um stream do Amazon Kinesis ou do Amazon DynamoDB, e os envia para sua função em lotes. Cada evento que seus processos de função pode conter centenas ou milhares de itens.


        Registros de leitura de mapeamento de origens de eventos de um fluxo do Kinesis.

Os mapeamentos de origem de evento mantêm uma fila local de itens não processados e manipulam novas tentativas se a função retornar um erro ou for limitada. Você pode configurar um mapeamento de origem de evento para personalizar o tratamento de erros ou de comportamento de lote, e para enviar um registro de itens que falham no processamento para um destino.

Para obter mais informações, consulte Mapeamentos da fonte de eventos do AWS Lambda.

Destinos

Um destino é um recurso da AWS que recebe registros de chamada para uma função. Para chamada assíncrona, você pode configurar o Lambda para enviar registros de chamada para uma fila, tópico, função ou barramento de eventos. Você pode configurar destinos separados para chamadas bem-sucedidas e eventos que falharam no processamento. O registro de chamada contém detalhes sobre o evento, a resposta da função e o motivo pelo qual o registro foi enviado.


        O Lambda envia registros de invocação para um destino de fila ou de barramento de eventos, dependendo do resultado.

Para mapeamentos de origem de eventos que são lidos em fluxos, você pode configurar o Lambda para enviar para uma fila ou tópico um registro de lotes que falharam no processamento. Um registro de falhas de um mapeamento de origem de evento contém metadados sobre o lote e aponta para os itens no fluxo.

Para obter mais informações, consulte Configurar destinos para invocação assíncrona e as seções de tratamento de erros de Uso do AWS Lambda com o Amazon DynamoDB e Uso do AWS Lambda com o Amazon Kinesis.

Esquemas de funções

Ao criar uma função no console do Lambda, você pode optar por iniciar do zero, usar um esquema ou implantar um aplicativo do AWS Serverless Application Repository. Um esquema fornece um código de exemplo que mostra como usar o Lambda com um produto da AWS ou um aplicativo popular de terceiros. Os esquemas incluem predefinições de código de exemplo e configuração de funções para tempos de execução de Node.js e Python.

Os esquemas são fornecidos para serem usados sob a licença do Creative Commons Zero . Estão disponíveis apenas no console do Lambda.

Modelos de aplicativos

O console do Lambda pode ser usado para criar um aplicativo com um pipeline de entrega contínua. Os modelos de aplicativos no console do Lambda incluem código para uma ou mais funções, um modelo de aplicativo que define funções e recursos de suporte da AWS e um modelo de infraestrutura que define um pipeline do AWS CodePipeline. O pipeline tem estágios de compilação e implantação que são executados sempre que você enviar alterações para o repositório Git incluído.

Os modelos de aplicativos são fornecidos para serem utilizados sob a licença de MIT No Attribution (MIT sem atribuição) . Estão disponíveis apenas no console do Lambda.

Para obter mais informações, consulte Criar um aplicativo com entrega contínua no console do Lambda.