AWS Lambda é uma tecnologia sem servidor que permite executar código sem provisionar ou gerenciar servidores. Ele oferece suporte às linguagens de programação mais populares, incluindo Node.js.
Por que ficar sem servidor? Os benefícios de implantar uma API sem servidor incluem escalonamento automático, administração de servidor zero, capacidade de pagar apenas pelo que você usa, maior velocidade, etc. Executar sua API Express.js no AWS Lambda é uma ótima maneira de tirar proveito de tudo isso benefícios.
No entanto, Lambda não tem suporte direto para estruturas como Express.js construídas com linguagens de programação como Node.js. É aí que entra um adaptador como Claudia.js.
Claudia.js fica entre o AWS Lambda e seu aplicativo Express.js e converte eventos de invocação Lambda de várias fontes AWS, como gateways de API ou balanceadores de carga de aplicativo, em eventos HTTP que seu aplicativo Express pode ouvir.
Neste tutorial, vamos demonstrar como usar Claudia.js para implantar uma API sem servidor para AWS. Mostraremos como construir e implantar um aplicativo Express.js para AWS Lambda.
Aqui está o que vamos cobrir:
- O que é Claudia.js?
- Primeiros passos com Claudia.js
- Gerando um aplicativo Express.js
- Configurando seu aplicativo Express.js
- Implantando no AWS Lambda
O tutorial pressupõe que você esteja familiarizado com Node.js, Express.js e Lambda. Lambda espera que seu código seja estruturado de uma certa maneira. Portanto, se você quiser usá-lo para hospedar algo como um aplicativo Express, precisará usar um adaptador como Claudia.js.
O que é Claudia.js?
Claudia.js é uma ferramenta projetada para simplificar a implantação de projetos Node.js para AWS Lambda e API Gateway. Ele automatiza as tarefas de implantação para que você não precise se preocupar com a introdução de erros e configura tudo da maneira que você espera que seja pronto para uso.
De acordo com o site oficial , o objetivo principal de Claudia é ajudar os desenvolvedores de JavaScript a começar a usar microsserviços Lambda facilmente para que possam “se concentrar em soluções importantes problemas de negócios em vez de lidar com fluxos de trabalho de implantação da AWS. ”
Primeiros passos com Claudia.js
Nesta seção, vamos orientá-lo na configuração de um aplicativo Node.js e Express.js de exemplo para mostrar o Claudia.js em ação.
Instalando Claudia.js
Claudia .js está disponível no npm. A maneira mais simples de usar Claudia.js é instalá-lo como um utilitário global:
npm install-g claudia
Isso tornará o Claudia.js instantaneamente disponível para todos os seus projetos. Verifique se Claudia.js foi instalado corretamente executando o seguinte comando:
claudia--version
Se a instalação funcionar conforme o esperado, você verá um número de versão semelhante ao abaixo:
5.13.0
Configurando uma conta AWS
Se você ainda não tem uma conta da AWS, precisará criar uma. A Amazon tem um plano de nível gratuito, que cobrirá a criação e o teste do aplicativo Express.js no Lambda. Siga th is guia para configurar sua conta AWS
Configurar credenciais de acesso AWS
Agora que você tem uma conta da AWS, precisará criar um novo usuário e fornecer ao usuário acesso programático à sua conta da AWS. Siga as etapas descritas abaixo:
- Faça login em AWSLambdaFullAccess é necessário para todas as implantações Claudia.js
-
IAMFullAccess é necessário se você deseja que Claudia.js crie automaticamente funções de execução para sua função Lambda (recomendado para iniciantes)
Agora, instale o AWS CLI e use-o para configurar um local perfil. Claudia usará este perfil para implantar seu aplicativo no Lambda:
$ aws configurar ID da chave de acesso da AWS [Nenhum]: Sua ID da chave de acesso Chave de acesso secreta da AWS [Nenhuma]: sua chave de tela Nome da região padrão [Nenhum]: us-east-1 Formato de saída padrão [Nenhum]: json
Gerando um aplicativo Express.js
Instale o gerador de aplicativo Express.js usando npm:
npm install express-generator-g
O gerador Express é uma CLI que permite que você execute o comando express
em seu terminal:
express claudia-demo
Isso cria um novo projeto Express chamado claudia-demo
, que é então colocado dentro do diretório claudia-demo
:
cd claudia-demo
Agora instale todas as dependências do projeto:
npm install
Seu aplicativo não precisa escutar uma porta TCP porque o API Gateway manipulará as solicitações da web. Você pode se livrar da pasta .bin
criada pelo gerador Express.
Configurando seu aplicativo Express.js para implantação
O aplicativo Express.js será hospedado por uma função Lambda, portanto, ele precisa de um manipulador para enviar dados entre o aplicativo e o API Gateway. É aqui que entra Claudia.js. Claudia usa aws-serverless-express
para gerar uma função auxiliar para fazer a interface entre as solicitações de gateway de API e as solicitações e respostas Express.js.
Execute o comando abaixo no diretório do seu projeto. Se você renomeou seu módulo de aplicativo Express.js, substitua app
pelo nome do módulo de aplicativo Express.js principal:
$ claudia generate-serverless-express-proxy--express-module app
Isso adicionará aws-serverless-express
às dependências do projeto e criará o arquivo que contém a função Lambda. Por padrão, o arquivo será denominado lambda.js
.
Implementação no AWS Lambda
Seu aplicativo agora está pronto para entrar no ar:
claudia create--handler lambda.handler--deploy-proxy-api--region us-east-1
Parabéns! você tem seu aplicativo Express.js em execução no Lambda.
Conclusão
Vimos que podemos executar um aplicativo Express.js no AWS Lambda, mas todos os aplicativos Express devem ser executados no Lambda?
Express.js assume que seu aplicativo está sendo executado em um servidor tradicional e não sem servidor. Certas operações que funcionam facilmente em um aplicativo de servidor Express.js tradicional podem não funcionar sem servidor.
Por exemplo, uploads de arquivos e imagens não funcionariam em um aplicativo Express.js no Lambda porque o aplicativo não tem acesso a um sistema de arquivos persistente. Além disso, a comunicação WebSocket não funcionaria no Lambda porque seu servidor não existe quando não há solicitações.
Como qualquer ferramenta, a viabilidade de executar seu aplicativo Express.js no AWS Lambda depende do seu caso de uso e dos requisitos exclusivos do seu projeto. Espero que este tutorial forneça algumas dicas para ajudá-lo a determinar quando usar esse método.
A postagem Implementando uma API sem servidor para AWS com Claudia.js apareceu primeiro no LogRocket Blog .