Git Product home page Git Product logo

aws-summit-2022-demo's Introduction

AWS Summit 2022 - Modern Application Demo

L'objectif de ce projet est de vous montrer comment vous pouvez simplement et rapidement démarrer le développement d'une application moderne sur AWS en utilisant AWS Amplify & AWS Serverless Application Model.

Prérequis

Pour pouvoir suivre ce guide, vous devez disposer de :

Création du frontend avec React

  • Commencer par créer votre application web React avec la commande suivante :
npx create-react-app demo-amplify
  • Démarrez votre application en local :
npm start
git remote add origin <repository>
git branch -M main
git push -u origin main
  • Dans la console de management AWS, accédez au service AWS Amplify puis créez une nouvelle application avec Héberger une application Web.

  • Sélectionnez Github comme référentiel de code, puis sélectionnez le repository et enfin la branche.

  • Confirmer les paramètres de construction (build).

  • Passez en revue tous vos paramètres pour vous assurer que tout est correctement configuré. Choisissez Enregistrer et déployer pour déployer votre application Web.

La construction peut prendre généralement 1 à 2 minutes mais peut varier en fonction de la taille de l'application.

Création du backend avec AWS Serverless Application Model (AWS SAM)

  • Dans votre répertoire de projet, créez un sous-répertoire. Vous pouvez l'appeler backend ou autrement puis initialiser votre projet AWS SAM avec la commande suivante :
sam init
  • Vous entrez alors dans le mode intéractif, sélectionnez ensuite 1 - AWS Quick Start Templates.

  • Puis 1 - Hello World Example.

  • Ensuite, sélectionnez le langage, dans notre cas 8 - node.js14.x.

  • Puis 1 - Hello World Example.

  • Ensuite, lancez le packaging de votre application AWS SAM avec la commande suivante :

sam build
  • Une fois le packaging de votre application terminé, vous pouvez lancer le déploiement de votre application avec la commande suivante :
sam deploy —guided

Notez que lorsqu'il s'agit d'un premier déploiement, vous devez utiliser la commande sam deploy --guided (déploiement guidé) pour renseigner les différents paramètres de votre application (le nom, la région AWS, etc...). Vous pouvez choisir de sauvegarder ces paramètres dans un fichier de configuration. Lors des déploiements suivants, vous pourrez utiliser la commande sam deploy (déploiement non guidé) et le fichier de configuration sera automatiquement utilisé pour déterminer les paramètres.

  • Une fois ce premier déploiement effectué, vous pourrez retrouver l'URL de votre API Gateway dans les logs de votre console, plus précisement dans la partie Outputs des logs Cloudformation.

L'intégration entre le frontend et le backend

Pour cette partie, nous allons connecter notre frontend avec notre backend. Nous allons faire en sorte que le message renvoyé par notre fonction AWS Lambda via Amazon API Gateway s'affiche directement au niveau de notre application web React au chargement de la page.

Modifications de l'application web React

Nous allons commencer par installer le module Node.js axios qui va nous permettre de faire un appel GET depuis notre application web React vers notre API Gateway.

Pour plus d'informations concernant le fonctionnement de axios, vous pouvez consulter la documentation ici : https://axios-http.com/docs/intro

  • Commencez par installer le module axios avec la commande suivante :
npm install axios
  • Modifiez le code React de votre page App.js pour y ajouter un appel GET vers votre API Gateway avec axios.

Si besoin, inspirez vous de la démo pour vos modifications -> React - App.js

Modifications de l'API Gateway

Pour permettre à notre application web React d'appeler notre API Gateway, nous allons devoir activer le Cross-origin resource sharing (CORS).

Le « Cross-origin resource sharing » (CORS) ou « partage des ressources entre origines multiples » (en français, moins usité) est un mécanisme qui consiste à ajouter des en-têtes HTTP afin de permettre à un agent utilisateur d'accéder à des ressources d'un serveur situé sur une autre origine que le site courant. Un agent utilisateur réalise une requête HTTP multi-origine (cross-origin) lorsqu'il demande une ressource provenant d'un domaine, d'un protocole ou d'un port différent de ceux utilisés pour la page courante.

  • Dans la console de management AWS, commencez par accéder au service API Gateway puis sélectionnez votre API Gateway.

  • Dans le menu Actions de votre API, sélectionner Activer le CORS.

Suite à cette activation, vous retrouverez la checklist des mises à jour nécessaires pour finaliser la configuration ainsi que la création automatique de la méthode OPTIONS pour votre ressource.

  • Dans la méthode OPTIONS, sélectionnez le type d'intégration Mock.

  • Puis dans la Réponse de méthode, ajoutez une réponse avec un code HTTP 200.

  • Ensuite dans la Réponse de méthode, ajoutez l'entête Access-Control-Allow-Origin.

  • Puis retournez dans la méthode OPTIONS pour sélectionner la Réponse d’intégration correspondant à la Réponse de méthode créée précedemment.

  • Dans cette Réponse d'intégration, ajoutez l'entête Access-Control-Allow-Origin avec comme valeur le nom de domaine de votre application web React.

  • Au niveau de la fonction AWS Lambda, modifiez le code pour rajouter dans la réponse l’entête Access-Control-Allow-Origin avec comme valeur le nom de domaine de votre application web React.

Si besoin, inspirez vous de la démo pour vos modifications -> nodejs - app.js

  • Une fois toutes les modifications effectuées, redéployez le backend avec la commande suivante :
sam build && sam deploy
  • Publiez le code de votre projet sur votre repository Github afin de déclencher un déploiement automatique par AWS Amplify.

  • Une fois le déploiement par AWS Amplify terminé, vous pouvez accéder à votre application pour voir le message renvoyé par votre fonction AWS Lambda via votre API Gateway.

Pour aller plus loin

Si vous souhaitez aller plus loin, vous trouverez ci-dessous quelques propositions avec la documentation associée. A vous de jouer !

Documentation

aws-summit-2022-demo's People

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.