AWS Lambda - Visão geral
AWS Lambdaé um serviço que executa computação sem servidor, que envolve computação sem nenhum servidor. O código é executado com base na resposta de eventos em serviços AWS, como adicionar / remover arquivos no intervalo S3, atualizar tabelas Amazon dB dB, solicitação HTTP do gateway de API da Amazon etc.
Para começar a trabalhar com AWS Lambda, só precisamos enviar o código no serviço AWS Lambda. Todas as outras tarefas e recursos, como infraestrutura, sistema operacional, manutenção de servidor, monitoramento de código, logs e segurança, são cuidados pela AWS.
AWS Lambdasuporta linguagens como Java, NodeJS, Python, C # e Go. Observe que o AWS Lambda funcionará apenas com serviços AWS.
O que é AWS Lambda?
A definição de AWS Lambda conforme dada por sua documentação oficial é a seguinte -
O AWS Lambda é um serviço de computação que permite executar código sem provisionar ou gerenciar servidores. O AWS Lambda executa seu código apenas quando necessário e escala automaticamente, de algumas solicitações por dia a milhares por segundo. Você paga apenas pelo tempo de computação que consome - não há cobrança quando seu código não está em execução.
Como o AWS Lambda funciona?
O diagrama de blocos que explica o funcionamento do AWS Lambda em cinco etapas fáceis é mostrado abaixo -
Step 1 − Faça upload do código lambda da AWS em qualquer uma das linguagens compatíveis com o lambda da AWS, ou seja, NodeJS, Java, Python, C # e Go.
Step 2 − Esses são alguns serviços da AWS nos quais o lambda da AWS pode ser acionado.
Step 3 −AWS Lambda, que possui o código de upload e os detalhes do evento no qual o acionador ocorreu. Por exemplo, evento do Amazon S3, Amazon API Gateway, Dynamo dB, Amazon SNS, Amazon Kinesis, CloudFront, Amazon SES, CloudTrail, aplicativo móvel etc.
Step 4 − Executa o código AWS Lambda apenas quando acionado pelos serviços AWS em cenários como -
- O usuário carrega arquivos no intervalo S3
- http get / post endpoint URL é atingido
- os dados são adicionados / atualizados / excluídos nas tabelas dB do dínamo
- notificação push
- coleta de fluxos de dados
- hospedagem de site
- envio de email
- aplicativo móvel, etc.
Step 5 − Lembre-se de que a AWS cobra apenas quando o código lambda da AWS é executado, e não de outra forma.
Vantagens de usar AWS Lambda
O AWS Lambda oferece vários benefícios quando você está trabalhando nisso. Esta seção os discute em detalhes -
Facilidade de trabalhar com código
O AWS Lambda oferece a infraestrutura para fazer upload de seu código. Ele se encarrega de manter o código e dispara o código sempre que o evento necessário acontece. Ele permite que você escolha a memória e o tempo limite necessário para o código.
O AWS Lambda também pode executar solicitações paralelas de acordo com os gatilhos de evento.
Provisão de Log
O AWS Lambda fornece os detalhes do número de vezes que um código foi executado e o tempo gasto para execução, a memória consumida etc. O AWS CloudWatch coleta todos os logs, o que ajuda na compreensão do fluxo de execução e na depuração do código.
Faturamento com base no uso
O faturamento do AWS Lambda é feito com base no uso da memória, na solicitação feita e na execução, que é faturada em incrementos de no mínimo 100 ms. Portanto, para uma execução de 500ms, o faturamento será a cada 100ms. Se você especificar seu código lambda da AWS para ser executado em 500 ms e o tempo de execução for de apenas 200 ms, a AWS cobrará você apenas pelo tempo gasto, ou seja, 200 ms de execução em vez de 500 ms. A AWS sempre cobra pelo tempo de execução usado. Você não precisa pagar se a função não for executada.
Suporte multilíngue
O AWS Lambda oferece suporte a linguagens populares, como Node. js, Python, Java, C # e Go. Essas são linguagens amplamente utilizadas e qualquer desenvolvedor achará fácil escrever código para AWS Lambda.
Facilidade de criação e implantação de código
Existem muitas opções disponíveis para Lambda para autoria e implantação de código. Para escrever seu código, você pode usar o editor online da AWS, Visual Studio IDE ou Eclipse IDE. Ele também oferece suporte para estrutura sem servidor, o que facilita a escrita e a implantação do código AWS Lambda. Além do console AWS, temos AWS-cli para criar e implantar código.
Outras características
Você pode usar o AWS Lambda gratuitamente obtendo um login para o nível gratuito da AWS. Oferece serviço gratuito por 1 ano. Dê uma olhada nos serviços gratuitos oferecidos pelo nível gratuito da AWS.
Desvantagens de usar AWS Lambda
Apesar de muitas vantagens, o AWS Lambda possui as seguintes desvantagens -
Não é adequado para pequenos projetos.
Você precisa analisar cuidadosamente seu código e decidir a memória e o tempo limite. Caso sua função precise de mais tempo do que o alocado, ela será encerrada de acordo com o tempo limite especificado e o código não será executado totalmente.
Como a AWS Lambda depende totalmente da AWS para a infraestrutura, você não pode instalar nenhum software adicional se seu código exigir.
Eventos que acionam o AWS Lambda
Os eventos que podem acionar o AWS Lambda são os seguintes -
- Entrada em um objeto S3
- Inserção, atualização e exclusão de dados na tabela Dynamo DB
- Notificações push do SNS
- Chamadas GET / POST para API Gateway
- Modificação de cabeçalhos no visualizador ou solicitação / resposta de origem no CloudFront
- Entradas de registro no fluxo de dados AWS Kinesis
- Registrar histórico no CloudTrail
Casos de uso do AWS Lambda
O AWS Lambda é um serviço de computação usado principalmente para executar processos em segundo plano. Ele pode ser acionado quando usado com outros serviços AWS. A lista de serviços AWS onde podemos usar AWS Lambda é fornecida abaixo -
S3 Object e AWS Lambda
O Amazon S3 passa os detalhes do evento para o AWS Lambda quando há qualquer upload de arquivo no S3. Os detalhes do upload do arquivo ou exclusão do arquivo ou movimentação do arquivo são passados para o AWS Lambda. O código no AWS Lambda pode realizar a etapa necessária para quando ele recebe os detalhes do evento. Por exemplo, criando uma miniatura da imagem inserida no S3.
DynamoDB e AWS Lambda
O DynamoDB pode acionar o AWS Lambda quando houver dados adicionados, atualizados e excluídos da tabela. O evento AWS Lambda possui todos os detalhes da tabela AWS DynamoDB sobre a inserção / atualização ou exclusão.
API Gateway e AWS Lambda
O API Gateway pode acionar o AWS Lambda em métodos GET / POST. Podemos criar um formulário e compartilhar detalhes com o endpoint do API Gateway e usá-lo com o AWS Lambda para processamento posterior, por exemplo, fazendo uma entrada dos dados na tabela DynamoDB.
SNS e AWS Lambda
O SNS é usado para notificações push, envio de SMS etc. Podemos acionar o AWS lambda quando houver qualquer notificação push acontecendo no SNS. Também podemos enviar SMS para o número de telefone do AWS Lambda quando ele recebe o gatilho.
Eventos programados e AWS Lambda
Os eventos programados podem ser usados para tarefas cron. Ele pode acionar o AWS Lambda para realizar a tarefa no padrão de tempo regular.
CloudTrail e AWS Lambda
O CloudTrail pode ser útil no monitoramento dos logs da conta. Podemos usar o AWS Lambda para processar posteriormente os logs do CloudTrail.
Kinesis e AWS Lambda
Kinesis é usado para capturar / armazenar dados de rastreamento em tempo real provenientes de cliques em sites, logs, feeds de mídia social e um gatilho para que o AWS Lambda possa fazer processamento adicional nesses logs.
CloudFront e Lambda @ Edge
CloudFront é uma rede de entrega de conteúdo onde você pode hospedar seu site e Lambda @ Edge pode ser usado para processar os cabeçalhos provenientes da solicitação do visualizador, solicitação de origem, resposta de origem e resposta do visualizador. A modificação de cabeçalhos inclui tarefas como modificação de dados de cookies, reescrita de URL, usado para testes AB para alterar a resposta enviada ao usuário de volta, adicionando informações de cabeçalhos extras para fins de segurança etc.