Objectif
Ce lab vous guide dans la création d’une API 100% Serverless avec AWS Lambda, API Gateway et Amazon DynamoDB, en ajoutant une interface web statique hébergée sur Amazon S3.
Vous apprendrez à :
✅ Créer une API REST avec Lambda et DynamoDB.
✅ Déployer une interface web statique sur S3 pour tester l’API.
1. Architecture du Lab
- Amazon DynamoDB pour stocker les utilisateurs.
- AWS Lambda (Python) pour gérer les opérations CRUD.
- Amazon API Gateway pour exposer l’API REST.
Amazon S3 pour héberger une page web permettant de tester l’API.
2. Étapes du Déploiement
1. Création de la Table DynamoDB
- AWS Console > DynamoDB > Créer une table.
- Nom : Users
- Clé primaire : user_id (Type : String).
- Mode : On-Demand.
Créer la table.
2. Création de la Fonction AWS Lambda
- AWS Console > AWS Lambda > Create Function.
- Nom : UserFunction
- Runtime : Python 3.9
- Permissions :
- Créer un rôle IAM avec l’autorisation AmazonDynamoDBFullAccess.
Cliquez sur “Create Function”.
3. Ajouter le Code Lambda
Dans l’onglet “Code”, remplacez le contenu par :
import json
import boto3
import uuid
dynamodb = boto3.resource("dynamodb")
table = dynamodb.Table("Users")
def lambda_handler(event, context):
http_method = event["httpMethod"]
if http_method == "POST":
body = json.loads(event["body"])
user_id = str(uuid.uuid4())
table.put_item(Item={"user_id": user_id, "name": body["name"], "email": body["email"]})
return {"statusCode": 200, "body": json.dumps({"message": "Utilisateur ajouté", "user_id": user_id})}
elif http_method == "GET":
user_id = event["queryStringParameters"]["user_id"]
response = table.get_item(Key={"user_id": user_id})
return {"statusCode": 200, "body": json.dumps(response.get("Item", {}))}
return {"statusCode": 400, "body": json.dumps({"message": "Méthode non supportée"})}
Cliquez sur “Deploy”.
4. Création de l’API Gateway
- AWS Console > API Gateway > Create API.
- Choisissez “HTTP API”.
- Cliquez sur “Add Integration” et sélectionnez Lambda.
- Ajoutez une route GET et POST avec l’intégration Lambda.
- Déployez l’API et copiez l’URL d’appel (ex : https://xyz123.execute-api.us-east-1.amazonaws.com).
3. Création de l’Interface Web Statique sur S3
1. Créer un Bucket S3
- AWS Console > S3 > Create Bucket.
- Nom : user-api-frontend (unique).
- Désactiver le “Block all public access”.
- Activer “Static website hosting”.
- Notez l’URL du site statique.
2. Ajouter le Code HTML
Créez un fichier index.html avec le code suivant :
Test API Utilisateur
Ajouter un Utilisateur
Récupérer un Utilisateur
Remplacez API_URL = “https://xyz123.execute-api.us-east-1.amazonaws.com” par l’URL de votre API Gateway.
3. Télécharger le Code sur S3
- Allez dans S3 > user-api-frontend > Upload.
Téléversez index.html.
4. Modifier les Permissions du Fichier
- Cliquez sur index.html > Permissions.
- Ajoutez une ACL :
Public Read Access.
5. Tester l’Interface
- Ouvrez l’URL du site statique S3 (ex: http://user-api-frontend.s3-website-us-east-1.amazonaws.com).
- Ajoutez un utilisateur et copiez son user_id.
Recherchez l’utilisateur avec son user_id. 🚀
6. Nettoyer les Ressources
- Supprimez la table DynamoDB.
- Supprimez la fonction Lambda.
- Supprimez l’API Gateway.
Supprimez le bucket S3.