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
Architecture AWS du compteur Serverless

account_tree Pipeline d'intégration

  • 1
    Frontend (JavaScript) : Requête Fetch asynchrone au chargement de la page. Utilisation du localStorage pour 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.