Going Serverless: como executar sua primeira função AWS Lambda na nuvem

Uma década atrás, os servidores da nuvem abstraíram os servidores físicos. E agora, "Serverless" está abstraindo os servidores da nuvem.

Tecnicamente, os servidores ainda estão lá. Você não precisa mais gerenciá-los.

Outra vantagem de ser sem servidor é que você não precisa mais manter um servidor funcionando o tempo todo. O "servidor" aparece de repente quando você precisa, então desaparece quando terminar. Agora, você pode pensar em termos de funções em vez de servidores, e toda sua lógica de negócios pode agora viver dentro dessas funções.

No caso das funções AWS Lambda, isso é chamado de gatilho. As funções Lambda podem ser desencadeadas de diferentes maneiras: uma solicitação HTTP, um novo carregamento de documentos para S3, um trabalho programado, um fluxo de dados da AWS Kinesis ou uma notificação do SNS (Serviço de Notificação Simples da AWS).

Neste tutorial, vou mostrar-lhe como configurar sua própria função Lambda e, como um bônus, mostrar-lhe como configurar uma API REST tudo no AWS Cloud, enquanto escreve um código mínimo.

Observe que os prós e contras de Serverless dependem do seu caso de uso específico. Então, neste artigo, não vou dizer se o Serverless é adequado para sua aplicação específica – vou mostrar-lhe como usá-lo.

Primeiro, você precisará de uma conta AWS. Se ainda não possui um, comece por abrir uma conta AWS grátis aqui . A AWS tem uma camada gratuita que é mais que suficiente para o que você precisa para este tutorial.

Nós estaremos escrevendo a função isPalindrome, que verifica se uma string passada é um palindrome ou não.

Acima é uma implementação de exemplo em JavaScript. Aqui está o link para gist on Github.

Um palindrome é uma palavra, frase ou seqüência que lê o mesmo para trás, como para frente, por uma questão de simplicidade, limitaremos a função somente para palavras.

Como podemos ver no trecho acima, tomamos a corda, dividi-la, inverte-a e depois junte-se a ela. se a corda e o inverso forem iguais, a string é um Palindrome, caso contrário, a string não é um Palindrome.

Criando a função isPalindrome Lambda

Nesta etapa, iremos para o AWS Console para criar a função Lambda:

No AWS Console vá para Lambda.

E então pressione "Começar agora".

Para o tempo de execução, selecione Node.js 6.10 e depois pressione "Função em branco".

Passe este passo e pressione "Avançar".

Para o tipo de nome em isPalindrome, para o tipo de descrição em uma descrição da sua nova função Lambda, ou deixe-o em branco.

Como você pode ver na essência acima, uma função Lambda é apenas uma função que estamos exportando como um módulo, neste caso, manipulador chamado. A função possui três parâmetros: evento, contexto e uma função de retorno de chamada.

O retorno de chamada será executado quando a função Lambda for concluída e retornará uma resposta ou uma mensagem de erro. Para a resposta em branco do modelo Lambda é codificada como a string 'Hello from Lambda'. Para este tutorial, uma vez que não haverá tratamento de erros, você apenas usará Null. Observaremos de perto o parâmetro do evento nos próximos slides.

Rolar para baixo. Para o papel, escolha "Criar novo papel do modelo" e, para o uso do nome do papel, isPalindromeRole ou qualquer nome, você gosta.

Para modelos de política, escolha as permissões "Simple Microservice".

Para memória, 128 megabytes é mais que suficiente para nossa função simples.

Quanto ao tempo limite de 3 segundos, isso significa que – se a função não retornar dentro de 3 segundos – AWS irá desligá-lo e retornar um erro. Três segundos também são mais do que suficientes.

Deixe o resto das configurações avançadas inalteradas.

Pressione "Criar função".

Parabéns – você criou sua primeira função Lambda. Para testá-lo, pressione "Testar".

Como você pode ver, sua Função Lambda retorna a resposta codificada de "Olá da Lambda".

Agora, adicione o código de isPalindrome.js à sua função Lambda, mas ao invés de return result use callback(null, result) . Em seguida, adicione um valor de seqüência codificado de abcd na linha 3 e pressione "Testar".

A função Lambda deve retornar "abcd não é um Palindrome".

Para o valor de string codificado de "racecar", The Lambda Function retorna "racecar is a Palindrome".

Até agora, a função Lambda que criamos está se comportando conforme o esperado.

Nas próximas etapas, vou mostrar-lhe como ativá-lo e passar um argumento de string usando uma solicitação HTTP.

Se você construiu APIs REST do zero antes de usar uma ferramenta como Express.js, o trecho acima deve ter sentido para você. Você primeiro cria um servidor e, em seguida, define todas as suas rotas um a um.

Nesta seção, vou mostrar-lhe como fazer o mesmo usando o AWS API Gateway.

Criando o Gateway da API

Vá para o AWS Console e pressione "Gateway da API".

E então, pressione "Começar".

No painel Criar novo API, selecione "Nova API".

Para o nome da API, use "palindromeAPI." Para descrição, digite uma descrição da sua nova API ou deixe-a em branco.

Nossa API será simples, e somente terá um método GET que será usado para se comunicar com a função Lambda.

No menu Ações, selecione "Criar Método". Um pequeno submenu aparecerá. Vá em frente e selecione GET e clique na marca de seleção à direita.

Para o tipo de integração, selecione a função Lambda.

Em seguida, pressione "OK".

Na tela GET – Execução do Método, pressione "Solicitação de Integração".

Para o tipo de integração, certifique-se de que a função Lambda esteja selecionada.

Para solicitar passagem do corpo, selecione "Quando não houver modelos definidos" e, em seguida, para Content-Type digite "application / json".

No espaço em branco, adicione o objeto JSON mostrado abaixo. Este objeto JSON define o parâmetro "string" que nos permitirá passar por valores de string para a função Lambda usando uma solicitação HTTP GET. Isso é semelhante ao usar req.params em Express.js.

Nos próximos passos, veremos como passar o valor da seqüência de caracteres para a função Lambda e como acessar o valor passado dentro da função.

A API agora está pronta para ser implantada. No menu Ações, clique em "Implementar API".

Para o estágio de implantação, selecione "[Nova etapa]".

E para o nome do palco use "prod" (que é curto para "produção").

A API agora está implantada e o URL de invocação será usado para se comunicar via solicitação HTTP com Lambda. Se você lembrar, além de um retorno de chamada, Lambda leva dois parâmetros: evento e contexto.

Para enviar um valor de seqüência de caracteres para Lambda você leva o URL de invocação da sua função e adiciona-o ?string=someValue e, em seguida, o valor passado pode ser acessado a partir da função usando event.string .

Modifique o código removendo o valor de string codificado e substituindo-o por event.string como mostrado abaixo.

Agora, no navegador, pegue o URL de invocação da sua função e adicione ?string=abcd para testar sua função através do navegador.

Como você pode ver, Lambda responde que o abcd não é um Palindrome. Agora faça o mesmo para o racecar.

Se você preferir, você pode usar o Postman também para testar sua nova função IsPalindrome Lambda. O Postman é uma ótima ferramenta para testar seus pontos finais da API, você pode aprender mais sobre isso aqui .

Para verificar se funciona, aqui está um Palindrome:

E aqui está um não palíndromo:

Parabéns – você acabou de configurar e implantou sua própria função Lambda!

Obrigado por ler!