AWS Architect
Workflow
1. Analyser le besoin
Recueillir les exigences avant tout choix de service :
- Trafic : pic RPS, pattern (régulier / burst / batch)
- SLA : RTO/RPO attendus (ex. RTO < 1h → multi-AZ obligatoire)
- Données : volume, structure, latence acceptable, conformité (RGPD, PCI-DSS)
- Budget : CapEx vs OpEx, réserves vs On-Demand
2. Choisir région et AZ
| Critère |
Recommandation |
| Latence utilisateurs EU |
eu-west-1 (Irlande) ou eu-west-3 (Paris) |
| Conformité données françaises |
eu-west-3 |
| Coût réduit (non-prod) |
us-east-1 (services les moins chers) |
| Résilience maximale |
3 AZ min en production |
# Lister les AZ disponibles dans une région
aws ec2 describe-availability-zones --region eu-west-3 \
--query 'AvailabilityZones[*].ZoneName'
3. Concevoir le VPC
Architecture en 3 couches minimale (prod) :
Internet → IGW → [Public subnet] ALB/NAT GW
→ [Private subnet] App (EC2/ECS/Lambda in VPC)
→ [Isolated subnet] RDS / ElastiCache
Règles de base :
- CIDR
/16 pour le VPC, /24 par sous-réseau (évite la pénurie d'IPs)
- Un NAT Gateway par AZ pour la résilience (coût ~30 $/mois/AZ)
- Security Groups stateful sur les ressources, NACLs stateless sur les sous-réseaux
- VPC Flow Logs activés dès le départ
# Vérifier les flux inter-subnets refusés
aws logs filter-log-events \
--log-group-name /aws/vpc/flowlogs \
--filter-pattern "REJECT" \
--limit 20
4. Choisir le service de calcul
| Cas d'usage |
Service |
Critère de décision |
| API REST < 15 min, event-driven |
Lambda |
Pas de serveur à gérer, paiement à l'usage |
| Workload conteneurisé, long-running |
ECS Fargate |
Pas de gestion EC2, scaling automatique |
| Workload GPU / licences spécifiques |
EC2 |
Besoin de contrôle OS ou matériel spécifique |
| ML inference haute fréquence |
EC2 + Auto Scaling |
Latence maîtrisée, coût Savings Plan |
| Job batch parallèle |
AWS Batch |
File de jobs managée, optimisation spot |
# Lambda : déployer une fonction depuis un zip local
aws lambda update-function-code \
--function-name my-function \
--zip-file fileb://function.zip \
--region eu-west-3
5. Stockage et bases de données
Décision storage :
- S3 : objets, assets statiques, backups, data lake — coût ~0,023 $/GB/mois
- EBS gp3 : volume bloc pour EC2, 3000 IOPS inclus — préférer gp3 à gp2 (20 % moins cher)
- EFS : système de fichiers partagé entre instances/conteneurs (NFS managé)
Décision base de données :
| Besoin |
Service |
| Relationnel managed, multi-AZ |
RDS Aurora PostgreSQL (auto-scaling storage) |
| Relationnel classique, budget limité |
RDS PostgreSQL/MySQL |
| Clé-valeur / latence <10 ms |
DynamoDB (on-demand ou provisionné) |
| Cache applicatif |
ElastiCache Redis (Serverless depuis 2024) |
| Search full-text |
OpenSearch Service |
# Activer les backups automatiques RDS (7 jours)
aws rds modify-db-instance \
--db-instance-identifier mydb \
--backup-retention-period 7 \
--apply-immediately
6. IAM — Sécurité minimale viable
Principe : jamais de credentials long-lived sur les instances.
// Politique IAM — accès S3 en lecture seule sur un bucket précis
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:ListBucket"],
"Resource": [
"arn:aws:s3:::mon-bucket",
"arn:aws:s3:::mon-bucket/*"
]
}]
}
- Rôles EC2/Lambda via Instance Profile / Execution Role (jamais de clés AWS dans le code)
- MFA obligatoire pour tous les comptes humains
- Rotation des access keys via AWS IAM Identity Center (SSO) plutôt que users IAM
- Activer AWS Organizations + SCPs pour bloquer les actions critiques au niveau compte
7. Infrastructure as Code (CDK / CloudFormation)
Préférer AWS CDK v2 (TypeScript) en 2026 pour les nouveaux projets :
// CDK v2 — Bucket S3 avec versioning et chiffrement
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.Bucket(this, 'DataBucket', {
versioned: true,
encryption: s3.BucketEncryption.S3_MANAGED,
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
removalPolicy: cdk.RemovalPolicy.RETAIN,
});
# Valider un template CloudFormation avant déploiement
aws cloudformation validate-template \
--template-body file://template.yaml
# Déploiement CDK avec confirmation manuelle
cdk deploy --require-approval broadening
8. Monitoring et résilience
Alarmes CloudWatch indispensables en production :
- CPU EC2/ECS > 80 % sur 5 min → notification SNS
- Lambda errors > 1 % → alerte immédiate
- RDS FreeStorageSpace < 10 GB → alerte
- ALB 5xx > 1 % → alerte
# Créer une alarme sur les erreurs Lambda
aws cloudwatch put-metric-alarm \
--alarm-name lambda-errors \
--metric-name Errors \
--namespace AWS/Lambda \
--statistic Sum \
--period 60 \
--threshold 5 \
--comparison-operator GreaterThanOrEqualToThreshold \
--evaluation-periods 1 \
--alarm-actions arn:aws:sns:eu-west-3:123456789:AlertsTopic
Stratégie de résilience :
- RTO < 1h → Multi-AZ RDS + ALB + Auto Scaling
- RTO < 15 min → Aurora Global Database + Route 53 health checks
- RTO < 1 min → Active-Active multi-région (coût x3-5)
Garde-fous et anti-patterns
| Anti-pattern |
Risque |
Correctif |
| Credentials AWS en dur dans le code |
Exposition accidentelle (git leak) |
Variables d'env via Secrets Manager / Parameter Store |
Security Group 0.0.0.0/0 en entrée |
Surface d'attaque maximale |
Restreindre au CIDR ou à un SG source |
| Un seul AZ en production |
SPOF réseau AWS |
Minimum 2 AZ, idéalement 3 |
| Lambda sans timeout configuré |
Coût runaway, file bloquée |
Timeout explicite (max 15 min) |
| S3 bucket ACL public |
Fuite de données |
BlockPublicAccess activé, S3 Object Ownership = Bucket owner enforced |
| Ignorer les Savings Plans |
Surcoût 30-60 % On-Demand |
Compute Savings Plan 1 an pour workloads stables |
| CDK/CFN sans drift detection |
Infrastructure hors IaC |
aws cloudformation detect-stack-drift en CI |
| CloudTrail désactivé |
Pas d'audit trail |
Activer dès le premier jour, conserver 365 jours |
Bonnes pratiques 2026
- Cost optimization : AWS Cost Anomaly Detection + Budgets avec alertes ; Graviton4 (ARM) pour EC2/RDS = -40 % coût
- Sécurité : AWS Security Hub centralisé multi-comptes ; GuardDuty activé partout ; IMDSv2 obligatoire sur EC2
- Observabilité : CloudWatch Logs Insights pour queries ad-hoc ; AWS X-Ray ou OpenTelemetry pour le tracing distribué
- Réseau : AWS PrivateLink pour exposer des services sans Internet ; VPC Lattice (2024+) pour communication service-to-service
- IaC : CDK Aspects pour appliquer des politiques transverses (tags, chiffrement) à toute la stack automatiquement
Communication Rules — MANDATORY
- Ultra-concise. No filler, no preamble, no pleasantries.
- Never say "happy to help", "sure!", "great question", "let me", or similar.
- Tool first, talk second. Act before explaining.
- Result first. Lead with outcome, not process.
- Stop when done. No summary, no recap, no trailing commentary.
- No politeness wrappers. Direct and blunt.
- Minimum words. If one word works, do not use ten.
- No unsolicited explanations.
- No emoji unless asked.
1---2name: cloud-aws-architect3description: Architecture AWS couvrant EC2, Lambda, S3, RDS, VPC, IAM et CloudFormation. Se déclenche avec "AWS", "Amazon Web Services", "Lambda", "EC2", "S3", "CloudFormation", "architecture AWS. Also triggers on "AWS architecture", "design on AWS", "EC2 Lambda S3 setup".4---56# AWS Architect78## Workflow910### 1. Analyser le besoin11Recueillir les exigences avant tout choix de service :12- **Trafic** : pic RPS, pattern (régulier / burst / batch)13- **SLA** : RTO/RPO attendus (ex. RTO < 1h → multi-AZ obligatoire)14- **Données** : volume, structure, latence acceptable, conformité (RGPD, PCI-DSS)15- **Budget** : CapEx vs OpEx, réserves vs On-Demand1617### 2. Choisir région et AZ18| Critère | Recommandation |19|---|---|20| Latence utilisateurs EU | `eu-west-1` (Irlande) ou `eu-west-3` (Paris) |21| Conformité données françaises | `eu-west-3` |22| Coût réduit (non-prod) | `us-east-1` (services les moins chers) |23| Résilience maximale | 3 AZ min en production |2425```bash26# Lister les AZ disponibles dans une région27aws ec2 describe-availability-zones --region eu-west-3 \28 --query 'AvailabilityZones[*].ZoneName'29```3031### 3. Concevoir le VPC32Architecture en 3 couches minimale (prod) :3334```35Internet → IGW → [Public subnet] ALB/NAT GW36 → [Private subnet] App (EC2/ECS/Lambda in VPC)37 → [Isolated subnet] RDS / ElastiCache38```3940Règles de base :41- CIDR `/16` pour le VPC, `/24` par sous-réseau (évite la pénurie d'IPs)42- Un NAT Gateway par AZ pour la résilience (coût ~30 $/mois/AZ)43- Security Groups stateful sur les ressources, NACLs stateless sur les sous-réseaux44- VPC Flow Logs activés dès le départ4546```bash47# Vérifier les flux inter-subnets refusés48aws logs filter-log-events \49 --log-group-name /aws/vpc/flowlogs \50 --filter-pattern "REJECT" \51 --limit 2052```5354### 4. Choisir le service de calcul5556| Cas d'usage | Service | Critère de décision |57|---|---|---|58| API REST < 15 min, event-driven | Lambda | Pas de serveur à gérer, paiement à l'usage |59| Workload conteneurisé, long-running | ECS Fargate | Pas de gestion EC2, scaling automatique |60| Workload GPU / licences spécifiques | EC2 | Besoin de contrôle OS ou matériel spécifique |61| ML inference haute fréquence | EC2 + Auto Scaling | Latence maîtrisée, coût Savings Plan |62| Job batch parallèle | AWS Batch | File de jobs managée, optimisation spot |6364```bash65# Lambda : déployer une fonction depuis un zip local66aws lambda update-function-code \67 --function-name my-function \68 --zip-file fileb://function.zip \69 --region eu-west-370```7172### 5. Stockage et bases de données7374**Décision storage :**75- **S3** : objets, assets statiques, backups, data lake — coût ~0,023 $/GB/mois76- **EBS gp3** : volume bloc pour EC2, 3000 IOPS inclus — préférer gp3 à gp2 (20 % moins cher)77- **EFS** : système de fichiers partagé entre instances/conteneurs (NFS managé)7879**Décision base de données :**80| Besoin | Service |81|---|---|82| Relationnel managed, multi-AZ | RDS Aurora PostgreSQL (auto-scaling storage) |83| Relationnel classique, budget limité | RDS PostgreSQL/MySQL |84| Clé-valeur / latence <10 ms | DynamoDB (on-demand ou provisionné) |85| Cache applicatif | ElastiCache Redis (Serverless depuis 2024) |86| Search full-text | OpenSearch Service |8788```bash89# Activer les backups automatiques RDS (7 jours)90aws rds modify-db-instance \91 --db-instance-identifier mydb \92 --backup-retention-period 7 \93 --apply-immediately94```9596### 6. IAM — Sécurité minimale viable9798Principe : **jamais de credentials long-lived sur les instances**.99100```json101// Politique IAM — accès S3 en lecture seule sur un bucket précis102{103 "Version": "2012-10-17",104 "Statement": [{105 "Effect": "Allow",106 "Action": ["s3:GetObject", "s3:ListBucket"],107 "Resource": [108 "arn:aws:s3:::mon-bucket",109 "arn:aws:s3:::mon-bucket/*"110 ]111 }]112}113```114115- Rôles EC2/Lambda via Instance Profile / Execution Role (jamais de clés AWS dans le code)116- MFA obligatoire pour tous les comptes humains117- Rotation des access keys via AWS IAM Identity Center (SSO) plutôt que users IAM118- Activer AWS Organizations + SCPs pour bloquer les actions critiques au niveau compte119120### 7. Infrastructure as Code (CDK / CloudFormation)121122Préférer **AWS CDK v2** (TypeScript) en 2026 pour les nouveaux projets :123124```typescript125// CDK v2 — Bucket S3 avec versioning et chiffrement126import * as s3 from 'aws-cdk-lib/aws-s3';127128const bucket = new s3.Bucket(this, 'DataBucket', {129 versioned: true,130 encryption: s3.BucketEncryption.S3_MANAGED,131 blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,132 removalPolicy: cdk.RemovalPolicy.RETAIN,133});134```135136```bash137# Valider un template CloudFormation avant déploiement138aws cloudformation validate-template \139 --template-body file://template.yaml140141# Déploiement CDK avec confirmation manuelle142cdk deploy --require-approval broadening143```144145### 8. Monitoring et résilience146147Alarmes CloudWatch indispensables en production :148- CPU EC2/ECS > 80 % sur 5 min → notification SNS149- Lambda errors > 1 % → alerte immédiate150- RDS FreeStorageSpace < 10 GB → alerte151- ALB 5xx > 1 % → alerte152153```bash154# Créer une alarme sur les erreurs Lambda155aws cloudwatch put-metric-alarm \156 --alarm-name lambda-errors \157 --metric-name Errors \158 --namespace AWS/Lambda \159 --statistic Sum \160 --period 60 \161 --threshold 5 \162 --comparison-operator GreaterThanOrEqualToThreshold \163 --evaluation-periods 1 \164 --alarm-actions arn:aws:sns:eu-west-3:123456789:AlertsTopic165```166167Stratégie de résilience :168- **RTO < 1h** → Multi-AZ RDS + ALB + Auto Scaling169- **RTO < 15 min** → Aurora Global Database + Route 53 health checks170- **RTO < 1 min** → Active-Active multi-région (coût x3-5)171172---173174## Garde-fous et anti-patterns175176| Anti-pattern | Risque | Correctif |177|---|---|---|178| Credentials AWS en dur dans le code | Exposition accidentelle (git leak) | Variables d'env via Secrets Manager / Parameter Store |179| Security Group `0.0.0.0/0` en entrée | Surface d'attaque maximale | Restreindre au CIDR ou à un SG source |180| Un seul AZ en production | SPOF réseau AWS | Minimum 2 AZ, idéalement 3 |181| Lambda sans timeout configuré | Coût runaway, file bloquée | Timeout explicite (max 15 min) |182| S3 bucket ACL public | Fuite de données | `BlockPublicAccess` activé, S3 Object Ownership = Bucket owner enforced |183| Ignorer les Savings Plans | Surcoût 30-60 % On-Demand | Compute Savings Plan 1 an pour workloads stables |184| CDK/CFN sans drift detection | Infrastructure hors IaC | `aws cloudformation detect-stack-drift` en CI |185| CloudTrail désactivé | Pas d'audit trail | Activer dès le premier jour, conserver 365 jours |186187## Bonnes pratiques 2026188189- **Cost optimization** : AWS Cost Anomaly Detection + Budgets avec alertes ; Graviton4 (ARM) pour EC2/RDS = -40 % coût190- **Sécurité** : AWS Security Hub centralisé multi-comptes ; GuardDuty activé partout ; IMDSv2 obligatoire sur EC2191- **Observabilité** : CloudWatch Logs Insights pour queries ad-hoc ; AWS X-Ray ou OpenTelemetry pour le tracing distribué192- **Réseau** : AWS PrivateLink pour exposer des services sans Internet ; VPC Lattice (2024+) pour communication service-to-service193- **IaC** : CDK Aspects pour appliquer des politiques transverses (tags, chiffrement) à toute la stack automatiquement194195196## Communication Rules — MANDATORY197198- Ultra-concise. No filler, no preamble, no pleasantries.199- Never say "happy to help", "sure!", "great question", "let me", or similar.200- Tool first, talk second. Act before explaining.201- Result first. Lead with outcome, not process.202- Stop when done. No summary, no recap, no trailing commentary.203- No politeness wrappers. Direct and blunt.204- Minimum words. If one word works, do not use ten.205- No unsolicited explanations.206- No emoji unless asked.