Tutoriel sur la passerelle API AWS – Étape 1
Étape 1 – Configurer la passerelle API Amazon
Après avoir procédé à cette étape, vous aurez :
Configuré la passerelle API Amazon à l’aide des fonctions AWS Lambda pour exécuter votre logique de service qui stocke et récupère les animaux de compagnie à partir d’une table Amazon DynamoDB;
Créé deux méthodes de service REST sans authentification pour obtenir et mettre à jour une liste d’animaux de compagnie.
Avant de commencer, veuillez installer Node.js.
1. Création de la table Amazon DynamoDB
Dans la console Amazon DynamoDB, cliquez sur Créer une table.

Configurez les variables associées à la table :
Nom de la table : animaux de compagnie
Clé primaire : nom d’utilisateur
Type de clé primaire : chaîne
Utiliser les paramètres par défaut : case décochée
Unités de capacité de lecture : 3
Unités de capacité d’écriture : 3

Cliquez sur Créer pour créer la table avec les paramètres fournis.
Pendant la création de la table, prenez note du nom de la ressource Amazon affichée sur la ligne Amazon Resource Name (ARN) dans la section Détails de la table. Vous aurez en effet besoin de l’ARN de la table à l’étape suivante.

2. Création de la politique qui accorde aux fonctions AWS Lambda l’accès à la table DynamoDB Animaux de compagnie
Accédez à la console AWS IAM.
Cliquez sur Rôles dans le menu de gauche, puis cliquez sur le bouton Créer un nouveau rôle.

Nommez le rôle APIGatewayLambdaExecRole
, puis cliquez sur Étape suivante.
Sélectionnez le type de rôle. Sous la section Rôles de service AWS, sélectionnez AWS Lambda.

L’écran Joindre une politique s’affiche. Ignorez cette étape en cliquant sur Étape suivante. Passez maintenant en revue les informations que vous avez fournies. Si tout semble correct, cliquez sur Créer le rôle. Lorsque vous avez terminé, vous devriez voir votre rôle répertorié sur la page d’accueil IAM.
Sélectionnez le rôle APIGatewayLambdaExecRole que vous venez de créer. Cliquez sur la flèche vers le bas pour vous rendre à la section Politiques en ligne et cliquez sur le lien Cliquez ici.
Sélectionnez Politique personnalisée, puis cliquez sur Sélectionner. Nommez la politique LogAndDynamoDBAccess
et ajoutez le code suivant comme document de politique (assurez-vous d’abord de mettre à jour le nom de la ressource Amazon (ARN) pour votre table DynamoDB). Cliquez sur Appliquer la politique.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccessCloudwatchLogs",
"Action": ["logs:*"],
"Effect": "Allow",
"Resource": "arn:aws:logs:*:*:*"
},
{
"Sid": "PetsDynamoDBReadWrite",
"Effect": "Allow",
"Action": [
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:UpdateItem"
],
"Resource": ["DYNAMODB_TABLE_ARN_VALUE_FROM_PREVIOUS_STEP"]
}
]
}
Was this helpful?
2. Création des fonctions AWS Lambda
Les trois étapes suivantes permettent de créer les fonctions AWS Lambda pour récupérer et mettre à jour les informations sur les animaux de compagnie dans la table DynamoDB.
Création de la fonction Lambda pour GetPetInfo
Dans la console AWS Lambda, sélectionnez Créer une fonction Lambda (si vous n’avez pas encore créé de fonction AWS Lambda, cliquez sur Commencer maintenant).
L’écran Sélectionner le modèle s’affiche. Cliquez sur Fonction vierge.
Vous serez alors invité à configurer les déclencheurs. Cliquez sur Suivant pour continuer. Vous n’avez pas besoin de faire quoi que ce soit pour le moment.
Vous serez enfin invité à configurer la fonction.
Remplissez les champs appropriés avec les informations suivantes :
Nom :
GetPetInfo
Temps d’exécution : Node.js 6.10
Collez le code suivant pour lire les informations des animaux de compagnie dans la table DynamoDB dans la zone du code de la fonction Lambda.
var AWS = require('aws-sdk');
var DOC = require('dynamodb-doc');
var dynamo = new DOC.DynamoDB();
exports.handler = function(event, context) {
var cb = function(err, data) {
if(err) {
console.log('error on GetPetsInfo: ',err);
context.done('Unable to retrieve pet information', null);
} else {
if(data.Item && data.Item.pets) {
context.done(null, data.Item.pets);
} else {
context.done(null, {});
}
}
};
dynamo.getItem({TableName:"Pets", Key:{username:"default"}}, cb);
};
Was this helpful?
Pour la section Rôle, sélectionnez Choisir un rôle existant. Ensuite, choisissez APIGatewayLambdaExecRole comme rôle existant dans la section Rôle existant. Laissez tous les autres paramètres sur leurs valeurs par défaut.
Cliquez sur Suivant pour consulter les informations que vous avez fournies. Si tout semble correct, cliquez sur Créer une fonction.
Cliquez sur Tester, en laissant l’événement de test d’entrée à sa valeur par défaut (qui utilise le modèle Hello World). Lorsque le test est terminé, vous devriez voir une sortie vide ({}
) dans la section Résultat de l’exécution. La table est vide.
Création de la fonction Lambda pour UpdatePetInfo
Répétez les instructions suivies pour créer la fonction GetPetInfo
, mais utilisez plutôt les éléments suivants comme code de fonction :
var AWS = require('aws-sdk');
var DOC = require('dynamodb-doc');
var dynamo = new DOC.DynamoDB();
exports.handler = function(event, context) {
var item = { username:"default",
pets: event.pets || {}
};
var cb = function(err, data) {
if(err) {
console.log(err);
context.fail('unable to update pets at this time');
} else {
console.log(data);
context.done(null, data);
}
};
dynamo.putItem({TableName:"Pets", Item:item}, cb);
};
Was this helpful?
Pour tester la fonction, cliquez sur la liste déroulante Actions et choisissez Configurer l’exemple d’événement. Entrez le code ci-dessous pour ajouter des exemples de données, puis cliquez sur Soumettre :
{
"pets": [{
"id": 1,
"type": "dog",
"price": 249.99
}]
}
Was this helpful?
Vous devriez voir un résultat de retour vide ({}
).
Revenez à votre fonction Lambda GetPetInfo
et cliquez à nouveau sur Tester. Vous devriez maintenant voir un seul animal de compagnie.
Création de la troisième fonction lambda
Vous allez créer une fonction Lambda supplémentaire. Bien que cette fonction ne fasse rien, elle est requise par la méthode OPTIONS pour CORS comme décrit dans une section ultérieure.
En suivant les étapes décrites ci-dessus, créez une fonction Lambda nommée NoOp
. Le code de la fonction sera le suivant :
exports.handler = function(event, context) {
context.succeed('');
}
Was this helpful?
Au lieu de créer cette troisième fonction Lambda, vous pouvez choisir de créer une méthode OPTIONS sur la passerelle API.
3. Création de l’API de la passerelle API Amazon
Vous créerez une API selon deux méthodes : l’une, GET
, obtiendra des informations sur les animaux de compagnie et l’autre, POST
, publiera des informations sur les animaux de compagnie.
Méthode : GET pour obtenir des informations sur les animaux de compagnie
Allez sur la console de passerelle API Amazon, puis cliquez sur Créer une API. Si c’est la première fois que vous créez une API, vous verrez un écran Commencer à la place.
Si c’est la première fois que vous créez une API, vous serez invité à créer un exemple d’API. Cliquez sur OK pour quitter la notification contextuelle et choisissez le bouton radio Nouvelle API au lieu du bouton Exemple d’API.
Nommez l’API SecurePets
et cliquez sur Créer une API.
Accédez à l’onglet Ressources de l’API SecurePets
et cliquez sur l’action Créer une ressource.
Nommez la ressource Pets
et cliquez à nouveau sur Créer une ressource.
Dans le volet de gauche, sélectionnez /pets
, puis cliquez sur le bouton Créer méthode.
Dans le menu déroulant, sélectionnez GET et cliquez sur la coche. Fournissez les valeurs de configuration suivantes pour la méthode GET
:
Type d’intégration : Fonction Lambda;
Région Lambda : région dans laquelle vous vous trouvez;
Fonction Lambda : GetPetInfo.
Cliquez sur Enregistrer, puis sur OK lorsque vous êtes invité dans la fenêtre contextuelle à accorder des autorisations à la fonction Lambda.
Dans la fenêtre Exécution de la méthode qui s’affiche ensuite, cliquez sur Tester.
Vous devriez voir le seul animal de compagnie retourné dans le corps de la réponse.
Méthode : POST pour obtenir des informations sur les animaux de compagnie
La création de l’API utilisée pour la méthode POST
qui sert à publier des informations sur les animaux de compagnie est similaire à la création de celle utilisée pour la méthode GET
pour obtenir des informations sur les animaux de compagnie.
Dans le volet de gauche, sélectionnez /pets
, puis cliquez sur Créer méthode.
Dans le menu déroulant, sélectionnez POST et cliquez sur la coche.
Dans Type d’intégration, sélectionnez Fonction Lambda et sélectionnez la région dans laquelle vous vous trouvez dans Fonction Lambda, sélectionnez UpdatePetInfo.
Cliquez sur Enregistrer, puis sur OK lorsque vous êtes invité dans la fenêtre contextuelle à accorder des autorisations à la fonction Lambda.
Cliquez sur Tester et collez le code ci-dessous dans le corps de la demande :
{"pets": [
{"id": 1, "type": "dog", "price": 249.99},
{"id": 2, "type": "cat", "price": 124.99}
]
}
Was this helpful?
Vous devriez voir un résultat de retour vide ({}
).
Retournez à la méthode GET et cliquez à nouveau sur Tester pour voir si le corps de la réponse indique maintenant qu’il y a deux animaux de compagnie répertoriés dans la table :
[
{
"id": 1,
"price": 249.99,
"type": "dog"
},
{
"id": 2,
"price": 124.99,
"type": "cat"
}
]
Was this helpful?
Méthode : OPTIONS
Au lieu de créer une fonction lambda qui n’effectue aucune action, vous pouvez créer une méthode OPTIONS
sur la passerelle API.
Dans le volet de gauche, sélectionnez /pets
, puis cliquez sur Créer méthode. Dans le menu déroulant sélectionnez OPTIONS et cliquez sur la coche. Dans Type d’intégration, sélectionnez Simuler. Cliquez sur Enregistrer.
Laissez le corps de la réponse vide, puis cliquez sur Tester. Vous devriez voir un corps de réponse affichant no data
.
À ce stade, les fonctions AWS Lambda et les méthodes de l’API de la passerelle API Amazon sont définies sans aucune sécurité.