Projets sur AWS

Création d'une application Web moderne

Déployer une application Web, se connecter à une base de données et analyser le comportement des utilisateurs

Module 3 : Stocker les informations de Mysfit

Dans ce module, vous allez configurer Amazon DynamoDB pour stocker les informations de Mysfit dans une table centrale de base de données.

Présentation

Vous disposez désormais d'un service déployé et d'un pipeline d'IC/DC fonctionnel pour apporter automatiquement des modifications à ce service chaque fois que vous mettez à jour votre référentiel de code. Par conséquent, vous pouvez rapidement faire passer les nouvelles fonctions de l'application de la conception à la mise à la disposition de vos clients sur Mythical Mysfits. Vous pouvez aller plus loin en ajoutant à ce gain d'agilité une autre fonction fondamentale à l'architecture du site Web Mythical Mysfits : un niveau de données.

Vous allez créer, dans ce module, une table dans Amazon DynamoDB qui est un service de base de données NoSQL géré et évolutif sur AWS avec des performances extrêmement rapides. Plutôt que de stocker tous les Mysfits dans un fichier JSON statique, nous les conserverons dans une base de données afin de rendre les futurs sites Web plus extensibles et plus évolutifs.

Diagramme d'architecture

diagramme en arc de fargate et de dynamodb

 Temps nécessaire

20 minutes

 Services utilisés

Instructions de mise en œuvre

  • A : créer une table DynamoDB.

    Pour ajouter une table DynamoDB à l'architecture, nous avons inclus un autre fichier d'entrée JSON CLI qui définit une table appelée MysfitsTable. Cette table aura un index primaire défini par un attribut de clé de hachage appelé MysfitId ainsi que deux autres index secondaires. Le premier index secondaire aura la clé de hachage Espèces et une clé de gamme MysfitId. Le deuxième index secondaire aura la clé de hachage Alignement et une clé de gamme MysfitId.

    Ces deux index secondaires nous permettront d'exécuter des requêtes sur la table pour récupérer tous les mysfits qui correspondent à une Espèce ou un Alignement donné, le but étant d'activer la fonctionnalité de filtrage qui ne fonctionne pas encore sur le site Web, comme vous l'aurez peut-être remarqué. Ce fichier peut être consulté ici : ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json. Il n'est pas nécessaire de le modifier, car il est prêt à être exécuté. Visitez cette page pour en savoir plus sur les index dans DynamoDB et d'autres concepts de base. 

    Exécutez la commande suivante dans le terminal Cloud9 pour créer la table à l'aide d'AWS CLI :

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

    Après l'exécution de la commande, vous pouvez consulter les informations relatives à votre nouvelle table en exécutant la commande AWS CLI suivante dans le terminal :

    aws dynamodb describe-table --table-name MysfitsTable

    Vous verrez que le tableau est vide si nous exécutons la commande suivante pour récupérer tous les éléments qui y sont stockés :

    aws dynamodb scan --table-name MysfitsTable
    {
        "Count": 0,
        "Items": [],
        "ScannedCount": 0,
        "ConsumedCapacity": null
    }
    B : ajouter des éléments au tableau DynamoDB

    Un fichier JSON est également fourni. Il peut être utilisé pour insérer par lots un certain nombre d'éléments Mysfit dans ce tableau. Cela se fera grâce à l'API DynamoDB BatchWriteItem.

    Pour appeler cette API en utilisant le fichier JSON fourni, exécutez la commande de terminal suivante (la réponse du service devrait signaler qu'aucun élément n'a été non traité) :

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

    Si vous exécutez à présent la même commande pour analyser tout le contenu de la table, vous constaterez que des éléments ont été chargés dans la table :

    aws dynamodb scan --table-name MysfitsTable
  • A : copier le code du service Flask mis à jour

    Les données étant désormais incluses dans le tableau, modifions notre code d'application pour lire à partir de ce tableau au lieu de renvoyer le fichier JSON statique utilisé dans le Module 2. Nous avons inclus un nouvel ensemble de fichiers Python pour votre microservice Flask. Cependant, au lieu de lire le fichier JSON statique, envoyez à présent une demande à DynamoDB.

    La demande est formée à l'aide du kit SDK Python AWS appelé boto3. Ce kit SDK est un moyen puissant, mais simple d'interagir avec les services AWS via le code Python. Il vous permet d'utiliser des définitions et des fonctions de client de service qui présentent une grande symétrie avec les API AWS et les commandes CLI que vous avez déjà exécutées dans le cadre de cet atelier. La traduction de ces commandes en code Python fonctionnel se fait aisément avec boto3.

    Exécutez la commande suivante pour copier les nouveaux fichiers dans votre répertoire de référentiel CodeCommit :

    cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
    B : copier le code du service Flask mis à jour

    Nous devons à présent vérifier ces changements de code dans CodeCommit en utilisant le client de ligne de commande git.

    Exécutez les commandes suivantes pour vérifier les nouveaux changements de code et le démarrage de votre pipeline IC/DC :

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

    En seulement 5 à 10 minutes, vos changements de code passeront de votre pipeline IC/DC complet dans CodePipeline jusqu'à votre service Flask déployé vers AWS Fargate sur Amazon ECS.

    N'hésitez pas à explorer la console AWS CodePipeline pour voir la progression des changements dans votre pipeline.

  • Enfin, nous devons publier une nouvelle page index.html dans notre compartiment S3 afin que la nouvelle fonction API utilisant des chaînes de requête pour filtrer les réponses soit utilisée. Le nouvel index se trouve à l'adresse suivante : ~/environment/aws-modern-application-workshop/module-3/web/index.html.

    Ouvrez ce fichier dans votre IDE Cloud9 et remplacez la chaîne indiquant « REPLACE_ME » comme dans le module 2, par le point de terminaison approprié du NLB. Tâchez de ne pas inclure le chemin /mysfits.

    Référez-vous si nécessaire au fichier que vous avez déjà édité dans le répertoire /module-2/. Après le remplacement du point de terminaison vers votre NLB, téléchargez le nouveau fichier index.html en exécutant la commande suivante (en procédant au remplacement avec le nom du compartiment que vous avez créé dans le module 1 :

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

    Retournez sur votre site Web Mythical Mysfits pour observer le chargement de la nouvelle population de Mysfits à partir de votre tableau DynamoDB et voir comment fonctionne la fonction de filtrage !

    Le module 3 se termine ici.

Module suivant : configurer l'inscription des utilisateurs