Skip to content

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

📝 Pense-bêtes - Guide de déploiement AWS

Application de prise de notes personnelles déployée sur AWS avec une architecture serverless.

Demo

Proof of Deployment

🏗️ Architecture

  • Frontend: S3 + CloudFront
  • API: API Gateway + Lambda (Python)
  • Database: DynamoDB
  • Infrastructure: Terraform
  • Région: us-east-1
  • Budget: ~2€/mois (Free tier eligible)

📋 Prérequis

  1. AWS Academy Account configuré
  2. Terraform installé (Download)
    terraform version
  3. AWS CLI installé et configuré
    aws --version

🚀 Déploiement

Étape 1: Configurer AWS CLI

Si vous utilisez AWS Academy, configurez vos credentials depuis le Lab:

  1. Démarrez votre lab AWS Academy
  2. Cliquez sur "AWS Details"
  3. Cliquez sur "Show" à côté de "AWS CLI"
  4. Copiez les credentials dans "$HOME/aws/credentials"

Étape 2: Vérifier la configuration

aws sts get-caller-identity --region us-east-1

Vous devriez voir votre Account ID et ARN.

Étape 3: Initialiser Terraform

cd terraform
terraform init

Étape 4: Vérifier le plan de déploiement

terraform plan

Étape 5: Déployer l'infrastructure

terraform apply

Durée: ~5-10 minutes

Étape 6: Accéder à l'application

À la fin du déploiement, Terraform affichera l'URL CloudFront:

cloudfront_url = "https://xxx.cloudfront.net"

⚠️ Note: La distribution CloudFront peut prendre 10-15 minutes supplémentaires pour être complètement déployée.

🧪 Test manuel (optionnel)

Tester l'API directement

  1. Récupérer l'URL de l'API depuis les outputs Terraform:
terraform output api_gateway_url
  1. Tester la création d'une note:
curl -X POST "YOUR_API_URL" \
  -H "Content-Type: application/json" \
  -d '{
    "userId": "test-user",
    "noteId": "test-note-1",
    "title": "Test Note",
    "content": "Ceci est un test",
    "color": "#FFE97F"
  }'
  1. Lister les notes:
curl "YOUR_API_URL?userId=test-user"

🗑️ Suppression des ressources

Pour supprimer toutes les ressources AWS et éviter les coûts:

cd terraform
terraform destroy

Tapez yes pour confirmer la suppression.

Cela va supprimer:

  • Distribution CloudFront
  • Bucket S3 (avec tout son contenu)
  • API Gateway et Lambda
  • Table DynamoDB
  • IAM roles et policies

📁 Structure du projet

notes-aws/
├── frontend/
│   ├── index.html          # Page principale
│   ├── style.css           # Styles CSS
│   └── app.js              # Logique JavaScript
├── backend/
│   ├── lambda_function.py  # Code Lambda (CRUD)
│   └── requirements.txt    # Dépendances Python
├── terraform/
│   ├── main.tf             # Configuration Terraform principale
│   ├── variables.tf        # Variables Terraform
│   ├── outputs.tf          # Outputs Terraform
│   ├── dynamodb.tf         # DynamoDB table
│   ├── lambda.tf           # Lambda function et IAM
│   ├── api_gateway.tf      # API Gateway REST API
│   └── s3_cloudfront.tf    # S3 bucket et CloudFront
├── .gitignore
└── DEPLOYMENT.md           # Ce fichier

🔍 Ressources créées

DynamoDB

  • Table: Notes
  • Clé primaire: userId (HASH) + noteId (RANGE)
  • Billing: PAY_PER_REQUEST (free tier)

Lambda

  • Nom: NotesAPIFunction
  • Runtime: Python 3.11
  • Memory: 128 MB
  • Timeout: 30 secondes

API Gateway

  • Nom: NotesAPI
  • Type: REST API
  • Stage: prod
  • Endpoint: /notes
  • Méthodes: GET, POST, PUT, DELETE, OPTIONS (CORS)

S3

  • Bucket: notes-app-{AccountId}
  • Configuration: Static website hosting
  • Public access: Enabled (pour CloudFront)

CloudFront

  • Distribution: Distribution globale
  • Price Class: PriceClass_100 (NA & Europe)
  • HTTPS: Redirect to HTTPS

💰 Estimation des coûts

Dans le Free Tier AWS:

  • DynamoDB: 25 GB, 200M requêtes/mois - Gratuit
  • Lambda: 1M requêtes, 400,000 GB-secondes/mois - Gratuit
  • S3: 5 GB, 20,000 GET, 2,000 PUT - Gratuit
  • CloudFront: 1 TB transfert, 10M requêtes - Gratuit
  • API Gateway: 1M requêtes - Gratuit

Total estimé: 0€/mois dans le free tier, ~2€/mois après.

📝 Notes importantes

  1. AWS Academy: Les ressources peuvent être supprimées automatiquement après 4 heures d'inactivité
  2. Credentials: Pensez à rafraîchir vos credentials AWS Academy régulièrement
  3. Région: Le projet est configuré pour us-east-1 (obligatoire pour certains services AWS Academy)
  4. Données: Les données sont persistées dans DynamoDB même après arrêt du lab (sauf si vous exécutez cleanup.ps1)

About

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages