Concatena i servizi AWS utilizzando un approccio serverless - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Concatena i servizi AWS utilizzando un approccio serverless

Creato da Aniket Braganza (AWS)

Ambiente: produzione

Tecnologie: serverless;; CloudNative; Modernizzazione DevelopmentAndTesting DevOps; Infrastruttura

Servizi AWS: Amazon S3; Amazon SNS; Amazon SQS; AWS Lambda

Riepilogo

Questo modello dimostra un approccio scalabile e serverless per l'elaborazione di un file caricato concatenando Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon SNS), Amazon Simple Queue Service (Amazon SQS) e AWS Lambda. L'esempio di file caricato è a scopo dimostrativo. Puoi utilizzare un approccio serverless per completare altre attività concatenando la combinazione di servizi AWS necessari per raggiungere i tuoi obiettivi aziendali. L'approccio serverless utilizza un flusso di lavoro asincrono che si basa su notifiche basate sugli eventi, archiviazione resiliente e elaborazione Function as a Service (FaaS) per elaborare le richieste. È possibile utilizzare l'approccio serverless per scalare in modo da soddisfare la domanda riducendo al minimo i costi.

Nota: esistono diverse opzioni per concatenare i servizi AWS tramite un approccio serverless. Ad esempio, puoi utilizzare un approccio che combina Lambda con Amazon S3 anziché Amazon SNS e Amazon SQS. Tuttavia, questo modello utilizza Amazon SNS e Amazon SQS perché questo approccio consente di aggiungere più punti di integrazione al processo di invocazione Lambda durante una notifica di evento e di estendere l'implementazione per includere più listener in un'orchestrazione serverless, riducendo al minimo il sovraccarico di elaborazione.

Prerequisiti e limitazioni

Prerequisiti

Versioni del prodotto

  • CDK AWS 2.x

  • Python 3.9

Architettura

Il diagramma seguente illustra come i servizi AWS concatenati possono consentire a un utente di caricare un file in un bucket S3 per l'elaborazione.

Flusso di lavoro per caricare un file in un bucket S3 utilizzando servizi AWS concatenati.

Il diagramma mostra il flusso di lavoro seguente:

  1. Un utente carica un file nel bucket S3.

  2. Il caricamento avvia un evento S3 che pubblica un messaggio su un argomento SNS. Il messaggio contiene i dettagli dell'evento S3.

  3. Il messaggio pubblicato sull'argomento SNS viene inserito in una coda SQS, che è sottoscritta e riceve notifiche relative a quell'argomento.

  4. Una funzione Lambda esegue il polling della coda SQS (come origine degli eventi) e attende l'elaborazione dei messaggi.

  5. Quando la funzione Lambda riceve messaggi dalla coda SQS, li elabora e conferma la ricezione di tali messaggi.

  6. Se un messaggio non viene elaborato da Lambda, quel messaggio viene restituito alla coda SQS e alla fine trasferito in una coda SQS di lettere morte.

Stack tecnologico

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

Strumenti

Servizi AWS

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

  • Amazon Simple Notification Service (Amazon SNS) ti aiuta a coordinare e gestire lo scambio di messaggi tra editori e clienti, inclusi server Web e indirizzi e-mail.

  • Amazon Simple Queue Service (Amazon SQS) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.

  • AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.

Altri strumenti

  • AWS Cloud Development Kit (AWS CDK) è lo strumento principale per interagire con la tua app AWS CDK. Esegue la tua app, interroga il modello applicativo che hai definito e produce e distribuisce i CloudFormation modelli AWS generati dal CDK AWS.

  • AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.

  • Python è un linguaggio di programmazione generico interpretato di alto livello.

Codice

Il codice per questo pattern è disponibile nel repository GitHub Chaining S3 to SNS to SQS to Lambda.

Epiche

AttivitàDescrizioneCompetenze richieste

Clonare il repository.

Clona il repository e accedi alla python/s3-sns-sqs-lambda-chain cartella.

Sviluppatore di app

Configura un ambiente virtuale.

  1. Nel CDK AWS, esegui il python3 -m venv .venv comando.

  2. Esegui il source .venv/bin/activate comando su macOS/Linux o .venv\Scripts\activate.bat su Windows.

Sviluppatore di app

Installare le dipendenze.

Esegui il comando pip install -r requirements.txt.

Sviluppatore di app
AttivitàDescrizioneCompetenze richieste

Esegui test unitari.

  1. Esegui il comando pip install -r requirements-dev.txt.

  2. (Facoltativo) Eseguite il cdk synth --no-staging > template.yml comando per generare lo CloudFormation stack. Importante: potete ispezionare lo stack, ma evitate di generare risorse e artefatti predefiniti.

  3. Esegui il pytest comando per eseguire tutti i test unitari.

  4. (Facoltativo) Eseguite il pytest tests/unit/<test_filename> comando per eseguire i test per un file specifico.

Sviluppatore di app, tecnico di test
AttivitàDescrizioneCompetenze richieste

Configura l'ambiente bootstrap.

Segui le istruzioni in Bootstrapping nella documentazione AWS per avviare l'ambiente per la distribuzione di AWS CDK in ogni regione AWS in cui verrà distribuito lo CloudFormation stack.

Nota: questo passaggio richiede credenziali con accesso programmatico.

Sviluppatore di app, DevOps ingegnere, ingegnere dei dati

Implementa lo CloudFormation stack.

Esegui il cdk deploy comando per creare e distribuire lo stack nell'account AWS.

Sviluppatore di app, DevOps ingegnere, AWS DevOps
AttivitàDescrizioneCompetenze richieste

Elimina lo CloudFormation stack e rimuovi le risorse associate.

Per eliminare lo CloudFormation stack creato e rimuovere tutte le risorse associate, esegui il comando run cdk destroy.

Sviluppatore di app