Reúna os serviços da AWS usando uma abordagem de tecnologia sem servidor - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Reúna os serviços da AWS usando uma abordagem de tecnologia sem servidor

Criado por Aniket Braganza (AWS)

Ambiente: produção

Tecnologias: Sem servidor;;;; Modernização CloudNative DevelopmentAndTesting DevOps; Infraestrutura

Serviços da AWS: Amazon S3; Amazon SNS; Amazon SQS; AWS Lambda

Resumo

Esse padrão demonstra uma abordagem escalável e com tecnologia sem servidor para processar um arquivo enviado por meio do encadeamento do Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon SNS), Amazon Simple Queue Service (Amazon SQS) e AWS Lambda. O exemplo do arquivo enviado é para fins de demonstração. Você pode usar uma abordagem com tecnologia sem servidor para concluir outras tarefas encadeando a combinação dos serviços da AWS necessários para atingir suas metas de negócios. A abordagem com tecnologia sem servidor emprega um fluxo de trabalho assíncrono que depende de notificações orientadas por eventos, armazenamento resiliente e computação de função como serviço (FaaS) para processar solicitações. Você pode usar a abordagem de tecnologia sem servidor para escalar para atender à demanda e, ao mesmo tempo, minimizar os custos.

Observação: há várias opções para encadear os serviços da AWS por meio de uma abordagem de tecnologia sem servidor. Por exemplo, você pode usar uma abordagem que combina o Lambda com o Amazon S3 em vez do Amazon SNS e do Amazon SQS. No entanto, esse padrão usa o Amazon SNS e o Amazon SQS porque essa abordagem possibilita adicionar vários pontos de integração ao processo de invocação do Lambda durante uma notificação de evento e estender a implementação para incluir vários receptores em uma orquestração com tecnologia sem servidor, minimizando a quantidade de sobrecarga de processamento.

Pré-requisitos e limitações

Pré-requisitos

Versões do produto

  • AWS CDK 2.x

  • Python 3.9

Arquitetura

O diagrama a seguir ilustra como os serviços encadeados da AWS podem permitir que um usuário faça upload de um arquivo em um bucket do S3 para processamento.

Fluxo de trabalho para fazer upload de um arquivo em um bucket do S3 usando serviços da AWS encadeados.

O diagrama mostra o seguinte fluxo de trabalho:

  1. Um usuário faz upload de um arquivo para seu bucket do S3.

  2. O upload inicia um evento do S3 que publica uma mensagem em um tópico do SNS. A mensagem contém os detalhes do evento do S3.

  3. A mensagem publicada no tópico do SNS é inserida em uma fila do SQS, que está inscrita e recebe notificações desse tópico.

  4. Uma função do Lambda pesquisa a fila do SQS (como fonte de eventos) e espera que as mensagens sejam processadas.

  5. Quando a função do Lambda recebe mensagens da fila do SQS, ela as processa e confirma o recebimento dessas mensagens.

  6. Se uma mensagem não for processada pelo Lambda, essa mensagem será retornada para a fila do SQS e, consequentemente, transferida para uma fila de mensagens não entregues do SQS.

Pilha de tecnologia

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

Ferramentas

Serviços da AWS

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O Amazon Simple Queue Service (Amazon SQS) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.

  • O AWS Lambda é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

Outras ferramentas

  • O AWS Cloud Development Kit (AWS CDK) é a principal ferramenta para interagir com seu aplicativo do AWS CDK. Ele executa seu aplicativo, interroga o modelo de aplicativo que você definiu e produz e implanta os modelos da AWS gerados pelo CDK da CloudFormation AWS.

  • A ‭AWS Command Line Interface (AWS CLI)‭ é uma ferramenta de código aberto que permite que você interaja com serviços da AWS usando comandos no shell da linha de comando.

  • Python é uma linguagem de programação interpretada de alto nível e de uso geral.

Código

O código desse padrão está disponível no repositório GitHub Chaining S3 to SNS to SQS to Lambda.

Épicos

TarefaDescriçãoHabilidades necessárias

Clonar o repositório.

Clone o repositório e navegue até a pasta python/s3-sns-sqs-lambda-chain.

Desenvolvedor de aplicativos

Configurar um ambiente virtual.

  1. No AWS CDK, execute o comando python3 -m venv .venv.

  2. Execute o comando source .venv/bin/activate no MacOS/Linux ou .venv\Scripts\activate.bat no Windows.

Desenvolvedor de aplicativos

Instale as dependências.

Execute o comando pip install -r requirements.txt.

Desenvolvedor de aplicativos
TarefaDescriçãoHabilidades necessárias

Execute testes de unidade.

  1. Execute o comando pip install -r requirements-dev.txt.

  2. (Opcional) Execute o cdk synth --no-staging > template.yml comando para gerar a CloudFormation pilha. Importante: você pode inspecionar a pilha, mas evite gerar os recursos e artefatos simulados.

  3. Execute o comando pytest para executar todos os testes de unidade.

  4. (Opcional) Execute o comando pytest tests/unit/<test_filename> para executar testes para um arquivo específico.

Desenvolvedor de aplicativos, engenheiro de testes
TarefaDescriçãoHabilidades necessárias

Configure o ambiente de bootstrap.

Siga as instruções em Bootstrapping na documentação da AWS para inicializar o ambiente para implantação do AWS CDK em cada região da AWS em que a CloudFormation pilha será implantada.

Observação: essa etapa exige que você tenha credenciais com acesso programático.

Desenvolvedor de aplicativos, DevOps engenheiro, engenheiro de dados

Implante a CloudFormation pilha.

Execute o comando cdk deploy para criar e implantar a pilha na conta da AWS.

Desenvolvedor de aplicativos, DevOps engenheiro, AWS DevOps
TarefaDescriçãoHabilidades necessárias

Exclua a CloudFormation pilha e remova os recursos associados.

Para excluir a CloudFormation pilha que foi criada e remover todos os recursos associados, execute o comando run cdk destroy.

Desenvolvedor de aplicativos