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
Uma conta AWS ativa
Acesso programático à conta da AWS. Para obter mais informações, consulte:
Pré-requisitos na documentação do AWS Cloud Development Kit (AWS CDK)
Pré-requisitos na documentação da AWS Command Line Interface (AWS CLI)
AWS CDK, instalado
AWS CLI, instalada e configurada
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.](images/pattern-img/8b298cfc-509a-4502-97b2-f1af09914b99/images/f3ca9202-96eb-40cf-85cd-4bb569fcd083.png)
O diagrama mostra o seguinte fluxo de trabalho:
Um usuário faz upload de um arquivo para seu bucket do S3.
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.
A mensagem publicada no tópico do SNS é inserida em uma fila do SQS, que está inscrita e recebe notificações desse tópico.
Uma função do Lambda pesquisa a fila do SQS (como fonte de eventos) e espera que as mensagens sejam processadas.
Quando a função do Lambda recebe mensagens da fila do SQS, ela as processa e confirma o recebimento dessas mensagens.
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
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Clonar o repositório. | Clone o repositório | Desenvolvedor de aplicativos |
Configurar um ambiente virtual. |
| Desenvolvedor de aplicativos |
Instale as dependências. | Execute o comando | Desenvolvedor de aplicativos |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Execute testes de unidade. |
| Desenvolvedor de aplicativos, engenheiro de testes |
Tarefa | Descrição | Habilidades 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 | Desenvolvedor de aplicativos, DevOps engenheiro, AWS DevOps |
Tarefa | Descrição | Habilidades 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 | Desenvolvedor de aplicativos |