Je souhaite créer une API sans utiliser de serveur. Confirmez que la demande est envoyée depuis l'instance EC2 vers l'API REST créée par API Gateway et renvoyée.
Créons une API REST à l'aide d'Amazon API Gateway et de Lambda.
[1. Créer une fonction Lambda](# 1-lambda% E9% 96% A2% E6% 95% B0% E3% 82% 92% E4% BD% 9C% E6% 88% 90% E3% 81% 99 % E3% 82% 8B) [2. Créer une API REST avec API Gateway](# 2-api-gateway% E3% 81% A7rest-api% E3% 82% 92% E4% BD% 9C% E6% 88% 90% E3% 81% 99% E3% 82% 8B) [3. Déployer l'API REST](# 3-rest-api% E3% 82% 92% E3% 83% 87% E3% 83% 97% E3% 83% AD% E3% 82% A4% E3% 81 % 99% E3% 82% 8B) [4. Créer une deuxième fonction Lambda](# 4-2% E7% 95% AA% E7% 9B% AE% E3% 81% AElambda% E9% 96% A2% E6% 95% B0% E3% 82% 92% E4% BD% 9C% E6% 88% 90% E3% 81% 99% E3% 82% 8B) [5. Ajoutez des ressources, des méthodes et des paramètres à l'API REST avec API Gateway](# 5-api-gateway% E3% 81% A7rest-api% E3% 81% AB% E3% 83% AA% E3% 82% BD% E3% 83% BC% E3% 82% B9% E3% 83% A1% E3% 82% BD% E3% 83% 83% E3% 83% 89% E3% 83% 91% E3% 83% A9% E3% 83% A1% E3% 83% BC% E3% 82% BF% E3% 82% 92% E8% BF% BD% E5% 8A% A0% E3% 81% 99% E3% 82% 8B)
Référence: https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/apigateway-getting-started-with-rest-apis.html
Lors de la création de la passerelle API, vous devez spécifier la fonction Lambda, créez donc d'abord la fonction Lambda.
Sélectionnez "Fonction" -> "Créer une fonction" sur l'écran de la console Lambda. Sélectionnez «Créer à partir de zéro» sur l'écran de création de fonction.
Nom de la fonction: ma-fonction Exécution: Python 3.7 Et appuyez sur "Créer une fonction".
Si le message "La fonction ma-fonction a été créée avec succès" apparaît, la création de la fonction est terminée.
À propos, la fonction créée renvoie "Hello from Lambda!" Par défaut.
Cliquez sur "Créer une API" sur l'écran de la console API Gateway. Puisqu'il s'agit d'une vérification, sélectionnez "Construire" dans "REST API privée".
Une fenêtre contextuelle apparaîtra, alors sélectionnez OK.
Réglez comme indiqué dans l'image ci-dessous. Après avoir terminé la sélection et la saisie, cliquez sur "Créer une API".
Une fois terminé, seul "/" sera affiché. Ce "/" est la ressource de niveau racine et correspond à l'URL du chemin de base de l'API.
Ensuite, ajoutez une méthode. Sélectionnez Actions> Créer une méthode.
Sélectionnez "GET" et appuyez sur la coche.
Ensuite, l'écran de configuration GET apparaîtra, alors entrez les informations nécessaires et «Enregistrer».
Le contenu défini s'affiche. Veuillez consulter Officiel pour plus de détails sur chaque article.
La création de l'API REST est maintenant terminée.
Pour l'utiliser réellement, vous devez déployer l'API REST que vous avez créée.
Sélectionnez Actions> Déployer l'API pour l'API REST que vous avez créée.
Une fenêtre contextuelle apparaîtra, alors sélectionnez "Nouvelle étape" et Définissez le nom de la scène sur "dev" et appuyez sur "Deploy".
Ensuite, l'écran de l'éditeur d'étape s'affiche et vous pouvez effectivement envoyer une requête à l'API avec l'URL de l'appel d'URL.
Faisons une requête à partir de l'instance EC2.
$ curl -X GET 'URL d'appel'
"Hello from Lambda!"
C'est OK si la réponse "Bonjour de Lambda!" Renvoyée par l'ensemble Lambda est renvoyée.
Ensuite, nous exécuterons également des modèles avec des paramètres dans les requêtes GET. Dans l'API précédente, Lambda renvoyait une valeur fixe de "Bonjour de Lambda!". Donc, cette fois, nous allons créer une API avec Lambda qui place les paramètres de la requête GET reçue dans la réponse.
Créez la fonction Lambda de la même manière qu'auparavant. Nom de la fonction: my-function2 Exécution: Python 3.7 Exécuter le rôle: sélectionnez le rôle que vous venez de créer dans Utiliser le rôle existant.
Lorsque la création est terminée, réécrivez le code de fonction.
Mettez les paramètres reçus dans la réponse.
lambda_function.py
import json
def lambda_handler(event, context):
myParam = event['myParam']
return {
'statusCode': 200,
'body': json.dumps(myParam)
}
Les paramètres Lambda sont terminés.
Nous créerons des ressources avec API Gateway.
"Action" -> "Créer une ressource"
Nom de la ressource: ma-ressource → "Créer une ressource"
Ensuite, nous allons créer une méthode. Avec ma ressource sélectionnée, sélectionnez "Action" -> "Créer une méthode"
Sélectionnez «GET» et confirmez avec le bouton de contrôle.
L'écran de configuration de my-resource GET apparaîtra, alors sélectionnez "my-function2" créé précédemment pour la fonction Lambda et enregistrez-le.
Une fenêtre contextuelle d'ajout d'autorisations apparaîtra, alors cliquez sur "OK".
Sélectionnez «Demande d'intégration» sur l'écran d'exécution de la méthode.
Puisqu'il existe un paramètre "modèle de mappage" en bas, Demander le passage du corps: si aucun modèle n'est défini (recommandé) Content-Type:application/json Est spécifié.
Entrez le modèle et enregistrez-le.
modèle
{
"myParam": "$input.params('myParam')"
}
Désormais, l'élément "myParam" du paramètre de requête peut être obtenu par l'événement ['myParam'] du côté de la fonction Lambda.
lambda_function.py
import json
def lambda_handler(event, context):
myParam = event['myParam'] #← ici
return {
'statusCode': 200,
'body': json.dumps(myParam)
}
Cela complète les paramètres du côté de l'API, nous allons donc le déployer et l'exécuter de la même manière qu'auparavant.
Essayez de demander en ajoutant «ma-ressource? MyParam = Hello% 20from% 20API% 20Gateway!» Au paramètre.
$ curl -X GET 'https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/dev/my-resource?myParam=Hello%20from%20API%20Gateway!'
{"statusCode": 200, "body": "\"Hello from API Gateway!\""}
J'ai pu confirmer que le "Hello from API Gateway!" Assigné au paramètre de requête répond en tant que corps.
Cette fois, nous l'avons implémenté avec les paramètres minimums nécessaires, il semble donc que des recherches supplémentaires seront nécessaires lors de son introduction, mais je pense que nous avons saisi l'image globale d'API Gateway + Lambda comme sans serveur.