AWS Serverless - Lambda Flashcards

1
Q

Cite exemplos de serviços Serverless na AWS

A

AWS Lambda, DynamoDB, AWS Cognito, AWS API Gateway, Amazon S3, AWS SNS & SQS, AWS Kinesis Data Firehose, Aurora Serverless, Step Functions, Fargate

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Por que utilizar Lambda?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Quais os benefícios de utilizar Lambda Functions?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Quais linguagens são suportadas no Lambda?

A

Node.js, Python, Java, C#, Golang, Ruby, Custom Runtime API, Lambda Container Image,

Para executar imagens arbitrarias, é preferível utilizar ECS / Fargate

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Para que serve Lambda@Edge?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Cite 4 casos de uso para Lambda@Edge

A

A/B testing, Intelligently Route Across Origins and Data Centers, Real-time Image Transformation, User Tracking and Analytics, User Authentication and Authorization

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Como é feito o processamento assíncrono de funções Lambdas?

A

É 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Como funciona o Lambda Event Source Mapping?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Como é feito a paralelização do Lambda Event Source Mapping (Kinesis e DynamoDb)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Como é feito a tratativa de erro para stream no Event Source Mapping (kinesis)?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Para que serve Lambda - Destinations?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Quais são os Lambda - Destinations para Asynchronous invocations?

A

Amazon SQS, Amazon SNS, AWS Lambda, Amazon EventBridge bus.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Quais são os Lambda - Destinations para Event Source mapping?

A

Amazon SQS e Amazon SNS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Como dar permissão para outras contas utilizarem seus recursos lambdas?

A

Utilizando resource-based policies.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que são lambda Environment Variables?

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qual VPC é realizado o deploy das funções lambdas? É possível permitir acesso a lamba a sua VPC?

A

É 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.

17
Q

É possível permitir acesso a lamba a sua VPC?

A

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.

18
Q

Uma função lambda na sua VPC tem acesso a internet?

A

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).

19
Q

Como uma função lambda pode ter seus recursos escalados?

A

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.

20
Q

Qual o timeout de uma função lambda?

A

O default é 3 segundos, podendo chegar a 15 minutos (900 segundos).

21
Q

O que é Lambda Execution Context?

A

É 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.

22
Q

Caso precise baixar arquivos na execução lambda, onde posso salva-los?

A

É 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.

23
Q

Posso escalar até quantas execuções concorrentes de lambda?

A

É 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).

24
Q

O que acontece se uma função lambda assíncrona tenta executar em um momento de alta concorrência?

A

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).

25
Q

O que é cold starts em funções lambda?

A

É quando uma função lambda demora para iniciar por ter que carregar dependências como código, SDK,… podendo aumentar a latência nas execuções lambda.

26
Q

Como carregar as dependências de uma função lambda?

A

É necessário carregar as dependências junto com a função. Ou seja, pacotes do node.js ou python é necessário instalar os pacotes junto com o código e criar um zip com tudo.

Usar pip –target options

27
Q

Como realizar o deploy de lambda function utilizando CloudFormation?

A

É possível definir o código inline, porém serve apenas para códigos simples, pois não é possível colocar dependências dessa forma.

Outra alternativa é inserir a aplicação com suas dependências zipadas no S3 e referenciar o código no S#3 no CloudFormation

28
Q

Como permitir a Lambda e CloudFormation através do S3 em várias contas?

A

Inserir o código lambda em um bucket S3. Criar um Bucket Policy permitindo as outras contas (AccountID).

Criar uma execution role permitindo get and list to S3 bucket.

29
Q

O que são lambda layers?

A

É uma forma de empacotar as dependências da função lambda de forma a não ser necessário realizar o upload das dependências que não são alteradas com frequência todas as vezes que o código precisar ser atualizado.

30
Q

Posso utilizar container para rodar minhas funções lambdas? Se sim, como posso fazer isso?

A

Sim, é possível. Para isso é necessário utilizar a imagem fornecida pela AWS com LambdaRuntimeAPI implementada.

Caso não queira utilizar estas imagens da AWS, você pode construir seu próprio container, porém ainda assim será necessário ter o LambdaRuntimeApi implementado.

31
Q

O que são lambda versions?

A

É como podemos versionar lambdas, assim como fazemos com códigos. Dessa forma, a lambda por vesão é imutável, possibilitando a utilização de uma versão estável. Utilizar o $LATEST traz o risco de a última versão carregar algum bug ou alteração inesperada sempre que sai uma nova versão.

32
Q

Como posso disponibilizar versões de lambda para outras contas?

A

É possível utilizar AWS Lambda Aliases, que são ponteiros para versões de funções lambda. Porém, diferente a versão, que é imutável, o aliases pode apontar para diferentes imagens. Então você pode referenciar sua aplicação para utilizar a lambda “prod”,. Dessa forma, quando ocorrer uma modificação que seja pertinente e testada, basta mudar o aliases “prod” para a nova versão, sem ter que solicitar a troca da versão para os consumidores.

É possível utilizar aliases para blue/green test também.

33
Q

Quais são os limites de execução de uma função lambda?

A

A alocação de memória varia de 128MB a 10 GB
O tempo máximo de execução é de 900 segundos (15 min).
As variáveis de ambiente podem ter 4KB
A capacidade de disco é de 512MB (in /tmp)
Máximo de 1000 execuções concorrentes (pode aumentar com ticket).

34
Q

Quais são as limitações de deploy de uma função lambda?

A

O tamanho do deploy (.zip) não pode ultrapassar 50MB.
O tamanho descomprimido (código + dependências) não pode ultrapassar 250MB.
O tamanho das variáveis de ambiente é 4KB.