AWS Serverless - Lambda Flashcards
Cite exemplos de serviços Serverless na AWS
AWS Lambda, DynamoDB, AWS Cognito, AWS API Gateway, Amazon S3, AWS SNS & SQS, AWS Kinesis Data Firehose, Aurora Serverless, Step Functions, Fargate
Por que utilizar Lambda?
Lambdas são funções virtuais, o que torna possível não ser necessário gerenciar servidores. São funções de execução curtas (máximo de 15 minutos), que executam on-demand. A escalabilidade é automática
Quais os benefícios de utilizar Lambda Functions?
Pagamento por requisição e tempo de computação.
Integrada com todos os serviços da AWS.
É possível utilizar várias linguagens de programação.
Fácil de monitorar através do CloudWatch.
Fácil de obter mais recursos por função.
Quais linguagens são suportadas no Lambda?
Node.js, Python, Java, C#, Golang, Ruby, Custom Runtime API, Lambda Container Image,
Para executar imagens arbitrarias, é preferível utilizar ECS / Fargate
Para que serve Lambda@Edge?
Serve para alterar as requisições entre o cliente e a origem.
Pode ser modificada o request entre o User e o CloudFront ou entre o CloudFront e Origin.
A response também pode ser modificada entre a Origin e o CloudFront e entre o CloudFront e o User.
Cite 4 casos de uso para Lambda@Edge
A/B testing, Intelligently Route Across Origins and Data Centers, Real-time Image Transformation, User Tracking and Analytics, User Authentication and Authorization
Como é feito o processamento assíncrono de funções Lambdas?
É gerado um evento (S3, SNS, CloudWatch), inserido em uma Event Queue. A função lambda lê o evento da event Queue e tenta realizar o processamento. Em caso de falha, será realizado 3 novas tentativas.
Também é possível criar uma DLQ para processamentos que falharam.
Como funciona o Lambda Event Source Mapping?
Neste caso de utilização de lambda, em vez de lambda ser sensibilizada por outros recursos (evento do S3 ou CloudWatch) a Lambda que é responsável por obter os eventos de uma determinada origem.
Essas origens podem ser Kinesis Data Streams, SQS ou DynamoDb Streams
Como é feito a paralelização do Lambda Event Source Mapping (Kinesis e DynamoDb)?
Como o processamento é feito de forma a garantir a ordem as mensagens, o processamento é paralelizado a partir da Partition Key.
Dado isso, é possível ter mais de um lambda realizando o processamento em um mesmo shard, pois a ordenação é feita pelo Partition Key da mensagem.
Como é feito a tratativa de erro para stream no Event Source Mapping (kinesis)?
Por default, caso alguma lambda retorne um erro, todo o batch será reprocessado até a função ter sucesso ou o batch expirar.
Isso é feito para garantir a ordem no processamento do Batch
Para que serve Lambda - Destinations?
Serve para enviar os resultados do processamento da lambda. É possível utilizar Lambda - Destination no lugar da DLQ ou utilizar ambas ao mesmo tempo.
AWS recomenda utilizar Lambda - Destination no lugar de DLQ
Quais são os Lambda - Destinations para Asynchronous invocations?
Amazon SQS, Amazon SNS, AWS Lambda, Amazon EventBridge bus.
Quais são os Lambda - Destinations para Event Source mapping?
Amazon SQS e Amazon SNS
Como dar permissão para outras contas utilizarem seus recursos lambdas?
Utilizando resource-based policies.
O que são lambda Environment Variables?
São variáveis de ambiente chave / valor, possibilitando ajustar a função lambda sem atualizar o código. Também pode ser utilizado para guardar segredos (criptografados por KMS)
Qual VPC é realizado o deploy das funções lambdas? É possível permitir acesso a lamba a sua VPC?
É realizado em uma AWS-owned VPC, ou seja, fora da VPC da sua conta.
Isso quer dizer que a lambda pode acessar a internet pública, dynamoDB porém não pode acessar os recursos internos das VPCs da sua conta.
É possível permitir acesso a lamba a sua VPC?
Sim, é necessário definir o VPC ID, a subnet e o security group. Dado isso, a lambda irá criar um ENI (Elastic Network Interface) na sua subnet.Para isso é necessário a role AWSLambdaVPCAccessExecutionRole.
Uma função lambda na sua VPC tem acesso a internet?
Não, é necessário realizar o deploy da função em uma private subnet e dar acesso a internet através de um NAT Gateway (que está em uma public subnet).
Como uma função lambda pode ter seus recursos escalados?
A única forma de escalabilidade de uma função lambda é aumentando sua memória RAM. Quando a memória RAM é aumentada, também aumenta a quantida de vCPUs da função.
Caso sua aplicação precise de mais poder de processamento, é necessário aumentar a RAM para consequentemente aumentar a quantidade de vCPUs.
Qual o timeout de uma função lambda?
O default é 3 segundos, podendo chegar a 15 minutos (900 segundos).
O que é Lambda Execution Context?
É um ambiente de execução temporário que inicializa qualquer dependência externa da sua função lambda.
Por exemplo, se for necessário realizar uma conexão com um database, é uma boa prática inicia-la neste contexto uma única vez, e as todas as execuções usufruírem deste contexto.
Caso precise baixar arquivos na execução lambda, onde posso salva-los?
É possível salvar arquivos no /tmp space, que é um espaço temporário para execuções lambdas de até 512 MB.
Para objetos persistentes utilizar S3.
Posso escalar até quantas execuções concorrentes de lambda?
É possível escalar até 1000 execuções paralelas.
Caso seja necessário aumentar, é possível abrir um ticket para AWS.
É importante lembrar que este limite é para toda conta. Então se uma aplicação escalar 1000 funções lambdas, as outras aplicações que também utilização lambda irão falhar (THROTTLE).
O que acontece se uma função lambda assíncrona tenta executar em um momento de alta concorrência?
Ela pode não conseguir executar por já estar no limite de execuções paralelas. Neste caso a função lambda tentará executar novamente mais tarde em um momento em que não tenha tanta concorrência (exponential backoff).