Esegui carichi di lavoro basati su messaggi su larga scala utilizzando AWS Fargate - 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à.

Esegui carichi di lavoro basati su messaggi su larga scala utilizzando AWS Fargate

Creato da Stan Zubarev (AWS)

Ambiente: PoC o pilota

Tecnologie: contenitori e microservizi; Messaggistica e comunicazioni; Database

Servizi AWS: AWS Fargate; Amazon SQS; Amazon DynamoDB

Riepilogo

Questo modello mostra come eseguire carichi di lavoro basati su messaggi su larga scala nel cloud AWS utilizzando contenitori e AWS Fargate.

L'uso di contenitori per elaborare i dati può essere utile quando la quantità di dati elaborati da un'applicazione supera i limiti dei servizi di elaborazione serverless basati su funzioni. Ad esempio, se un'applicazione richiede una capacità di calcolo o un tempo di elaborazione superiore a quello offerto da AWS Lambda, l'utilizzo di Fargate può migliorare le prestazioni.

La seguente configurazione di esempio utilizza AWS Cloud Development Kit (AWS CDK) TypeScript per configurare e distribuire le seguenti risorse nel cloud AWS:

  • Un servizio Fargate

  • Una coda Amazon Simple Queue Service (Amazon SQS)

  • Una tabella Amazon DynamoDB.

  • Una CloudWatch dashboard Amazon

Il servizio Fargate riceve ed elabora i messaggi dalla coda Amazon SQS, quindi li archivia nella tabella Amazon DynamoDB. Puoi monitorare quanti messaggi Amazon SQS vengono elaborati e quanti elementi DynamoDB vengono creati da Fargate utilizzando la dashboard. CloudWatch

Nota: puoi anche utilizzare il codice di esempio di questo pattern per creare carichi di lavoro di elaborazione dati più complessi in architetture serverless basate sugli eventi. Per ulteriori informazioni, consulta Esegui carichi di lavoro pianificati e basati su eventi su larga scala con AWS Fargate.

Prerequisiti e limitazioni

Prerequisiti

  • Un account AWS attivo

  • La versione più recente di AWS Command Line Interface (AWS CLI), installata e configurata sul computer locale

  • Git, installato e configurato sul tuo computer locale

  • Il CDK AWS, installato e configurato sul tuo computer locale

  • Vai, installato e configurato sul tuo computer locale

  • Docker, installato e configurato sul tuo computer locale

Architettura

Stack tecnologico Target

  • Amazon SQS

  • AWS Fargate

  • Amazon DynamoDB

Architettura Target

Il diagramma seguente mostra un esempio di flusso di lavoro per l'esecuzione di carichi di lavoro basati su messaggi su larga scala nel cloud AWS utilizzando Fargate:

Esempio di flusso di lavoro per carichi di lavoro basati sui messaggi

Il diagramma mostra il flusso di lavoro seguente:

  1. Il servizio Fargate utilizza il polling lungo di Amazon SQS per ricevere messaggi da una coda Amazon SQS.

  2. Il servizio Fargate elabora quindi i messaggi Amazon SQS e li archivia in una tabella DynamoDB.

Automazione e scalabilità

Per automatizzare il ridimensionamento del numero di attività Fargate, puoi configurare Amazon Elastic Container Service (Amazon ECS) Service Auto Scaling. È consigliabile configurare la politica di scalabilità in base al numero di messaggi visibili nella coda Amazon SQS dell'applicazione.

Per ulteriori informazioni, consulta Dimensionamento basato su AMAZON SQS nella Guida per l'utente di Dimensionamento automatico Amazon EC2.

Strumenti

Servizi AWS

  • AWS Fargate ti aiuta a eseguire container senza dover gestire server o istanze Amazon Elastic Compute Cloud (Amazon EC2). Viene utilizzato insieme ad Amazon Elastic Container Service (Amazon ECS).

  • 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.

  • Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.

  • Amazon ti CloudWatch aiuta a monitorare i parametri delle tue risorse AWS e delle applicazioni che esegui su AWS in tempo reale.

Codice

Il codice per questo pattern è disponibile nel repository GitHub sqs-fargate-ddb-cdk-go.

Epiche

AttivitàDescrizioneCompetenze richieste

Clona il GitHub repository.

Clona il repository GitHub sqs-fargate-ddb-cdk-go sul tuo computer locale eseguendo il seguente comando:

git clone https://github.com/aws-samples/sqs-fargate-ddb-cdk-go.git

Sviluppatore di app

Verifica che l'AWS CLI sia configurata sull'account AWS corretto e che il CDK AWS disponga delle autorizzazioni richieste.

Per verificare se le impostazioni di configurazione dell'interfaccia a riga di comando AWS sono corrette, puoi eseguire il seguente comando ls di Amazon Simple Storage Service (Amazon S3):

aws s3 ls

Questa procedura richiede inoltre che l'AWS CDK disponga delle autorizzazioni per il provisioning dell'infrastruttura all'interno del tuo account AWS. Per concedere le autorizzazioni richieste, devi creare un profilo AWS denominato nella CLI di AWS ed esportarlo come variabile di ambiente AWS_PROFILE.

Nota: se non hai mai usato la CDK AWS nel tuo account AWS in precedenza, devi prima effettuare il provisioning delle risorse AWS CDK richieste. Per ulteriori informazioni, consulta Bootstrapping nella AWS CDK v2 Developer Guide.

Sviluppatore di app

Distribuisci lo stack CDK AWS sul tuo account AWS.

  1. Crea un'immagine del contenitore eseguendo il seguente comando AWS CLI:

    docker build -t go-fargate .

  2. Apri la directory AWS CDK eseguendo il seguente comando:

    cd cdk

  3. Installa i moduli npm richiesti eseguendo il seguente comando:

    npm i

  4. Distribuisci il pattern CDK AWS sul tuo account AWS eseguendo il seguente comando:

    cdk deploy --profile ${AWS_PROFILE}

Sviluppatore di app
AttivitàDescrizioneCompetenze richieste

Invia un messaggio di prova alla coda Amazon SQS.

Per istruzioni, consulta Invio di messaggi a una coda (console) nella Amazon SQS Developer Guide.

Prova l'esempio di messaggio Amazon SQS

{ "message": "hello, Fargate" }
Sviluppatore di app

Verificate che il messaggio di prova compaia nei registri del CloudWatch servizio Fargate.

Segui le istruzioni in Visualizzazione dei CloudWatch log nella Amazon ECS Developer Guide. Assicurati di esaminare i log per il gruppo di go-fargate-servicelog nel cluster ECS. go-service-cluster

Sviluppatore di app

Verificare che il messaggio di test appaia nella tabella DynamoDB.

  1. Aprire la console DynamoDB.

  2. Nel riquadro di navigazione a sinistra, selezionare Tables (Tabelle). Quindi, seleziona la seguente tabella dall'elenco:. sqs-fargate-ddb-table

  3. Scegli Explore table items (Esplora elementi della tabella).

  4. Verifica che il messaggio di prova compaia nell'elenco Articoli restituiti.

Sviluppatore di app

Verifica che il servizio Fargate stia inviando messaggi a CloudWatch Logs.

  1. Apri la CloudWatch console.

  2. Nel riquadro di navigazione a sinistra, scegli Dashboard.

  3. Nell'elenco Dashboard personalizzati, seleziona il pannello di controllo denominato. go-service-dashboard

  4. Verifica che il messaggio di prova compaia nei log.

Nota: il CDK AWS crea automaticamente la CloudWatch dashboard nel tuo account AWS.

Sviluppatore di app
AttivitàDescrizioneCompetenze richieste

Elimina lo stack CDK AWS.

  1. Apri la directory AWS CDK nella CLI di AWS eseguendo il seguente comando:

    cd cdk

  2. Elimina lo stack CDK AWS eseguendo il seguente comando:

    cdk destroy --profile ${AWS_PROFILE}

Sviluppatore di app

Verifica che lo stack CDK AWS sia eliminato.

Per assicurarti che lo stack sia stato eliminato, esegui il seguente comando:

aws cloudformation list-stacks --query \ "StackSummaries[?contains(StackName,'SqsFargate')].StackStatus" \ --profile ${AWS_PROFILE}

Il StackStatus valore restituito nell'output del comando è DELETE_COMPLETE se lo stack viene eliminato.

Per ulteriori informazioni, consulta Descrivere ed elencare i tuoi stack nella AWS CloudFormation User Guide.

Sviluppatore di app

Risorse correlate