Entenda de forma prática os benefícios de integrar o AWS Lambda com outros serviços da plataforma!

O AWS Lambda é uma plataforma que permite executar código sem a necessidade de provisionar ou gerenciar servidores. Ele é altamente flexível e pode ser integrado com uma variedade de serviços da AWS e outras plataformas externas.

 Algumas das integrações que o serviço permite fazer são:

1. Integração com eventos da AWS: O Lambda pode ser acionado automaticamente em resposta a eventos gerados por outros serviços da AWS, como o Amazon S3, Amazon DynamoDB, Amazon Kinesis, Amazon Simple Notification Service (SNS) e Amazon Simple Queue Service (SQS).

2. Integração com APIs: O Lambda pode ser usado como um endpoint para APIs RESTful, permitindo que o código seja executado em resposta a solicitações de API.

3. Integração com ferramentas de DevOps: O Lambda pode ser usado com ferramentas de integração e entrega contínuas, como o AWS CodePipeline e o AWS CodeDeploy, para automatizar o processo de implantação de código.

4. Integração com serviços externos: O Lambda pode ser usado para integrar com serviços externos, como o Salesforce, Twilio e Slack, permitindo que o código seja executado em resposta a eventos gerados por esses serviços.

5. Integração com bancos de dados: O Lambda pode ser usado para integrar com bancos de dados, como o Amazon RDS e o Amazon Aurora, permitindo que o código seja executado em resposta a eventos gerados pelo banco de dados.

Essas são apenas algumas das integrações possíveis com o AWS Lambda. O serviço é altamente flexível e pode ser integrado com uma ampla variedade de serviços e plataformas externas.

Pensando nessa variedade de integrações e flexibilidade que o serviço nos fornece, a pergunta que fica aqui é, até onde podemos chegar?

Bom, a resposta para isso é muito simples…

Como dizem muitos sábios “o céu é o limite!!!”

Integração com serviços AWS

Claro que pelo Lambda ser desenvolvido e mantido pela AWS, a integração facilitada com outros serviços nativos existe e funciona muito bem. No entanto, cada serviço da AWS possui suas próprias peculiaridades e nuances, e é importante estar ciente dessas peculiaridades ao integrar o Lambda com outros serviços. Nesta seção, vamos discutir algumas dessas peculiaridades de alguns dos serviços mais comuns que são integrados com o AWS Lambda. Compreender essas peculiaridades pode ajudar a garantir que a integração seja feita da forma mais eficiente e eficaz possível.

Amazon S3:

Quando se trata de integração do AWS Lambda com o Amazon S3, há várias maneiras de enviar informações para o Lambda ou acioná-lo a partir de objetos que são adicionados a um bucket do S3.

Uma maneira é usar um gatilho do S3, que pode ser configurado para acionar o Lambda sempre que um objeto é adicionado, excluído ou atualizado em um bucket do S3. O gatilho do S3 pode ser configurado para acionar o Lambda de forma síncrona ou assíncrona, dependendo das necessidades específicas.

Outra forma é usar o serviço Amazon S3 Event Notifications, que permite monitorar e receber notificações quando ocorrem eventos específicos no bucket do S3. O serviço pode ser configurado para enviar uma notificação para uma fila do Amazon Simple Queue Service (SQS), um tópico do Amazon Simple Notification Service (SNS) ou um endpoint HTTP, que pode então acionar o Lambda.

Além disso, também é possível acionar o Lambda diretamente a partir de um objeto no S3, usando a API do AWS Lambda para enviar um comando para o serviço. Isso permite que você envie informações diretamente do objeto para o Lambda e execute ações específicas com base nos dados do objeto.

Essas são algumas das maneiras mais comuns de integrar o AWS Lambda com o Amazon S3. Cada abordagem tem suas próprias vantagens e desvantagens, e é importante escolher a abordagem certa com base nas necessidades específicas do projeto.

Veja um exemplo em Python do envio de objetos do Lambda para um S3 bucket:

Agora note a diferença do exemplo acima para outro, onde o Lambda que é acionado pelo S3 Event Notification:

Amazon DynamoDB:

Quando se trata do DynamoDB, um banco de dados NoSQL gerenciado pela AWS, é possível integrá-lo com o Lambda da mesma forma que mencionamos anteriormente com o Amazon S3.

O Lambda pode ser configurado para enviar e receber dados do DynamoDB. É possível criar uma função Lambda que seja acionada quando ocorrerem determinados eventos no DynamoDB, como a inserção de novos itens ou atualizações em um item existente.

Por exemplo, você pode usar o Lambda para receber notificações quando novos itens são adicionados ao banco de dados DynamoDB e executar um código personalizado para processar esses itens. Ou, você pode usar o Lambda para adicionar novos itens ao DynamoDB a partir de uma fonte externa, como uma API HTTP.

Para integrar o DynamoDB com o Lambda, é necessário criar uma função Lambda que receba os eventos do DynamoDB e execute o código desejado. Em seguida, é necessário configurar o DynamoDB para enviar notificações para essa função Lambda quando ocorrerem eventos específicos.

Veja um exemplo de função Lambda, em Python, enviando dados para o DynamoDB:

Agora note a diferença de uma função Lambda que é chamada pelo recurso de stream de uma tabela do DynamoDB:

Mas é possível construir aplicações inteiras com Lambda?

A resposta é sim e serei mais enfático ainda, RECOMENDO MUITO!!!

Como tecnologia, o Lambda está entre as mais modernas de computação, ou seja, a nata da nata. Portanto, o custo-benefício ao utilizar o serviço AWS tende a ser muito vantajoso para seus sistemas, principalmente quando a aplicação completa é construída em cima do Lambda.

Logo abaixo vou deixar alguns exemplos de aplicações que você pode construir em cima deste poderoso serviço AWS:

1 – Processamento de eventos em tempo real: Lambda pode ser usado para processar eventos em tempo real, como logs, streams de dados, notificações e atualizações de banco de dados;

2 – Automação de processos: é possível usar Lambda para automatizar processos, como backups, atualizações de software, fluxos de trabalho de aprovação e outras tarefas comuns de rotina;

3 – Análise de dados: usando serviços como o Amazon Kinesis e o Amazon Redshift, Lambda pode ser usado para processar e analisar grandes volumes de dados em tempo real;

4 – Criação de APIs: Lambda pode ser usado para criar APIs sem servidor para sua aplicação, com integração com outros serviços da AWS como o Amazon API Gateway;

5 – Desenvolvimento de aplicações móveis: com o AWS Mobile Hub, você pode usar Lambda para desenvolver aplicativos móveis sem servidor, incluindo autenticação de usuário, gerenciamento de usuários e armazenamento de dados;

6 – Desenvolvimento de chatbots: Lambda pode ser usado para desenvolver chatbots usando plataformas como o Amazon Lex, permitindo a integração com serviços de mensagens como o Slack e o Facebook Messenger.

Que tal fazer um exemplo você mesmo?

Para começar, acesse: https://github.com/gugamainchein/serverless-framework-typescript

O repositório do GitHub em questão contém um projeto desenvolvido com o framework Serverless e utilizando a linguagem TypeScript. O Serverless Framework é uma plataforma para desenvolvimento de aplicações sem servidor, que permite que os desenvolvedores criem e implantem facilmente aplicações em serviços gerenciados na nuvem, como AWS Lambda, Azure Functions e Google Cloud Functions.

O projeto contém um conjunto de arquivos que descrevem a infraestrutura da aplicação, além dos códigos-fonte e dependências necessárias para sua execução. O código-fonte está organizado em módulos que representam diferentes funcionalidades da aplicação, como a autenticação do usuário e o gerenciamento de tarefas.

O uso de TypeScript, uma linguagem de programação que adiciona recursos de tipagem estática ao JavaScript, traz uma série de benefícios para o desenvolvimento da aplicação, como melhorias na produtividade, manutenção de código mais fácil e redução de erros.

O projeto apresenta um exemplo de como criar uma aplicação sem servidor escalável, utilizando uma série de serviços gerenciados da AWS, como AWS Lambda, API Gateway, DynamoDB e S3. É um bom exemplo para quem deseja aprender como utilizar o Serverless Framework com TypeScript, bem como explorar a integração com serviços da AWS.

foto-Gustavo-Mainchein
Gustavo Mainchein Full Stack Developer Senior na Darede
gustavo.mainchein@darede.com.br

Gustavo possui larga experiência em desenvolvimento de software e cloud computing. Ele possui diversas certificações da Hashicorp e da AWS, sendo a última AWS DevOps Engineer – Professional.

OUTRAS PUBLICAÇÕES

THROUGHPUT VS IOPS

Nosso #cloudspecialist José Anderson Vila Nova apresenta de forma prática a diferença entre Throughput vs IOPS. Confere aí!

Entendendo o AWS Transfer Family

O AWS Transfer Family é uma ferramenta da AWS que pode te ajudar a sanar muitos problemas! Entenda de forma prática como ele funciona! 14/09/2023 Por Thiago Marques O pai ta on!! Nesse blog existem diversos posts falando sobre serviços, soluções e possibilidades, e hoje vamos falar de um serviço da AWS, que resolve problemas muito comuns, mas que muitas vezes acaba sendo deixado de lado: o Transfer Family. Neste artigo, vamos explorar o que é o AWS Transfer Family, seus principais recursos e opções, além de fornecer um guia passo a passo para criar um servidor SFTP (Secure File Transfer Protocol) com código Python utilizando a biblioteca boto3 e um template CloudFormation para provisionar um servidor SFTP.  Fonte:https://d1.awsstatic.com/cloud-storage/product-page-diagram_AWS-Transfer-Family_HIW-Diagram.4af0b3b19477f22bc7e37995c43cf833b6db0ce9.png O que é o AWS Transfer Family O Transfer Family é uma solução versátil e poderosa da AWS que simplifica significativamente o processo de transferência de arquivos para a nuvem. O serviço permite que você configure facilmente servidores de transferência de arquivos além de oferecer suporte a vários protocolos de transferência, incluindo FTP (File Transfer Protocol), FTPS (FTP Secure), SFTP e até mesmo APIs personalizadas.  Essas características abrem possibilidades que vão desde um compartilhamento de arquivos seguros entre uma fonte externa e sua conta na AWS, outras aplicações para a solução podem ser: Backup de dados: Garantir que os dados que estão no onpremises utilizem um conector criptografado para transferência segura; Compartilhamento de arquivos: Compartilhar arquivos de forma segura com clientes, parceiros e fornecedores. Soluções como bucket S3, podem até resolver essa questão, mas nesse caso vai precisar de controles externos, profiles ou (no pior dos casos) deixar o bucket público (desaconselho fortemente). Integração com aplicativos: Como o Transfer Family vai garantir que a transferência de arquivos pontuais, ou mesmo contínuos, é possível integrá-lo com S3 e o Event Bridge para iniciar processamento de arquivos automaticamente; Vantagens do AWS Transfer Family Facilidade de configuração: Ele elimina a complexidade da configuração e gestão de servidores de transferência de arquivos. Dessa forma o provisionamento e gerenciamento de servidores pode ser feito facilmente ou pela console, ou via IaC. Segurança: O serviço fornece recursos de segurança robustos, e possui compatibilidade com modelos de conformidade como o FedRAMP (Federal Risk and Authorization Management Program), além de incluir mecanismos de autenticação baseadas no IAM, ou mesmo customizadas com utilização de Secrets Manager e Lambda. Escalabilidade: Além de ser um serviço gerenciado, ele é altamente escalável, permitindo ajustes de capacidade conforme a necessidade da solução evolui. Observabilidade: Com sua integração com o CloudWatch, criar métricas, alarmes e até o traceback dos logs com o cloudwatch logs é além de simples, totalmente eficaz e eficiente para coletas daqueles registros detalhados solicitados em auditorias. Múltiplas formas de saída (outputs): Se pode armazenar os arquivos diretamente em um bucket no S3, proporcionando durabilidade e escalabilidade, além de integração com outros serviços da AWS, ou ainda garantir uma maior facilidade na aplicação com a utilização do EFS como outputs. Adicionalmente é possível utilizar scripts no Lambda para enviar/processar esses arquivos diretamente. Pontos de atenção com o Transfer Family Mesmo com diversas vantagens existem alguns pontos de atenção a serem observados.  O serviço não tem por padrão uma forma simples para utilização de clientes. Dessa forma é necessário a utilização de clientes que suporte SFTP/FTP para a transferência de dados, ou mesmo de uma aplicação que faça essa função, o que deixa o trabalho um pouco árduo para usuários que não possuem familiaridade com os clientes. Bônus: Solution Web Client Como disse, por padrão não existe uma forma simples de utilização do serviço, contudo a AWS desenvolveu uma solução de web cliente, garantindo vantagens como simplicidade, suporte a multi-client e gerenciamento dos arquivos (upload, download, rename e delete). A solução esta disponível em: Web Client for AWS Transfer Family, e basicamente um cloudFormation que faz deploy da estrutura abaixo: Ao final teremos uma página web (CRUD) com autenticação, gerenciamento e interação muito mais útil e eficiente. Comparação de preços Por ser um serviço gerenciado em comparação direta com as mesmas funcionalidades em um IaaS o Transfer Family acaba ficando com um preço mais elevado. Obviamente todo o custo em operação, administração e infraestrutura deve ser colocado na balança. Conduto, considerando uma m6i.2xlarge com 200G de TransferOut/mês, o Transfer Family teria uma vantagem financeira:  Obs.: Aqui não consideramos savings plans, nem reserva. Infra como Código Como sempre vamos ver um exemplo de código para criar o deploy em python: import boto3   # Cria o objeto de cliente do serviço transfer_client = boto3.client(‘transfer’)   # Parametros server_params = {         ‘IdentityProviderType’: ‘SERVICE_MANAGED’,      ‘Protocols’: [‘SFTP’],     ‘EndpointType’:’PUBLIC’,     ‘Domain’:’S3′,     ‘Tags’:'[{‘Key’: ‘Name’, ‘Value’: ‘SFTP by Python’}]’   }   # Crie o servidor SFTP response = transfer_client.create_server(**server_params)   # Imprima o ID do servidor recém-criado print(‘ID do Servidor SFTP:’, response[‘ServerId’]) Conclusão O Transfer Family é uma ferramenta valiosa, que simplifica a transferência de arquivos para AWS, gerando facilidade na configuração, a segurança com diversos frameworks de compliantes, e toda a integração que a AWS possui entre seus serviços. Xero no suvaco!! Be Happy!!! Thiago Marques Technical Account Manager thiago.marques@darede.com.br Technical Account Manager da Darede, formato em Rede de Computadores, e pós graduado em Segurança da Informação. Possui ampla experiência em Datacenters e Service Providers, além de ser um entusiasta em DevOps e mercado financeiro.

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações