Progetti in AWS

Crea un'applicazione Web moderna

Distribuisci un'applicazione Web, collegala a un database e analizza le attività degli utenti

Modulo 3: Archiviazione delle informazioni mysfit

In questo modulo configurerai Amazon DynamoDB per archiviare le informazioni mysfit in una tabella di database centrale.

Panoramica

Ora che hai un servizio distribuito e una pipeline CI/CD funzionante per fornire automaticamente modifiche a quel servizio ogni volta che aggiorni il tuo repository di codice, puoi spostare rapidamente le nuove funzionalità dell'applicazione dalla teoria alla pratica per i tuoi clienti Mythical Mysfits. Con questa maggiore agilità, aggiungiamo un'altra funzionalità di base all'architettura del sito Web Mythical Mysfits, un livello di dati.

In questo modulo potrai creare una tabella in Amazon DynamoDB, un servizio di database NoSQL gestito e scalabile in AWS con prestazioni ultra rapide. Invece di archiviare tutti i Mysfit in un file JSON statico, li memorizzeremo in un database per rendere il sito Web più estensibile e scalabile.

Diagramma dell'architettura

fargate e diagramma dell’architettura dynamodb

 Tempo per il completamento

20 minuti

 Servizi utilizzati

Istruzioni per l'implementazione

  • A: Creazione di una tabella DynamoDB

    Per aggiungere una tabella DynamoDB all’architettura, abbiamo incluso un altro file di input della CLI JSON che definisce una tabella denominata MysfitsTable. Questa tabella avrà un indice primario definito da un attributo chiave hash denominato MysfitId e due altri indici secondari. Il primo indice secondario avrà la chiave hash Species e una chiave di intervallo MysfitId mentre il secondo indice secondario avrà la chiave hash Alignment e una chiave di intervallo MysfitId.

    Questi due indici secondari ci consentiranno di eseguire le query rispetto alla tabella in modo da richiamare tutti i mysfit che corrispondono a una determinata chiave Species o Alignment per attivare la funzionalità di filtro che ancora non funziona sul sito Web. Tale file si trova in ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json. Non è necessario apportare alcuna modifica a questo file, è pronto per l’esecuzione. Per maggiori informazioni sugli indici in DynamoDB e altri concetti di base, visita questa pagina. 

    Per creare la tabella mediante la CLI di AWS, emetti il seguente comando dal terminale Cloud9:

    aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json

    Una volta eseguito il comando, potrai visualizzare i dettagli della tabella appena creata emettendo il seguente comando della CLI di AWS dal terminale:

    aws dynamodb describe-table --table-name MysfitsTable

    Se viene emesso il seguente comando per richiamare tutti gli elementi archiviati nella tabella, vedrai che la tabella è vuota:

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    B: Aggiunta di elementi alla tabella DynamoDB

    Viene fornito un file JSON che può essere utilizzato per inserire in batch un certo numero di elementi Mysfit nella tabella. Ciò sarà possibile tramite l’API DynamoDB BatchWriteItem.

    Per richiamare questa API utilizzando il file JSON fornito, emettere il seguente comando del terminale (la risposta dal servizio dovrebbe riportare che non sono presenti elementi che non sono stati elaborati):

    aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json

    A questo punto, se si esegue lo stesso comando per eseguire la scansione di tutto il contenuto della tabella, vedrai che gli elementi sono stati caricati:

    aws dynamodb scan --table-name MysfitsTable
  • A: Copia del codice del servizio Flask aggiornato

    Adesso che tutti i dati sono stati inseriti nella tabella, modifichiamo il codice dell’applicazione in modo da leggere da questa tabella invece di restituire il file JSON statico utilizzato nel Modulo 2. Abbiamo incluso una nuova serie di file Python per il tuo microservizio Flask ma adesso, invece di leggere il file JSON statico, effettueremo una richiesta a DynamoDB.

    La richiesta è formata mediante l’SDK di AWS Python denominato boto3. Questo SDK è un metodo semplice e potente per interagire con i servizi AWS tramite il codice Python. Esso consente di utilizzare le definizioni e le funzioni del client del servizio che hanno una simmetria elevata con le API e i comandi della CLI di AWS già eseguiti come parte di questo workshop. La traduzione di questi comandi in un codice Python funzionante è molto semplice se si utilizza boto3.

    Per copiare i nuovi file nella directory del repository CodeCommit, emetti il seguente comando dal terminale:

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    B: Copia del codice del servizio Flask aggiornato

    A questo punto, è necessario applicare queste modifiche al codice a CodeCommit utilizzando il client della riga comandi git.

    Emettere i seguenti comandi per applicare le nuove modifiche al codice e avviare la pipeline CI/CD:

    cd ~/environment/MythicalMysfitsService-Repository
    git add .
    git commit -m "Add new integration to DynamoDB."
    git push

    Ora, in soli 5-10 minuti vedrai le tue modifiche al codice passare attraverso l'intera pipeline CI/CD in CodePipeline e dal tuo servizio Flask distribuito a AWS Fargate su Amazon ECS.

    Esplora la console di AWS CodePipeline per visualizzare l’avanzamento delle tue modifiche attraverso la pipeline.

  • Infine, dovremo pubblicare una nuova pagina index.html nel nostro bucket S3 in modo che venga utilizzata la nuova funzionalità API che utilizza le stringhe di query per filtrare le risposte. Il nuovo file index.html si trova in ~/environment/aws-modern-application-workshop/module-3/web/index.html.

    Apri questo file nell’IDE di Cloud9 e sostituisci la stringa “REPLACE_ME” come già fatto nel Modulo 2, con l’endpoint NLB appropriato. Ricordati di non includere il percorso /mysfits.

    Se necessario, fai riferimento al file già modificato nella directory /module-2/. Dopo aver sostituito l'endpoint in modo che punti al tuo NLB, carica il nuovo file index.html emettendo il seguente comando (sostituendo il nome del bucket creato nel Modulo 1:

    aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/

    Visita nuovamente il tuo sito Web Mythical Mysfits per visualizzare i nuovi dati provenienti dal caricamento Mysfits dalla tabella DynamoDB e verificare come funziona la nuova opzione di filtro!

    Hai concluso il Modulo 3.

Quindi, configura la registrazione dell’utente.