Dans ce module, vous utiliserez AWS Lambda et Amazon DynamoDB pour créer un processus backend qui traitera les requêtes destinées à votre application Web. L’application de navigateur que vous avez déployée dans le premier module permet aux utilisateurs de demander qu’une licorne soit envoyée à un emplacement de leur choix. Afin de traiter ces requêtes, le code JavaScript exécuté dans le navigateur devra invoquer un service exécuté dans le cloud.

Serverless_Web_App_LP_assets-04

Vous implémenterez une fonction Lambda qui sera invoquée chaque fois qu’un utilisateur demande une licorne. Cette fonction sélectionnera une licorne à partir de la flotte, enregistrera la requête dans une table DynamoDB, puis répondra à l’application front-end en fournissant des informations sur la licorne envoyée.

La fonction est invoquée à partir du navigateur à l’aide d’Amazon API Gateway. Vous implémenterez cette connexion dans le prochain module. Dans le cadre du présent module, vous allez seulement tester votre fonction de façon isolée.

Durée de réalisation du module : 30 minutes

Services utilisés : AWS Lambda, Amazon DynamoDB


Suivez les instructions détaillées ci-dessous pour créer votre processus backend sans serveur. Cliquez sur chaque numéro d’étape pour développer la section correspondante.

  • Étape 1. Création d’une table Amazon DynamoDB

    Utilisez la console Amazon DynamoDB pour créer une nouvelle table DynamoDB. Appelez votre table Rides et donnez-lui une clé de partition appelée RideID de type chaîne. Le nom de la table et la clé de partition sont sensibles à la casse. Vérifiez que vous utilisez exactement les ID fournis. Utilisez les valeurs par défaut pour tous les autres paramètres.

    Une fois que vous avez créé cette table, notez l’ARN, que nous utiliserons dans l’étape suivante.


    1. Dans AWS Management Console, choisissez Services, puis sélectionnez DynamoDB sous Bases de données.

    2. Choisissez Créer une table.

    3. Saisissez Rides pour le Nom de la table. Ce champ est sensible à la casse.

    4. Saisissez RideIDpour la Clé de partition, puis sélectionnez Chaîne comme type de clé. Ce champ est sensible à la casse.

    5. Cochez la case Utiliser les paramètres par défaut, puis choisissez Créer.

    6. Faites défiler la page de la section Présentation de votre nouvelle table vers le bas et notez l’ARN. Cette valeur sera utilisée dans la section suivante.

  • Étape 2. Création d’un rôle IAM pour votre fonction Lambda

    Chaque fonction Lambda dispose d’un rôle IAM qui lui est associé. Ce rôle définit les autres services AWS avec lesquels la fonction est autorisée à interagir. Dans le cadre de cet atelier, vous devrez créer un rôle IAM qui octroie à votre fonction Lambda l’autorisation d’écrire dans les journaux d’Amazon CloudWatch et d’accéder à votre table DynamoDB pour y écrire des articles.

    Utilisez la console IAM pour créer un nouveau rôle. Appelez-la WildRydesLambda et sélectionnez AWS Lambda en tant que type de rôle. Vous devrez relier des stratégies qui accordent à votre fonction des autorisations d'écrire dans Amazon CloudWatch Logs et le droit d'ajouter des éléments à votre table DynamoDB.

    Associez la politique gérée appelée AWSLambdaBasicExecutionRole à ce rôle en accordant les autorisations CloudWatch Logs nécessaires. Créez également une politique incluse personnalisée pour votre rôle, qui autorise l'action ddb:PutItem pour la table que vous avez créée à la section précédente.


    1. Dans AWS Management Console, cliquez sur Services et sélectionnez IAM dans la section Sécurité, identité et conformité.

    2. Sélectionnez les rôles dans la barre de navigation de gauche, puis cliquez sur Créer un rôle.

    3. Sélectionnez le type de rôle Lambda depuis le groupe Service AWS, puis cliquez surSuivant : Autorisations.

      Remarque : lorsque vous sélectionnez un type de rôle, une stratégie d’approbation est automatiquement créée pour votre rôle, laquelle autorise les services AWS à endosser ce rôle en votre nom. Si vous créez ce rôle à l’aide de l’interface de ligne de commande, AWS CloudFormation ou tout autre mécanisme, vous devez spécifier directement une stratégie d’approbation.

    4. Commencez à saisir AWSLambdaBasicExecutionRole dans la zone de texte Filtre et cochez la case située en regard de ce rôle.

    5. Choisissez Étape suivante.

    6. Saisissez WildRydesLambda en tant que Nom de rôle.

    7. Choisissez Créer un rôle.

    8. Saisissez WildRydesLambda dans la zone de filtre sur la page Rôles et choisissez le rôle que vous venez de créer.

    9. Dans l'onglet Autorisations, cliquez sur le lien Add inline policy (Ajouter une politique en ligne) situé dans le coin inférieur droit pour créer une nouvelle politique incluse.

    10. Sélectionnez Choose a service (Choisir un service).

    11. Commencez à saisir DynamoDB dans la boîte de recherche nommée Find a service (Trouver un service) et sélectionnez DynamoDB lorsqu'il apparaît.

    12. Choisissez Sélectionner des actions.

    13. Commencez à saisir PutItem dans la boîte de recherche nommée Filter actions (Filtrer des actions) et cochez la case située à côté de PutItem lorsqu'il apparaît.

    14. Sélectionnez la section Ressources

    15. Avec l'option Specific (Spécifique) sélectionnée, sélectionnez le lien Add ARN (Ajouter ARN) dans la section table.

    16. Collez l'ARN de la table que vous avez créée dans la section précédente, dans le champ Specify ARN for table (Spécifier un ARN pour la table), et choisissez Ajouter.

    17. Choisissez Examiner une stratégie.

    18. Saisissez DynamoDBWriteAccess pour le nom de la stratégie et choisissez Créer une stratégie.

  • Étape 3. Création d’une fonction Lambda pour les demandes de traitement

    AWS Lambda exécute votre code en réponse à des événements tels qu’une requête HTTP. Au cours de cette étape, vous créerez la fonction centrale qui traite les requêtes API à partir de l’application Web afin d’expédier une licorne. Dans le module suivant, vous utiliserez Amazon API Gateway pour créer une API RESTful qui exposera un point de terminaison HTTP pouvant être invoqué depuis le navigateur de vos utilisateurs. Ensuite, vous connecterez la fonction Lambda créée dans la présente étape à cette API afin d’établir un backend entièrement fonctionnel pour votre application Web.

    Utilisez la console AWS Lambda pour créer une nouvelle fonction Lambda appelée RequestUnicorn qui traitera les demandes API. Utilisez l’exemple d’implémentation fourni requestUnicorn.js pour votre code de fonction. Il vous suffit de le copier-coller depuis fichier dans l’éditeur de la console AWS Lambda.

    Assurez-vous de configurer votre fonction pour utiliser le rôle IAM WildRydesLambda que vous avez créé à la section précédente.


    1. Cliquez sur Services, puis sélectionnez Lambda dans la section Calcul.

    2. Cliquez sur Create function (Créer une fonction).

    3. Gardez la carte Author from scratch (Créer à partir de zéro) sélectionnée par défaut.

    4. Saisissez RequestUnicorn dans le champ Nom.

    5. Sélectionnez Node.js 6.10 pour l'Exécution.

    6. Assurez-vous que l'option Choose an existing role (Choisir un rôle existant) est sélectionnée dans le menu déroulant Rôle.

    7. Sélectionnez WildRydesLambda dans le menu déroulant Rôle existant.

    8. Cliquez sur Create function (Créer une fonction).

    9. Descendez jusqu'à la section Function code (Code de fonction) et remplacez le code index.js présent dans l'éditeur de code avec le contenu de requestUnicorn.js.

    10. Cliquez sur "Enregistrer" dans le coin supérieur droit de la page.

  • Étape 4. Validation de votre implémentation

    Dans le cadre de ce module, vous allez tester la fonction que vous avez créée à l’aide de la console AWS Lambda. Dans le module suivant, vous ajouterez une API REST à l’aide d’API Gateway afin de pouvoir invoquer votre fonction à partir de l’application Web que vous avez déployée dans le premier module.


    1. Depuis l'écran principal de modification de la fonction, sélectionnez Configure test event (Configurer un événement de test) dans le menu déroulant Select a test event... (Sélectionner un événement de test...).

    2. Laissez l'option Create new test event (Créer un nouvel événement de test) sélectionnée.

    3. Saisissez TestRequestEvent dans le champ Nom de l'événement.

    4. Copiez et collez l'événement de test suivant dans l'éditeur :

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }
    1. Cliquez sur Créer.

    2. Sur l'écran de modification des fonctions principales, cliquez sur Test en sélectionnantTestRequestEvent dans le menu déroulant.

    3. Naviguez jusqu'au sommet de la page et développez la section Détails de la section Execution result (Résultat de l'exécution).

    4. Vérifiez que l’exécution a réussi et que le résultat de la fonction est semblable au suivant :

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }