# 03. S3 Replication

La réplication S3 est un mécanisme **asynchrone** et **automatique** permettant de copier des objets d'un bucket source vers un ou plusieurs buckets de destination.

---

#### **1. Pourquoi utiliser la réplication ? (Business &amp; Architecture Cases)**

En architecture cloud, on ne duplique pas la donnée sans une excellente raison réglementaire ou technique. Voici la logique derrière chaque cas d'usage :

- **Plan de reprise d'activité (Disaster Recovery) :** Si une région AWS entière devenait indisponible (scénario catastrophe), l'application doit pouvoir basculer sur une copie des données opérationnelles située dans une autre région géographique.
- **Conformité légale et souveraineté :** Certaines industries (banque, santé) obligent légalement à stocker des copies de sauvegarde à une distance minimale du centre de données principal, ou à l'inverse, à confiner strictement les données dans les frontières d'un même pays.
- **Sécurité absolue (Isolation des comptes) :** Pour se prémunir d'un ransomware ou d'un employé malveillant qui obtiendrait les accès administrateur du compte principal, on réplique les données vers un bucket appartenant à un **autre compte AWS** totalement isolé, avec des clés d'accès différentes.
- **Optimisation des performances (Latence) :** Si une entreprise a son siège à Paris mais possède une application ultra-utilisée par des clients à Singapour, répliquer les fichiers multimédias au plus près de ces utilisateurs réduit considérablement le temps de téléchargement.

---

#### **2. Les deux types de Réplication**

AWS sépare la réplication en fonction des frontières géographiques des infrastructures :

##### CRR (Cross-Region Replication)

- **Définition :** Source et destination sont dans des **Régions AWS différentes** (ex: `eu-west-3` Paris vers `us-east-1` N. Virginia).
- **Logique :** Répond aux besoins de **Disaster Recovery** mondial et de **réduction de latence** géographique.

##### SRR (Same-Region Replication)

- **Définition :** Source et destination sont dans la **même Région AWS**.
- **Logique :** Utilisé pour l'**agrégation de logs** (centraliser les logs de 50 buckets applicatifs d'une même région vers un seul bucket d'analyse) ou pour respecter les contraintes strictes de souveraineté des données qui interdisent le transfert transfrontalier.

---

#### **3. Les Prérequis Techniques (Requirements) ⚠️ *Point chaud de l'examen***

Si une question de l'examen mentionne que la réplication "ne fonctionne pas", la cause se trouve presque toujours dans le non-respect d'un de ces critères :

- **<span style="background-color: rgb(251, 238, 184);">Le Versioning est obligatoire</span> :** Il doit être explicitement activé sur le bucket source **ET** sur le bucket destination. 
    - *Pourquoi ?* Sans versioning, si deux objets portent le même nom, l'un écraserait l'autre de manière asynchrone, créant des conflits de données impossibles à résoudre automatiquement pour S3.
- **Le Rôle d'exécution IAM :** S3 doit recevoir l'autorisation d'agir en ton nom. 
    - *Pourquoi ?* Par défaut, les services AWS sont isolés. S3 a besoin d'un rôle IAM pour obtenir le droit de lire (`s3:GetObjectVersion`) dans la source et d'écrire (`s3:ReplicateObject`) dans la destination.
- **La Bucket Policy de destination (Cas multi-comptes) :** Si la destination est dans un compte AWS B, le propriétaire du compte B doit ajouter une politique de bucket autorisant explicitement le rôle IAM du compte A à déposer des objets.

---

#### **4. Fonctionnement logique &amp; Options Avancées**

Comprendre le comportement par défaut de S3 permet d'éviter les pièges sur les options spécifiques.

##### **Sans** S3 Batch Replication (par défaut)

<span style="background-color: rgb(251, 238, 184);">Par défaut, la réplication ne regarde pas le passé.</span> Dès que la règle est activée, **seuls les nouveaux objets** (ou les nouvelles versions d'objets existants) sont répliqués.

##### **Avec** S3 Batch Replication

- **Pourquoi ?** Si tu as déjà 10 To de données historiques dans un bucket et que tu actives la réplication aujourd'hui, ces 10 To ne sont pas répliqués.
- **Comment ?** Tu dois utiliser **S3 Batch Replication** (qui s'appuie sur S3 Batch Operations) pour scanner le bucket et répliquer de manière rétroactive les objets préexistants.