PD-6 — Rétrospective¶
1. Contexte¶
| Champ | Valeur |
|---|---|
| Story ID | PD-6 |
| Titre | Cross-Region Replication Paris → Frankfurt |
| Domaine | storage |
| Projet | infra |
| Date complétion | 2025-01-XX |
| Verdict | ACCEPTÉ AVEC RÉSERVES |
2. Métriques¶
| Métrique | Valeur |
|---|---|
| Écarts majeurs | 1 (SSE-KMS non implémenté) |
| Écarts mineurs | 2 |
| Points fluides | 16 |
| Points difficiles | 5 |
3. Learnings clés¶
-
S3 Object Lock COMPLIANCE + CRR = solution WORM complète : Glacier Vault Lock initialement prévu s'est révélé redondant. Architecture plus simple.
-
Delete marker replication doit être explicitement désactivée pour WORM : Par défaut CRR peut répliquer les delete markers, compromettant l'immutabilité.
-
RTC (Replication Time Control) essentiel pour conformité SLA : Le SLA 15 minutes garanti est critique pour résilience probatoire. Fonctionnalité payante mais justifiée.
-
Le logging sur bucket destination CRR est optionnel : Le bucket source capture toutes les écritures. Alerte SonarQube S6258 documentée comme intentionnelle.
-
SSE-KMS CRR nécessite configuration additionnelle significative :
replica_kms_key_id, permissions KMS cross-region, blocsse_kms_encrypted_objects. SSE-S3 simplifie mais ne satisfait pas exigence clés distinctes.
4. Patterns applicables¶
Nouveau pattern : CRR WORM avec RTC¶
resource "aws_s3_bucket_replication_configuration" "crr" {
bucket = aws_s3_bucket.paris.id
role = aws_iam_role.crr.arn
rule {
id = "crr-paris-to-frankfurt"
status = "Enabled"
# CRITIQUE: Ne pas répliquer les suppressions
delete_marker_replication {
status = "Disabled"
}
# SLA 15 minutes garanti
destination {
bucket = aws_s3_bucket.frankfurt.arn
storage_class = "DEEP_ARCHIVE"
replication_time {
status = "Enabled"
time { minutes = 15 }
}
metrics {
status = "Enabled"
event_threshold { minutes = 15 }
}
}
}
}
Pattern confirmé : IAM CRR cross-region¶
# Permissions Object Lock pour réplication
data "aws_iam_policy_document" "crr" {
statement {
actions = [
"s3:GetReplicationConfiguration",
"s3:ListBucket",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:GetObjectVersionTagging",
"s3:PutObjectRetention", # Object Lock
"s3:PutObjectLegalHold", # Legal Hold
]
resources = [
aws_s3_bucket.paris.arn,
"${aws_s3_bucket.paris.arn}/*",
aws_s3_bucket.frankfurt.arn,
"${aws_s3_bucket.frankfurt.arn}/*",
]
}
}
5. Signal CLAUDE.md¶
Priorité haute : CRR WORM avec delete_marker_replication disabled.
### AWS S3 — CRR pour WORM (2026-02-XX)
**CRITIQUE** : Désactiver la réplication des delete markers pour conformité WORM.
```hcl
delete_marker_replication {
status = "Disabled" # OBLIGATOIRE pour WORM
}
Pourquoi : Si Enabled, une suppression sur source propage un delete marker sur destination, compromettant l'immutabilité.
RTC (Replication Time Control) : Activer pour SLA 15min garanti (payant mais requis pour conformité). ```
6. Conclusion¶
PD-6 a livré la réplication cross-region Paris → Frankfurt avec Object Lock COMPLIANCE préservé, RTC 15 minutes, et delete marker replication désactivée. L'écart majeur (SSE-S3 vs SSE-KMS) simplifie l'architecture mais ne satisfait pas l'exigence de clés distinctes par région. Le pattern CRR WORM est réutilisable pour toute architecture multi-région probatoire.
Rétrospective générée 2026-02-19 (Étape 10 batch storage)