AWS Lambda - Introdução

AWS Lambda é um serviço que cuida de computar seu código sem nenhum servidor. Diz-se que é computação sem servidor. O código é executado com base na resposta de eventos em serviços AWS, como adicionar / remover arquivos no intervalo S3, atualizar Amazon DynamoDBtables, solicitação HTTP do gateway Amazon Api etc.

O código AWS Lambda pode ser escrito em NodeJS, Java, C #, Python e Go. Este capítulo falará em detalhes sobre a criação da função AWS Lambda no console da AWS.

AWS Console

Faça login no AWS Console no link https://aws.amazon.com/console. Depois de fazer o login, ele o redirecionará para a tela onde os serviços da AWS são exibidos.

Exemplo: Criação de uma função

Vamos entender a funcionalidade do AWS Console com a ajuda de um exemplo. Clique em Lambda (marcado acima), ele irá redirecionar para criar a função conforme mostrado abaixo -

Clique Create function botão e a tela exibe os seguintes detalhes -

Observe que, por padrão, a opção é Author from scratch. Esta opção permite que você escreva o código Lambda do zero. Terá apenas uma função simples comhello world mensagem.

A segunda opção Blue prints tem os seguintes detalhes.

Ele fornece detalhes do código já escrito para alguns dos serviços aws em idiomas disponíveis com AWS Lambda. Caso você precise escrever o código AWS Lambda para todos os serviços que puder verificarblue prints e comece.

A terceira opção Serverless Application Repository tem a configuração de aplicativo sem servidor que ajudará a implantar o código AWS Lambda.

Na discussão posterior, trabalharemos na primeira opção, onde criamos a função lambda da AWS usando Author from scratch.

Antes de criarmos a função Lambda, será necessária uma função, ou seja, permissão para trabalhar com serviços AWS e aws lambda. Posteriormente, a função deve ser atribuída à função aws lambda.

Criação de função no AWS Console

Para criar uma função no AWS Console, vá para AWS console services e clique em IAM conforme mostrado abaixo -

Agora, se você clicar IAM, você verá a tela conforme mostrado abaixo -

Se você selecionar Roles, você pode ver os seguintes botões na tela -

Agora clique Create role. Ele solicitará que você escolha o serviço em que precisa usar a função criada.

Uma vez que precisamos usar esta função com AWS Lambda, selecione Lambda e clique Next:Permissionsbotão como mostrado acima. A próxima tela exibe o nome da política que está disponível de acordo com os serviços da AWS. Você pode selecionar a política aqui -

Por exemplo, se você deseja permissão para o AWS Lambda trabalhar com S3 e DynamoDB, você precisa selecionar a política. Na caixa de pesquisa, insira o serviço AWS e clique na caixa de seleção. Você pode selecionar várias políticas e depois clicar emNext:Review.

Também é possível criar sua própria política. Por exemplo, existe uma tabela dynamodb e você precisa dar permissão apenas para essa tabela, em tais casos, você pode criar uma política.

Clique em Create policybotão conforme mostrado na tela acima. A seguir estão os detalhes exibidos na tela.

Escolha um Servicepara o qual você está criando a política. Mais tarde, ele exibirá dados para Ações,resources e Request conditions.

Agora, devemos escolher o serviço. Deixe-nos selecionarAWS Dynamodb da pesquisa. Actions tem os seguintes detalhes -

Agora, entre no Access levelvocê quer dar ao DynamoDB. Então,resources exibirá os seguintes detalhes -

Agora, selecione o tipo de recurso da tabela. Você pode ver a seguinte saída -

Para obter permissão na mesa, você precisa Add ARN. ARN são os detalhes exclusivos da tabela criada no AWS DynamoDB. Você obterá os detalhes quando a tabela for criada no dynamodb.

Se você clicar Add ARN e exibirá os seguintes detalhes -

Agora, se você entrar no ARN e a Region, Account e Tableo nome será preenchido. Você deve clicarAddbotão para adicionar a política. Da mesma forma, você pode criar políticas para outros serviços.

Aqui, selecionamos duas políticas AmazonS3FullAccess e AmazonDynamoDBFullACcess. Demos acesso total ao S3 e ao DynamoDB nessa função. No entanto, sugere-se que você dê permissão apenas para os intervalos e tabelas necessários.

Você pode seguir as etapas discutidas anteriormente para criar as políticas usando ARN.

Passo 1

Clique Create rolebotão para criar a função. Todas as funções criadas são exibidas conforme mostrado -

Passo 2

Observe que você pode selecionar a função necessária, caso precise de alguma modificação para a função criada. Se selecionarmosAuthor from scratch option, você tem que entrar Name, Runtime and Role.

etapa 3

Você pode observar os seguintes detalhes em Runtime dropdown -

Passo 4

Você pode selecionar o tempo de execução de sua escolha e prosseguir conforme mostrado.

Role lista suspensa tem as seguintes opções -

  • Choose an existing role − Isso exibirá todas as funções criadas nas funções do IAM.

  • Create new role from template(s) −Isso permitirá que você crie uma função e exibirá a permissão para ser selecionado para essa função. Observe a captura de tela para um melhor entendimento.

  • Create a custom role − Isso permite que o usuário crie políticas conforme discutimos anteriormente.

Etapa 5

Selecione os runtime, rolee adicione a função. Clique emCreate functionbotão para criar a função lambda. A próxima tela exibida é a seguinte -

Partes da função AWS Lambda

Existem duas partes para a função AWS Lambda:Configuration e Monitoring. Vamos discutir cada um em detalhes.

Configuração

As seguintes funcionalidades estão incluídas na Configuração.

Add Triggers

Os gatilhos que são necessários para adicionar à função AWS Lambda são exibidos da seguinte forma -

Observe que quando selecionamos um gatilho, precisamos adicionar os detalhes de configuração para esse gatilho. Por exemplo, para o gatilho S3, precisamos selecionar o nome do intervalo; para o gatilho Dynamodb, precisamos selecionar o nome da tabela.

Exemplo

Vamos ver um exemplo de detalhes de configuração para um gatilho S3 -

Agora, adicione detalhes de configuração para o gatilho S3 adicionado -

Aqui você precisa selecionar o bucket name, event type no qual você deseja acionar Lambda, prefixo e padrão de filtro, se houver e Add o gatilho.

Adicionando Código no Lambda

Agora, devemos nos concentrar no código Lambda a ser escrito. Para adicionar código em aws lambda, existem três opções -

  • Usando o editor embutido
  • Usando arquivo .zip
  • Carregar arquivo do Amazon S3

Isso é mostrado na imagem abaixo -

Vamos discutir cada um deles em detalhes.

Using the inline editor

O editor de código embutido onde você pode escrever seu código é o seguinte -

Você pode escrever seu código escolhendo o idioma de sua escolha. Você tem permissão para escolher o tempo de execução novamente aqui.

Observe a imagem a seguir para uma melhor compreensão -

O código deve ser escrito em index.js.Handler. Os detalhes variam de acordo com o tempo de execução. Paranodejs, isto é filename.export function que é agora index.lambda handler.

Upload a .ZIP file

Você pode primeiro escrever o código, compactá-lo e fazer upload do arquivo zip selecionando Upload a .ZIP file.

Upload a file from Amazon S3

Você pode fazer o upload do arquivo no intervalo S3 e escolher a opção Upload a file from Amazon S3.

Observe que para .ZIP e S3 não será possível alterar o tempo de execução.

Variáveis ​​ambientais

Eles pegam pares de valores-chave e os compartilham com o código AWS Lambda. Podemos usar variáveis ​​de ambiente no AWS Lambda para armazenar os detalhes de conexão do banco de dados, detalhes do arquivo para armazenar a saída, detalhes do arquivo de log etc.

Tag

Eles são pares de valores-chave adicionados ao AWS Lambda para organizar melhor a função quando usados ​​em diferentes regiões. Para um caso de uso simples, não é necessário. Quando há muitas funções do Lambda criadas, a marcação ajuda a filtrar e gerenciar as funções do Lambda.

Função de execução

Você pode alterar a função novamente aqui, se não for feito corretamente no início da criação da função Lambda. Você pode atualizar ou criar uma nova função aqui. Ele fornece as mesmas opções que foram exibidas no início da criação da função Lambda.

Configurações básicas

Aqui você precisa inserir uma breve descrição do que sua função Lambda está fazendo. Selecione a memória e o tempo limite necessários para a função Lambda.

Rede

Isso permite que você selecione o VPC que permitirá que você acesse a função Lambda do VPC. Por padrão, nenhum VPC é selecionado.

Depuração e tratamento de erros

Para depuração e tratamento de erros, você pode selecionar o serviço AWS para enviar os detalhes. As opções disponíveis sãoNone, SNS e SQS.

Simultaneidade

Isso permite que você aloque um limite específico de execuções simultâneas permitidas para esta função.

Auditoria e Conformidade

Ele contém logs que são gerenciados com a ajuda do AWS CloudTrail.

Uma vez feito isso, você precisa salvar as alterações usando o botão Salvar, conforme mostrado aqui -

Agora, se você clicar Testbotão, ele solicitará um evento de teste. Você pode passar em um evento de teste de amostra da seguinte maneira -

O evento de teste criado é mostrado aqui -

Agora, salve o evento de teste e clique no botão de teste para ver a execução da função AWS Lambda -

O código para index.js é o seguinte -

exports.lambdahandler = (event, context, callback) => {
   // TODO implement
   console.log(event.key1);
   console.log(event.key2);
   console.log(event.key3);
   callback(null, 'Lambda test');
};

Observe que a função de retorno de chamada é chamada quando há erro ou sucesso. Se tiver sucesso, você pode verLambda test será exibido.

Monitoramento

Selecione a guia de monitoramento para visualizar os detalhes de execução da função Lambda. Os gráficos mostram os detalhes do tempo de execução, erros ocorridos etc.

Você também pode ver os registros no Cloudwatch. Para isso, vá para serviços da AWS e selecione o Cloudwatch conforme mostrado -

Agora, selecione os registros do lado esquerdo e insira o nome da função no filtro -