API Compteur Serverless
Développement d'une API backend complète pour ce portfolio (Cloud Resume Challenge). Architecture événementielle gérant les requêtes CORS et l'incrémentation NoSQL pour le suivi des visiteurs uniques.
API
Gateway
AWS
Lambda
Amazon
DynamoDB
Python
3.12
account_tree Pipeline d'intégration
-
1
Frontend (JavaScript) : Requête Fetch asynchrone au chargement de la page. Utilisation du
localStoragepour identifier les visiteurs uniques et éviter les fausses incrémentations. -
2
API Gateway (REST) : Point d'entrée public sécurisé. Configuration des headers CORS (Cross-Origin Resource Sharing) pour autoriser spécifiquement le domaine du portfolio à consommer l'API.
-
3
AWS Lambda (Compute) : Fonction Python exécutée à la demande. Elle analyse les paramètres d'URL (lecture vs incrémentation) et interagit avec la base de données via la librairie Boto3.
-
4
Amazon DynamoDB (NoSQL) : Mise à jour atomique (Atomic Increment) de la valeur du compteur pour éviter les conflits lors de visites simultanées.
code Logique Lambda & Incrémentation
L'utilisation de UpdateExpression='ADD #c :inc' permet à
DynamoDB de gérer l'addition de manière 100% sécurisée sans risque de
désynchronisation.
# Extrait du code Python (AWS
Lambda)
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('PortfolioCounter')
# Incrémentation atomique sécurisée
response = table.update_item(
Key={'id': 'visiteurs'},
UpdateExpression='ADD #c :inc',
ExpressionAttributeNames={'#c': 'count'},
ExpressionAttributeValues={':inc': 1},
ReturnValues='UPDATED_NEW'
)
Indicateurs de Succès
Idempotent
Gestion des visiteurs uniques côté frontend via
localStorage.
CORS
En-têtes sécurisés bloquant les appels hors du domaine
officiel.
Serverless
Exécution instantanée (Lambda) ne coûtant qu'à l'usage.