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
Un account AWS attivo
Accesso programmatico all'account AWS. Per ulteriori informazioni, consultare:
Prerequisiti nella documentazione di AWS Cloud Development Kit (AWS CDK)
Prerequisiti nella documentazione AWS Command Line Interface (AWS CLI)
CLI AWS, installata e configurata
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.](images/pattern-img/8b298cfc-509a-4502-97b2-f1af09914b99/images/f3ca9202-96eb-40cf-85cd-4bb569fcd083.png)
Il diagramma mostra il flusso di lavoro seguente:
Un utente carica un file nel bucket S3.
Il caricamento avvia un evento S3 che pubblica un messaggio su un argomento SNS. Il messaggio contiene i dettagli dell'evento S3.
Il messaggio pubblicato sull'argomento SNS viene inserito in una coda SQS, che è sottoscritta e riceve notifiche relative a quell'argomento.
Una funzione Lambda esegue il polling della coda SQS (come origine degli eventi) e attende l'elaborazione dei messaggi.
Quando la funzione Lambda riceve messaggi dalla coda SQS, li elabora e conferma la ricezione di tali messaggi.
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à | Descrizione | Competenze richieste |
---|---|---|
Clonare il repository. | Clona il repository | Sviluppatore di app |
Configura un ambiente virtuale. |
| Sviluppatore di app |
Installare le dipendenze. | Esegui il comando | Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esegui test unitari. |
| Sviluppatore di app, tecnico di test |
Attività | Descrizione | Competenze 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 | Sviluppatore di app, DevOps ingegnere, AWS DevOps |
Attività | Descrizione | Competenze 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 | Sviluppatore di app |