Concatenate AWS i servizi 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à.

Concatenate AWS i servizi utilizzando un approccio serverless

Creato da Aniket Braganza () AWS

Ambiente: produzione

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

AWSservizi: Amazon S3; Amazon; SNS AmazonSQS; Lambda AWS

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), Amazon Simple Queue Service (SNSAmazon) e Lambda. SQS AWS L'esempio di file caricato è a scopo dimostrativo. È possibile utilizzare un approccio serverless per completare altre attività concatenando la combinazione di AWS servizi necessari per raggiungere gli 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 AWS i servizi tramite un approccio serverless. Ad esempio, puoi utilizzare un approccio che combina Lambda con Amazon S3 anziché Amazon e AmazonSNS. 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

  • AWSCDK2.x

  • Python 3.9

Architettura

Il diagramma seguente illustra come i AWS servizi 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 concatenati. AWS

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'SNSargomento viene inserito in una SQS coda, che viene sottoscritta e riceve notifiche relative a quell'argomento.

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

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

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

Stack tecnologico

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWSLambda

Strumenti

AWSservizi

  • 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 (AmazonSNS) 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 (AmazonSQS) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.

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

Altri strumenti

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

  • AWSCommand Line Interface (AWSCLI) è uno strumento open source che consente di interagire con i AWS servizi tramite comandi nella shell della 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 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. In AWSCDK, 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 Bootstrap nella AWS documentazione per avviare l'ambiente per la AWS CDK distribuzione in ogni AWS regione 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, ingegnere, DevOps 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