Pular para o conteúdo principal

Primeiros passos com o AWS Lambda: Um tutorial passo a passo

Aprenda os conceitos básicos do AWS Lambda, como configurar sua primeira função e como integrá-la aos principais serviços do AWS para a implantação de aplicativos sem servidor.
Actualizado 26 de dez. de 2024  · 25 min de leitura

O AWS Lambda é um serviço avançado de computação sem servidor que permite executar código sem gerenciar a infraestrutura, para que você possa se concentrar apenas em escrever código sem se preocupar com o provisionamento ou a manutenção de servidores.

Neste tutorial, exploraremos o AWS Lambda, desde a configuração de sua primeira função até a integração com outros serviços do AWS. Se você estiver processando fluxos de dados ou criando APIs, este guia o ajudará a começar com implantações sem servidor usando o AWS Lambda.

O que é o AWS Lambda?

O AWS Lambda é uma plataforma de computação sem servidor fornecida pela Amazon Web Services (AWS) que permite que os desenvolvedores executem códigos sem provisionar ou gerenciar servidores. O AWS Lambda facilita isso alocando recursos dinamicamente para executar suas funções somente quando necessário, cobrando de você com base no uso em vez de na capacidade do servidor pré-alocado.

Essa abordagem de desenvolvimento de aplicativos elimina a necessidade de configuração da infraestrutura tradicional, permitindo que você se concentre apenas em escrever e implementar o código. 

O AWS Lambda é orientado por eventos, ou seja, é acionado por eventos específicos de outros serviços da AWS, o que o torna ideal para criar soluções responsivas, dimensionáveis e econômicas.

Os métodos tradicionais de implementação exigem a configuração e o gerenciamento de servidores, o que envolve dimensionamento, atualização e aplicação de patches. Essas tarefas podem ser demoradas, caras e menos eficientes para cargas de trabalho esporádicas. Por outro lado,a implementação sem servidorelimina essas despesas gerais, oferecendo escalonamento automático e alta disponibilidade prontos para uso.

Recursos do AWS Lambda

  • Arquitetura orientada por eventos: As funções do AWS Lambda são chamadas em resposta a eventos como alterações nos dados, solicitações HTTP ou atualizações nos recursos do AWS. 
  • Suporte a vários tempos de execução: O Lambda oferece suporte a vários tempos de execução, incluindo Python, Node.js, Java, Go, Ruby e .NET. Os desenvolvedores também podem trazer seu próprio tempo de execução usando a API de tempo de execução do AWS Lambda, tornando-o uma plataforma versátil para diversos casos de uso.
  • Escalabilidade automática: O AWS Lambda dimensiona automaticamente seu aplicativo com base na demanda. Seja processando um único evento ou lidando com milhares simultaneamente, o Lambda ajusta os recursos de computação de forma dinâmica.
  • Preços de pagamento conforme o uso: Os custos são determinados pelo número de solicitações e pelo tempo de execução de suas funções. Isso elimina a necessidade de investimentos iniciais e garante que você pague apenas pelo que usar.
  • Segurança integrada: O Lambda funcionas com o AWS Identity and Access Management (IAM), garantindocontrole de acesso refinado e interações seguras entre suas funções e outros serviços da AWS.

Casos de uso comuns do Lambda

  • Processamento de fluxos de dados: O AWS Lambda integrataxas com o Amazon Kinesis para processarss e analisar dados de streaming em tempo real. Por exemplo, você pode monitorar dispositivos IoT ouprocessar arquivos de registro dinamicamente.
  • Criando APIs RESTful: As funções Lambda podem ser combinadas com o AWS API Gateway para criar APIs dimensionáveis para aplicativos da Web e móveis. Essa configuração é normalmente usada para lidar com a autenticação do usuário, consultar bancos de dados ou gerar conteúdo dinâmico.
  • Automatização de fluxos de trabalho: Automatize fluxos de trabalho complexos acionando funções Lambda com base em eventos do siteserviços como S3, DynamoDB ou CloudWatch. Por exemplo, você pode redimensionar as imagens carregadas no S3 ou arquivar automaticamente registros antigos do banco de dados.
  • Tratamento de eventos em pipelines de dados: Você pode usar o Lambda para lidar com eventos de dados em tempo real, como o processamento de novos uploads em um bucket do S3, a transformação de dados antes do armazenamento ou o enriquecimento de fluxos de dados com chamadas de API externas.
  • Processamento de back-end sem servidor: O Lambda é comumente usado para descarregar tarefas de back-end, como validação de dados , processos de ETL (Extrair, Transformar, Carregar)ou envio de notificações via Amazon SNS ou SES.

Como o AWS Lambda funciona?

O AWS Lambda opera em um modelo orientado por eventos, o que significa que ele executa o código em resposta a acionadores ou eventos específicos. A chave para a funcionalidade do Lambda é sua integração com outros serviços da AWS e a capacidade de executar funções sob demanda. Vamos nos aprofundar nos mecanismos de funcionamento do AWS Lambda, passo a passo:

Captura de tela mostrando como os serviços do AWS Lambda funcionam. Exemplo oficial do site da AWS.

Um exemplo de diagrama de arquitetura usando o Lambda e outros serviços principais do AWS. Fonte da imagem: AWS.

1. Acionamento de funções do AWS Lambda

As funções do AWS Lambda são iniciadas por eventos de vários serviços do AWS ou sistemas externos. Exemplos comuns de fontes de eventos incluem:

  • API Gateway: Quando um usuário envia uma solicitação HTTP (por exemplo, uma solicitação GET ou POST) ao seu endpoint do API Gateway, o Lambda pode executar uma função para processar a solicitação - por exemplo, um endpoint da API RESTful para criar um usuário em um banco de dados.
  • Eventos S3: As funções Lambda podem responder a ações como upload, exclusão ou modificação de um objeto em um bucket S3. Por exemplo, eles podem redimensionar imagens ou converter formatos de arquivo depois que uma imagem é carregada em um bucket S3.
  • DynamoDB streams: Qualquer alteração nas tabelas do DynamoDB, como inserções, atualizações ou exclusões, pode acionar uma função Lambda. Por exemplo, acionando um pipeline de análise quando novas linhas são adicionadas a uma tabela do DynamoDB.
  • Aplicativos personalizados: Você pode invocar as funções Lambda diretamente usando SDKs, CLI ou solicitações HTTP, o que permite a integração com sistemas externos.

2. Ambiente de execução

Quando um evento aciona uma função Lambda, o AWS cria automaticamente um ambiente de execução para executar o código. Esse ambiente inclui:

  • Seu código de função: O código que você escreveu para sua tarefa específica.
  • Recursos alocados: A CPU e a memória (configuráveis) são atribuídas dinamicamente com base nas necessidades da função.
  • Dependências: Todas as bibliotecas ou pacotes externos especificados durante a implementação são incluídos.

3. Concorrência e dimensionamento

O AWS Lambda oferece suporte ao dimensionamento automático, executando várias instâncias da sua função em paralelo. Ele consegue escalar de forma transparente, sem nenhuma configuração. Veja como funciona a simultaneidade:

  • Se a sua função precisar processar 100 eventos simultaneamente, o Lambda criará quantos ambientes de execução forem necessários (até o limite de simultaneidade).

4. Integração com outros serviços do AWS

O AWS Lambda se integra profundamente aos serviços do AWS para que você crie soluções robustas e completas:

  • Interações do banco de dados: O Lambda pode ler/gravar dados no DynamoDB ou no RDS durante a execução.
  • Serviços de mensagens: O Lambda pode disparar notificações via SNS ou enviar mensagens para filas SQS para processamento downstream.
  • Monitoramento e registro: O CloudWatch captura todos os logs, métricas e detalhes de erros das funções Lambda, permitindo que você monitore e solucione problemas de desempenho.

Agora, vamos começar a configurar sua primeira função Lambda!

Configurando o AWS Lambda

Pré-requisitos

  • Conta AWS: Certifique-se de que você tenha uma conta ativa no AWS. Inscreva-se aqui.
  • Configuração do usuário IAM: Crie um usuário IAM com permissões para o AWS Lambda. FSiga o guia do IAM.

Configuração do ambiente de desenvolvimento

  • Instale a CLI do AWS: Faça o download e instale o AWS CLI. Configure-o usando suas credenciais do IAM.
  • Configure o Python ou o Node.js: Install Python ou Node.js com base no tempo de execução que você preferir. O AWS Lambda oferece suporte a várias runtimes. Neste tutorial, usaremos o tempo de execução do Python.

Etapa 1: Acesse o console do AWS Lambda

  1. Faça loginno console de gerenciamento do AWS.
  2. Navegue até o serviço Lambda.

Captura de tela do painel de navegação no console do AWS

Painel de navegação no console do AWS.

Clique em Lambda no menu de navegação para ver o painel:

Captura de tela do painel do AWS Lambda no console do AWS

Painel de controle do AWS Lambda no console do AWS.

Etapa 2: Criar uma nova função

  1. Clique em Criar função.
  2. Escolha "Author from Scratch" (Autor do zero).
  3. Forneça um nome para sua função.
  4. Selecione um tempo de execução (por exemplo, Python 3.11).
  5. Clique no botão Criar função para que você possa criar uma função.

Captura de tela da tela Criar nova função do AWS Lambda

Crie uma nova função do AWS Lambda.

Isso levará alguns segundos. Depois que a função for criada, você verá uma mensagem de sucesso na parte superior.

Etapa 3: Escreva seu código de função

Captura de tela do IDE do AWS Lambda Browser para edição simples de código

IDE do navegador do AWS Lambda para edição simples de código.

Etapa 4: Teste sua função Lambda

Nesse ponto, essa função retorna apenas a string "Olá de Lambda!".

Não há lógica, nem dependências, nada. 

Temos um script Python chamado lambda_function.py que contém a função chamada lambda_handler() que retorna uma string. 

Agora você pode testá-lo simplesmente clicando no botão Testar.

Captura de tela do teste da função lambda do AWS na tela do navegador

Teste sua função lambda do AWS no navegador.

Você pode remover o "Event JSON", pois nossa função não recebe nenhuma entrada. Dê um nome ao evento e clique no botão Invoke.

Captura de tela do teste bem-sucedido da tela da função AWS Lambda

Teste bem-sucedido da função AWS Lambda.

A função foi executada com sucesso e a mensagem foi retornada.

Muito bom! Acabamos de implementar uma função sem servidor usando o AWS Lambda. Ele não faz muito no momento, mas está funcionando. Toda vez que essa função é chamada, ela retorna uma string simples.

Acionando o Lambda com eventos

Conforme mencionado, a arquitetura do AWS Lambda permite que você acione funções em resposta a eventos específicos de vários serviços do AWS, tornando-o uma ferramenta versátil para automatizar fluxos de trabalho e integrar sistemas. 

Eventos como uploads de arquivos para um bucket do S3, atualizações em uma tabela do DynamoDB ou chamadas de API por meio do API Gateway podem invocar funções Lambda, permitindo o processamento em tempo real e a execução dimensionável.

1. Configuração de um acionador S3

  1. Vá para o console S3.
  2. Selecione o bucket S3.
  3. Em Properties (Propriedades), adicione uma notificação de evento para acionar sua função Lambda ao criar um objeto.Captura de tela da tela Create event notification in AWS S3 bucket (Criar notificação de evento no baldedo AWS S3alt)Criealtuma notificação de evento no balde do AWS S3.Captura de tela de Select Lambda function to trigger in S3Selecionea função Lambda para acionar no S3.

Exemplos de casos de uso:

    • Redimensione automaticamente as imagens carregadas no S3.
    • Converta vídeos em várias resoluções ou formatos para streaming.
    • Verifique os formatos, tamanhos ou metadados dos arquivos ao fazer o upload.
    • Use IA para extrair texto de documentos carregados (por exemplo, via Amazon Textract).

2. Integração do gateway de API

  1. Navegue até o serviço API Gateway.

Captura de tela do painel do serviço do API Gateway no console do AWS

O painel de controle do serviço do API Gateway no console do AWS.

  1. Crie uma nova API REST.

Captura de tela de Criar nova API REST via API Gateway

Crie uma nova API REST por meio do API Gateway.

  1. Configure um método (por exemplo, POST) para acionar sua função Lambda.

Exemplos de casos de uso:

    • Crie uma API sem servidor para obter respostas em tempo real.
    • Acione uma função Lambda para criar e armazenar dados de usuário em um banco de dados.
    • Lidar com solicitações POST para processar e validar pedidos de clientes em tempo real
    • Acione uma função Lambda para consultar e retornar dados de um banco de dados ou API.

Implementação e monitoramento do AWS Lambdas

A implantação de funções do AWS Lambda é simples e pode ser feita usando diferentes métodos, dependendo das suas necessidades, como o AWS Management Console para implantações manuais ou o AWS CLI para implantações automatizadas.

1. Implementação manual usando o console do AWS

O AWS Management Console oferece uma interface da Web intuitiva para a implantação de funções Lambda. Esse método é ideal para pequenos projetos ou mudanças rápidas. Veja como implementar uma função Lambda usando o console:

  1. Crie ou edite uma função:
    • Faça login no console de gerenciamento do AWS.
    • Navegue até o AWS Lambda.
    • Clique em Criar função para configurar uma nova função ou selecione uma função existente para atualizar.
  2. Carregue seu código:
    • Escolha Upload from e selecione o arquivo .zip ou a imagem do contêiner.
    • Você pode editar o código da função diretamente no editor de código integrado para desenvolvimento em pequena escala.
  3. Configure a função:
    • Defina variáveis de ambiente, alocação de memória e limites de tempo limite com base em seu caso de uso.
    • Adicione as permissões necessárias usando as funções do AWS IAM para permitir que a função interaja com outros serviços do AWS.
  4. Implemente as alterações:
    • Clique em Deploy para salvar e ativar suas alterações.
    • Use o recurso Teste para invocar a função manualmente e validar se ela funciona conforme o esperado.

2. Implementação automatizada usando a CLI do AWS 

A CLI do AWS é uma maneira eficiente de implementar e atualizar funções Lambda para automação ou atualizações frequentes. Isso garante a consistência e reduz os erros manuais, especialmente em projetos maiores ou pipelines de CI/CD.

Etapa 1 - Preparar o pacote de implantação

Empacote o código e as dependências em um arquivo .zip. Por exemplo:

zip -r my-deployment-package.zip .

Etapa 2 - Implantar a função usando a CLI

Use o update-function-code para carregar o novo código no AWS Lambda:

aws lambda update-function-code \
    --function-name MyFunction \
    --zip-file fileb://my-deployment-package.zip

Etapa 3 - Verifique a implantação

Após a implantação, verifique o status da função usando:

aws lambda get-function --function-name MyFunction

Esse comando recupera a configuração da função e confirma a implantação.

Monitoramento do Lambda com o CloudWatch

O monitoramento é essencial para garantir que suas funções Lambda sejam executadas com eficiência, tratem os erros com elegância e atendam às expectativas de desempenho. O AWS Lambda integrates com o Amazon CloudWatch parafornecer recursos de monitoramento e registro.

O Amazon CloudWatch coleta e exibe automaticamente as principais métricas das suas funções Lambda. Essas métricas ajudam você a analisar o desempenho da sua função e a solucionar problemas.

Métricas a serem monitoradas:

  1. Invocações: Rastreia o número de vezes que sua função é chamada. Ajuda você a entender os padrões de tráfego e as tendências de uso.
  2. Erros: Exibe o número de erros durante a execução da função. Use isso para identificar taxas de falha e depurar problemas.
  3. Duração: Mede o tempo necessário para executar a função. Isso é fundamental para otimizar o desempenho e gerenciar os custos.
  4. Aceleradores: Mostra o número de invocações que foram limitadas por terem atingido os limites de simultaneidade.

Acesso a métricas:

  • Navegue até o console de métricas do CloudWatch.
  • Selecionar Lambda na lista de namespaces.
  • Escolha a função que você deseja monitorar para visualizar métricas detalhadas.

Práticas recomendadas do AWS Lambda

Agora que você implantou sua primeira função Lambda, é útil conhecer algumas práticas recomendadas para projetos futuros e mais complexos. Nesta seção, apresento algumas práticas recomendadas que você deve ter em mente.

1. Otimizar a função de partida a frio

A inicialização a frio ocorre quando uma função Lambda é chamada depois de ficar ociosa, o que leva a uma pequena latência à medida que o AWS provisiona o ambiente de execução. Embora o AWS minimize essa sobrecarga, há etapas que você pode seguir para reduzir o tempo de inicialização a frio:

Use pacotes de implementação menores

  • Mantenha seu pacote de implantação leve, incluindo apenas as dependências necessárias.
  • Use ferramentas como o AWS Lambda Layers para compartilhar bibliotecas comuns (por exemplo, AWS SDK) entre funções sem incluí-las em pacotes individuais.
  • Comprima e reduza o código sempre que possível, especialmente para funções baseadas em JavaScript ou Python.

Evite a inicialização pesada em sua função

Mova a inicialização com uso intensivo de recursos (por exemplo, conexões de banco de dados, clientes de API ou bibliotecas de terceiros) para fora do manipulador de funções. Isso garante que o código seja executado apenas uma vez por ambiente e reutilizado em todas as invocações.

Aproveitar a concorrência provisionada

Para funções críticas e sensíveis à latência, use o Provisioned Concurrency para manter o ambiente de execução pronto para atender às solicitações. Embora incorra em custos adicionais, ele garante baixa latência para cargas de trabalho de alta prioridade.

2. Manter as funções sem estado

A ausência de estado é um princípio fundamental da arquitetura sem servidor, garantindo que seu aplicativo seja dimensionado sem problemas:

Evitar a dependência de dados na memória

As funções Lambda são efêmeras, o que significa que seu ambiente de execução é temporário e pode não persistir entre as invocações. Em vez de depender de variáveis na memória, armazene informações de estado em sistemas externos, como DynamoDB, S3 ou Redis.

Ativar a idempotência

Projete suas funções para lidar com eventos duplicados de forma elegante. Use identificadores exclusivos para solicitações e verifique os registros ou bancos de dados para garantir que o mesmo evento não seja processado várias vezes.

3. Usar variáveis de ambiente

As variáveis de ambiente são uma maneira segura e conveniente de configurar suas funções Lambda:

Armazenar informações confidenciais

  • Armazene chaves de API, cadeias de conexão de banco de dados e outros segredos como variáveis de ambiente. O AWS Lambda criptografa essas variáveis em repouso e as descriptografa durante a execução.
  • Para aumentar a segurança, use o AWS Secrets Manager ou o Systems Manager Parameter Store para gerenciar segredos dinamicamente.

Simplifique o gerenciamento da configuração

Use variáveis de ambiente para gerenciar configurações como níveis de registro, configurações de região ou URLs de serviços de terceiros. Isso elimina a necessidade de valores codificados, tornando sua função mais portátil entre ambientes (por exemplo, desenvolvimento, preparação, produção).

Conclusão

Este tutorial fornece um guia para você começar a usar o AWS Lambda, desde a compreensão de seus recursos e casos de uso até a implantação e o monitoramento eficaz das funções. Você pode criar aplicativos sem servidor robustos e passíveis de manutenção aderindo às práticas recomendadas, como otimizar as inicializações a frio, manter as funções sem estado e usar variáveis de ambiente.

O AWS Lambda é uma maneira de criar arquiteturas modernas e orientadas por eventos que se integram ao ecossistema do AWS. Se você quiser saber mais sobre isso, recomendo que confira os cursos de AWS da DataCamp.


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Cientista de dados, fundador e criador do PyCaret

Temas

Saiba mais sobre a AWS com estes cursos!

curso

AWS Cloud Technology and Services Concepts

3 hr
6.3K
Master AWS cloud technology with hands-on learning and practical applications in the AWS ecosystem.
Ver DetalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

As 20 principais perguntas e respostas para entrevistas sobre o AWS Lambda em 2024

O AWS Lambda é um serviço de computação sem servidor e um assunto cada vez mais comum em entrevistas técnicas. Quer você seja novo na computação em nuvem ou um profissional experiente, é essencial entender o AWS Lambda.
Zoumana Keita 's photo

Zoumana Keita

12 min

tutorial

Tutorial de lambda em Python

Aprenda uma maneira mais rápida de escrever funções em tempo real com as funções lambda.
DataCamp Team's photo

DataCamp Team

3 min

tutorial

Primeiros passos com o AWS Athena: Um guia prático para iniciantes

Este guia prático ajudará você a começar a usar o AWS Athena. Explore sua arquitetura e seus recursos e saiba como consultar dados no Amazon S3 usando SQL.
Tim Lu's photo

Tim Lu

28 min

tutorial

Desenvolvimento de back-end em Python: Um guia completo para iniciantes

Este guia completo ensina a você os fundamentos do desenvolvimento de back-end em Python. Aprenda conceitos básicos, estruturas e práticas recomendadas para você começar a criar aplicativos da Web.
Oluseye Jeremiah's photo

Oluseye Jeremiah

26 min

tutorial

O guia completo para machine learning na AWS com o Amazon SageMaker

Este tutorial abrangente ensina você a usar o AWS SageMaker para criar, treinar e implantar modelos de machine learning. Nós guiamos você por todo o fluxo de trabalho, desde a configuração do seu ambiente AWS e a criação de uma instância de notebook do SageMaker até a preparação de dados, modelos de treinamento e sua implementação como endpoints.
Bex Tuychiev's photo

Bex Tuychiev

25 min

tutorial

Tutorial de funções Python

Um tutorial sobre funções em Python que aborda como escrever funções, como chamá-las e muito mais!
Karlijn Willems's photo

Karlijn Willems

14 min

See MoreSee More