curso
As 20 principais perguntas e respostas para entrevistas sobre o AWS Lambda em 2024
Um dos serviços mais importantes da AWS a serem compreendidos é o AWS Lambda, um serviço de computação sem servidor que executa códigos em resposta a eventos e gerencia automaticamente os recursos subjacentes.
À medida que a adoção do Lambda cresce, é comum encontrar perguntas sobre o AWS Lambda em entrevistas técnicas.
Este guia simplifica a preparação para entrevistas sobre o AWS Lambda, fornecendo uma lista selecionada de perguntas e respostas. Abordamos os conceitos básicos e nos aprofundamos em cenários avançados e práticos.
Se você quiser saber mais sobre a AWS, confira este curso sobre tecnologias e serviços de nuvem da AWS.
Por que a AWS?
Antes de explorar as perguntas e respostas de entrevistas, é importante entender por que a nuvem da AWS é a principal plataforma – isso pode ser uma pergunta da entrevista.
Vamos começar considerando o gráfico a seguir:
Fonte (Statista)
O gráfico ilustra o domínio da AWS no mercado global de serviços de infraestrutura em nuvem no segundo trimestre de 2023. Com uma participação de mercado de 32%, a AWS é a líder absoluta, bem à frente de seu concorrente mais próximo, o Microsoft Azure, que detém 22% do mercado. Embora outros participantes importantes, como o Google Cloud (11%) e o Alibaba Cloud (4%), contribuam para o mercado, suas participações são pequenas em comparação com a AWS e o Azure.
A receita total gerada pelos serviços de infraestrutura em nuvem no segundo trimestre de 2023, no valor de US$ 65 bilhões, enfatiza ainda mais a crescente importância e o significado financeiro desse mercado. A posição de liderança da AWS nesse próspero setor reforça sua importância estratégica para as empresas que buscam soluções de nuvem confiáveis e escaláveis.
Se você quiser saber mais sobre como os diferentes provedores de nuvem se comparam, confira esta folha de dicas com uma comparação de serviços da AWS, Azure e GCP.
Embora os aspectos financeiros sejam expressivos, o apelo da AWS vai além da participação no mercado, abrangendo uma vasta seleção de serviços, confiabilidade, escalabilidade, alcance global, segurança robusta, inovação contínua e uma comunidade de apoio. Esses fatores combinados fazem com que o conhecimento especializado sobre a AWS seja uma habilidade muito procurada no setor de tecnologia, apresentando inúmeras oportunidades de carreira para aqueles que dominam essa plataforma de nuvem líder.
Vamos dar uma olhada em algumas perguntas de entrevistas!
Perguntas básicas de entrevistas sobre o AWS Lambda
Vamos começar com os princípios básicos. Quer você seja iniciante no AWS Lambda ou esteja apenas se atualizando, esses fundamentos vão preparar você para um mergulho mais profundo nos recursos do Lambda.
1. O que é o AWS Lambda?
O AWS Lambda é um serviço de computação sem servidor que permite que você execute códigos sem provisionar ou gerenciar servidores. O Lambda executa o código somente quando necessário e é dimensionado automaticamente, podendo atender desde algumas solicitações por dia até milhares por segundo.
2. Quais são os principais componentes de uma função Lambda?
Os principais componentes de uma função Lambda são:
- Manipulador: esse é o ponto de entrada para nossa função, um método em nosso código que processa o evento de invocação. Pense nisso como a função "principal" do nosso código Lambda.
- Evento: esses são os dados de entrada formatados em JSON que acionam a execução da função. Ele contém informações sobre o que iniciou a chamada da função.
- Contexto: esse é um objeto que contém informações de tempo de execução sobre o ambiente de execução da função. Inclui detalhes como nome da função, versão, limites de memória, ID da solicitação e tempo de execução restante.
- Variáveis de ambiente: são pares de chave-valor que você pode definir para configurar o comportamento da sua função Lambda sem modificar o código em si. Costumam ser usados para armazenar chaves de API, credenciais de banco de dados ou outras configurações.
3. Quais linguagens são compatíveis com o Lambda?
O Lambda suporta nativamente Node.js, Python, Ruby, Java, Go, C# e PowerShell. Isso significa que podemos escrever nossas funções Lambda diretamente nessas linguagens sem configurações adicionais.
Além disso, o Lambda nos permite usar tempos de execução personalizados, oferecendo a flexibilidade de empacotar nosso código de função e dependências em uma imagem de contêiner. Isso possibilita o suporte a praticamente qualquer linguagem de programação, o que nos permite escolher a ferramenta que melhor se adapta às nossas necessidades.
4. Como criar uma função Lambda?
Há várias maneiras de criar funções Lambda:
Método |
Descrição |
Mais indicado para |
Lambda Console |
Escrever o código diretamente no editor do navegador. |
Funções simples, testes rápidos |
Pacote de implantação |
Empacotar o código e as dependências em um arquivo ZIP e fazer o upload. |
Projetos maiores, funções complexas |
Imagem de contêiner |
Empacotar a função como uma imagem de contêiner do Docker. |
Tempos de execução personalizados, configurações específicas |
Infraestrutura como código |
Definir funções e recursos em um código declarativo usando o AWS SAM, o CloudFormation ou o CDK. |
Gerenciamento de aplicativos complexos sem servidor, automação |
5. Quais são as diferentes maneiras de invocar uma função Lambda?
Podemos invocar funções Lambda de várias maneiras:
- Invocação síncrona: o cliente aguarda que a função seja concluída e retorne uma resposta.
- Invocação assíncrona: o cliente não espera uma resposta – o Lambda executa a função em segundo plano.
- Mapeamento da origem de eventos: o Lambda pesquisa automaticamente serviços como o DynamoDB ou o Kinesis e invoca funções com base em eventos.
- Outros métodos: isso inclui o API Gateway, SDKs da AWS ou invocações programadas por meio do Amazon EventBridge.
Perguntas intermediárias de entrevistas sobre o AWS Lambda
1. Como podemos implementar dependências junto com o código Lambda?
Há algumas opções para empacotar dependências com o código Lambda:
- Inclusão direta: para linguagens interpretadas, podemos colocar arquivos de dependência junto com o código da função no pacote de implantação .zip.
- Camadas lambda: para linguagens compiladas ou dependências maiores, podemos usar camadas Lambda para empacotar separadamente e compartilhar dependências comuns entre funções.
- Imagens de contêineres: também podemos empacotar dependências em imagens de contêineres junto com o código da função Lambda e um tempo de execução personalizado.
2. Como podemos otimizar o desempenho das funções Lambda?
Temos várias opções para otimizar as funções Lambda:
- Alocação de memória: a escolha do tamanho correto da memória é fundamental para equilibrar o custo e o desempenho. Ferramentas como o AWS Lambda Power Tuning podem ajudar a encontrar a configuração ideal.
- Tamanho do pacote: pacotes de funções menores levam a inicializações a frio mais rápidas (o tempo que leva para uma função Lambda inicializar em sua primeira invocação). Minimize o tamanho do pacote removendo dependências desnecessárias e compactando o código.
- Lambda SnapStart: esse recurso pré-inicializa os ambientes de função, reduzindo significativamente os tempos de inicialização a frio para tempos de execução específicos.
- Simultaneidade provisionada: configure a simultaneidade provisionada para manter as instâncias de função aquecidas, garantindo tempos de resposta uniformes para cargas de trabalho críticas.
- Limites de tempo e de simultaneidade: Defina tempos limite apropriados e simultaneidade reservada para evitar funções sem controle e manter um ambiente Lambda estável.
3. Que ferramentas você pode usar para monitorar e depurar as funções Lambda?
O Lambda envia automaticamente métricas para o Amazon CloudWatch, incluindo o número de solicitações, a latência, as taxas de erro e muito mais.
Podemos usar CloudWatch Logs para acessar os registros que nosso código de função e o tempo de execução do Lambda geram.
Para rastrear e solucionar problemas de desempenho de aplicativos Lambda distribuídos, podemos usar o AWS X-Ray.
4. Para que são usadas as extensões Lambda?
As extensões Lambda nos permitem aprimorar nossas funções por meio da integração com ferramentas de monitoramento, observabilidade, segurança e governança.
As extensões podem ser executadas como processos separados no ambiente de execução para capturar informações de diagnóstico ou enviar dados para destinos personalizados.
Alguns exemplos são a extensão Datadog para métricas e rastreamentos e a extensão AWS AppConfig para atualizações dinâmicas de configuração.
5. O que é mapeamento da origem de eventos?
O mapeamento da origem de eventos é um recurso do Lambda que lê itens de uma origem de eventos e invoca uma função.
Podemos usar mapeamentos da origem de eventos para processar itens de fluxos do Amazon DynamoDB, fluxos do Amazon Kinesis, filas do Amazon MQ, Apache Kafka autogerenciado, filas do Amazon SQS e muito mais.
O Lambda fornece um mecanismo de sondagem para ler lotes de registros das origens de eventos e invocar uma função.
Perguntas avançadas de entrevistas sobre o AWS Lambda
1. Como é controlado o acesso a funções Lambda?
O AWS Lambda usa o IAM (Identity and Access Management) para controlar o acesso em dois níveis:
- As políticas baseadas em recursos especificam quais contas, serviços e recursos do AWS têm permissão para invocar a função.
- A função de execução da função determina quais serviços e recursos do AWS o código da função pode acessar. Seguindo o princípio do privilégio mínimo, essas políticas devem ser tão restritivas quanto possível e, ao mesmo tempo, permitir que a função execute as tarefas pretendidas.
2. Como é possível minimizar as inicializações a frio no Lambda?
As inicializações a frio ocorrem quando o Lambda precisa inicializar um novo ambiente de execução para processar uma solicitação de invocação. Para minimizar as inicializações a frio e melhorar a capacidade de resposta da nossa função Lambda, podemos empregar várias estratégias:
- Utilizar o SnapStart: esse recurso (disponível para determinados tempos de execução) nos permite manter ambientes inicializados, reduzindo significativamente os tempos de inicialização para invocações subsequentes.
- Habilitar a simultaneidade provisionada: ao manter um pool de ambientes inicializados prontos, podemos eliminar as inicializações a frio para cargas de trabalho previsíveis.
- Otimizar o tamanho do pacote: a redução do tamanho do pacote de funções por meio da remoção de dependências desnecessárias e da otimização do código pode acelerar o processo de inicialização.
- Escolha da linguagem: optar por linguagens como Go ou Rust, conhecidas por tempos de inicialização mais rápidos do que as linguagens JVM, também pode ajudar a reduzir os atrasos na inicialização a frio.
- Reutilização do contexto de execução: manter o código da função Lambda separado da lógica de configuração inicial nos permite reutilizar o contexto de execução entre as invocações, reduzindo ainda mais a carga.
3. Quais são algumas práticas recomendadas comuns de segurança de API para o Lambda?
Ao expor funções Lambda por meio do API Gateway, estas são algumas práticas recomendadas de segurança:
- Uso de autorizadores IAM ou Lambda para autenticar e autorizar solicitações.
- Ativação de pools de usuários do Amazon Cognito para gerenciamento de usuários.
- Definição de políticas de recursos para permitir ou negar acesso com base nas propriedades da solicitação, como IPs de origem.
- Configuração do mTLS para comunicação segura entre cliente e servidor.
- Uso do AWS WAF para proteção contra explorações comuns da web direcionadas a APIs.
4. Quais são as diferenças entre as imagens de contêineres do Lambda e os pacotes de implantação .zip?
As imagens do contêineres do Lambda permitem empacotar o código da função e as dependências em um formato de contêiner compatível com OCI. Vamos comparar imagens de contêineres com pacotes de implantação .zip:
Recurso |
Imagens de contêineres |
Pacotes de implantação .zip |
Flexibilidade de tempo de execução |
Utilização do próprio tempo de execução (qualquer linguagem ou versão) |
Limitado aos tempos de execução predefinidos do Lambda |
Tamanho da implantação |
Até 10 GB |
Até 250 MB (descompactado) |
Implantação e inicialização a frio |
Implantações mais lentas e latência de inicialização a frio potencialmente mais alta |
Implantações mais rápidas e latência de inicialização a frio geralmente mais baixa |
Ferramentas e fluxo de trabalho |
Integração perfeita com nossas ferramentas e fluxos de trabalho de contêineres já existentes |
Pode exigir ferramentas adicionais para implantação e gerenciamento de dependências |
Mais indicado para |
Aplicativos com grandes dependências ou requisitos de tempo de execução personalizados |
Aplicativos menores e compatíveis com os tempos de execução predefinidos do Lambda |
5. As funções Lambda podem chamar outras funções Lambda?
Sim, as funções Lambda podem invocar outras funções diretamente usando o AWS SDK. Alguns casos de uso comuns são a orquestração de funções, agregação de resultados de várias funções e expansão do processamento de eventos.
Quando uma função Lambda invoca outra, a política baseada em recursos da função invocada deve conceder acesso de maneira clara para permitir a invocação da função de chamada.
Perguntas práticas de entrevistas sobre o AWS Lambda
1. Como implementar uma API REST simples usando o Lambda e o API Gateway?
Podemos implementar uma API REST simples usando o Lambda e o API Gateway seguindo estas etapas:
- Criar uma função Lambda: desenvolver uma função Lambda que receba entrada do API Gateway como um objeto de evento e retorne um objeto de resposta com dados e códigos de status.
- Criar um API Gateway: no API Gateway, criamos uma nova API REST com um recurso e um método correspondentes ao caminho da API e ao método HTTP.
- Configurar a integração: configuramos o tipo de integração do método como proxy Lambda e especificamos a função a ser invocada.
- Implantar a API: fazer a implantação da API para gerar um endpoint de URL público para acesso.
- Realizar um teste completo: podemos usar ferramentas como cURL ou Postman para garantir que a API funcione corretamente, com a função Lambda tratando as solicitações e retornando as respostas apropriadas.
2. Como configurar uma função Lambda para processar eventos de um bucket do S3?
Podemos configurar uma função Lambda para processar eventos de um bucket do S3 seguindo as etapas abaixo:
- Criamos uma função Lambda com as permissões apropriadas para acessar o bucket do S3.
- No console do S3, configuramos uma notificação de evento no bucket de origem.
- Escolhemos os tipos de eventos para acionar a notificação, como criação ou exclusão de objetos.
- Especificamos a função Lambda como o destino da notificação.
- Testamos executando ações no bucket do S3 que correspondem aos tipos de eventos configurados.
- Verificamos se a função Lambda é invocada com um evento que contém detalhes da ação no S3.
3. Como configurar uma função Lambda para gravar dados em uma tabela do DynamoDB?
Podemos configurar uma função Lambda para gravar dados em uma tabela do DynamoDB executando estas seis etapas:
- Criamos uma tabela do DynamoDB com uma chave primária apropriada e todos os índices secundários necessários.
- Criamos uma função do IAM para a função Lambda com permissões para acessar o DynamoDB.
- Criamos uma função Lambda e associamos a função do IAM.
- Usamos o SDK do DynamoDB para criar uma instância de cliente com o nome da tabela.
- Usamos o método
put_item
para gravar itens na tabela, especificando os atributos-chave e outros campos. - Testamos a função com eventos de exemplo e usamos as consultas do DynamoDB para verificar se os dados estão sendo gravados corretamente.
4. Como implementar uma função Lambda programada?
Podemos implementar uma função Lambda programada seguindo estas etapas:
- Criamos uma função Lambda para executar a tarefa desejada em um cronograma.
- Abrimos o console do Amazon EventBridge e criamos uma nova regra.
- Definimos uma expressão de agendamento para a regra usando a sintaxe rate ou cron.
- Selecionamos a função Lambda como alvo da regra.
- Salvamos a regra e testamos, aguardando o próximo evento programado.
- Verificamos a execução da função nas métricas e nos registros do CloudWatch.
5. Como transferir gradualmente o tráfego para uma nova versão de uma função Lambda?
Para transferir o tráfego para uma nova versão de uma função Lambda, nós:
- Publicamos uma nova versão da função Lambda com o código atualizado.
- Criamos um alias que aponte para a versão estável mais antiga.
- Atualizamos o alias para dividir o tráfego entre as versões antiga e nova usando pesos (por exemplo: 90/10).
- Ajustamos gradualmente os pesos para transferir mais tráfego para a nova versão enquanto monitoramos as métricas.
- Quando estivermos satisfeitos, atualizamos o alias para enviar 100% do tráfego para a nova versão.
- Repetimos o processo para a próxima atualização de função, tratando a versão anterior como a nova versão estável.
Conclusão
Essas perguntas comuns de entrevistas sobre o AWS Lambda testam a compreensão dos candidatos sobre os principais conceitos, práticas recomendadas e padrões de uso prático do Lambda.
É importante lembrar que a experiência prática na criação e operação de aplicativos Lambda é inestimável para consolidar esses conceitos.
Para saber mais, confira estes dois cursos:
Saiba mais sobre a AWS com estes cursos!
curso
AWS Cloud Technology and Services Concepts
curso
Understanding Cloud Computing

blog
As 25 principais perguntas da entrevista sobre aprendizado de máquina para 2024
blog
As 30 principais perguntas e respostas da entrevista sobre IA generativa para 2024

Hesam Sheikh Hassani
15 min
blog
Certificações da AWS em 2024: Níveis, custos e como passar
blog
AWS Certified Cloud Practitioner: um guia completo

Srujana Maddula
27 min
blog
As 20 principais perguntas do Snowflake para entrevistas de todos os níveis

Nisha Arya Ahmed
20 min
tutorial
Primeiros passos com o AWS Athena: Um guia prático para iniciantes

Tim Lu
28 min