DEV Community

Franklin Kabisayi
Franklin Kabisayi

Posted on

Ma première réplication AmazonS3 : comment la réaliser en 5 minutes !

A l'heure de la rédaction de cette article, je participe au programme AWS re/Start offert par Orange RDC en partenariat avec AWS. Pour continuer notre plonger dans le cloud, il m'a été demandé de réaliser un exercice : Configurez une réplication entre deux buckets S3 situés dans deux Availability Zones différentes.

Pour commencer, décrivons le principal service de notre problème, Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets qui offre une capacité de mise à l'échelle, une disponibilité des données, une sécurité et des performances de pointe. Amazon S3 stocke les données en tant qu'objets dans des Buckets. Un Objet est un fichier et toutes les métadonnées qui le décrivent. Un Bucket est un conteneur pour les objets.

Pour stocker vos données dans Amazon S3, vous devez d'abord créer un bucket et spécifier un nom de bucket et une région AWS. Ensuite, vous chargez vos données dans ce bucket en tant qu'objets dans Amazon S3. Chaque objet possède une clé (ou un nom de clé), qui correspond à l'identifiant unique de l'objet dans le bucket.

S3 fournit des fonctionnalités que vous pouvez configurer en fonction de votre cas d'utilisation spécifique. Par exemple, vous pouvez utiliser la gestion des versions S3 pour conserver plusieurs versions d'un objet dans le même bucket, ce qui vous permet de restaurer des objets supprimés ou remplacés accidentellement. Les buckets et les objets qu'ils contiennent sont privés et ne sont accessibles qu'avec des autorisations d'accès explicitement accordées. Vous pouvez utiliser des politiques de buckets, des politiques de Gestion des identités et des accès AWS (IAM), des points d'accès S3 et des listes de contrôle d'accès (ACL) pour gérer l'accès.

Maintenant le contexte est connu, posons nous une question : Pourquoi mettre en place une réplication ?

De prime abord, il faut savoir qu'une réplication est un processus de partage d'informations pour assurer la cohérence de données entre plusieurs sources de données redondantes, pour améliorer la fiabilité, la tolérance aux pannes, ou la disponibilité. On parle de réplication de données si les mêmes données sont dupliquées sur plusieurs périphériques.

La réplication n'est pas à confondre avec une sauvegarde : les données sauvegardées ne changent pas dans le temps, reflétant un état fixe des données, tandis que les données répliquées évoluent sans cesse à mesure que les données sources changent.

Ainsi pour répondre à notre interrogation partons de la description d'une réplication. 

Processus de partage d'informations pour assurer la cohérence de données entre plusieurs sources de données redondantes, ici il ne s'agit de faire de la redondance en se limitant à la copie des données mais en copiant également les états et les informations des données au moment de leur ajout ou modification dans un stockage.

Pour améliorer la fiabilité, la tolérance aux pannes, ou la disponibilité. Cet aspect met l'accent sur le fait que les données répliquées doivent restées cohérentes avec le système qui les a produites. Ce point est à l'origine de cet énoncé : Les données sauvegardées ne changent pas dans le temps, reflétant un état fixe des données, tandis que les données répliquées évoluent sans cesse à mesure que les données sources changent.

Malgré cela une personne ayant été au contact d'Amazon S3 pourrait dire : Pourquoi répliquer un S3 alors qu'il est nativement répliqué ?
Effectivement, un S3 est répliqué nativement dans une même région AWS notion appelée SRR (Same-Region Replication). Mais supposons que dans un cas extrême qu'une région AWS tout entière tombe en panne pour une raison exceptionnelle telles qu'une catastrophe météorologique ou géologique (typhon, tsunami, etc…) ou un conflit armé comment récupérer les donnés étant donné que les datacenters sont endommagés physiquement.

Cela qu'intervient CRR (Cross-Region Replication), que j'ai choisi de désigner comme l'assurance (CRR) de l'assurance (SRR), car cette mise en place garantie une haute disponibilité et une tolérance jamais atteinte dans l'histoire de l'informatique, le fameux 99,999999999% de durabilité de données.

Etant donné que tout les contours sont connus : mettons en place notre réplication. Cette tâche réalisable en moins de 5 minutes se résume en 3 étapes : 

  1. Créer deux buckets S3 (la source et la destination) situés chacun dans une région différente, 
  2. Créer un ensemble de permissions qui permettrons aux deux buckets d'interagir et un Role qui 
  3. Créer une règle de réplication et tester que la réplication fonctionne.

Allons-y avec enthousiasme !!

Nota : Pour plus de cohérence avec le cloud computing et l'informatique en général nous utiliserons la console AWS en Anglais.

Créer deux buckets S3 situés dans deux régions chacun

  • Allez dans la barre de recherche situé dans la console, tapez "S3" et cliquez sur le premier résultat de la recherche.

  • Vous devriez tombé sur la page d'accueil du service Amazon S3 et apercevoir un bouton en jaune où il est écrit "Create bucket", cliquer dessus et atterrissez sur la page de création de bucket.

  • Dans le panneau de configuration, "General configuration", vous verrez en premier la région AWS dans laquelle sera créer votre bucket S3 (votre région actuelle), suivi d'un label "Bucket type" par défaut à l'option "General purpose", ensuite vient la case où attribuer le nom du bucket, "Bucket name", attribuez un nom en respectant les conventions d'AWS sur la nomenclature, pour l'exercice je vous conseil "aws-myfirst-s3-bucket-source" et pour finir, ignorez le tag "Copy settings from existing bucket - optional" car nous n'allons pas importer les configurations d'un bucket existant.

  • Pour les deux groupes de configuration "Object Ownership" et "Block Public Access settings for this bucket", vous laisserez les confgurations par défaut que sont "ACLs disabled (recommended)" et "Block all public access"

  • Arrivé à la configuration "Bucket configuration" changé la configuration de "disable" à "enable" qui permettra de détecter les évolutions des fichiers dans les buckets.

  • Ignorez les restes des configurations et cliquez sur le bouton en jaune "Create bucket".

Nota: Pour le second bucket, changez de région AWS puis suivez le même processus et nommez le deuxième bucket "aws-myfirst-s3-bucket-destination".

Créer un ensemble de permissions qui permettrons aux deux buckets d'interagir

  • Allez dans la barre de recherche situé dans la console, tapez "IAM" et cliquez sur le premier résultat de la recherche.

Le service AWS Identity and Access Management (IAM) est utilisé pour la gestion des identités et des accès AWS pour, gérer et mettre à l'échelle l'accès aux charges de travail et à la main-d'œuvre en toute sécurité afin d'optimiser votre agilité et votre innovation dans AWS. Ici nous allons créer un ensemble de permissions appelé "Policy" et un "Role" a qui sera attribuer cette "Policy".

  • Une fois arrivé au "IAM Dashboard", allez dans le menu latéral du service IAM, cliquez sur "Policies". Vous tombérrez dans une nouvelle page (où sont listé les Permissions par défaut de AWS) et cliquez sur le bouton "Create policy", vous atterrirez dans la partie visuel des spécifications des permissions.

  • Dans la page de création de permissions, sectionnez le service S3 dans le panneau "Select a service". Puis déroulez le tag, "Actions allowed" Et allouez les actions "ListBucket", situé dans le groupe d'actions de "List" et "GetReplicationConfiguration", situé dans le groupe d'actions "Read"

  • Ensuite déroulez le tag, "Resources", puis déterminer le type de ressources sur lesquelles peuvent être appliquer ces actions en cliquant sur "add ARNs" au niveau de "bucket" pas de "end point".

  • Une fois la boite de dialogue "Specify ARNs" ouvert, notez-y le nom de votre bucket source, en l'occurence "aws-myfirst-s3-bucket-source" au niveau de "Resource object name" et valider en cliquant sur "Add ARNs".

  • Cliquez, sur "Add more permissions" pour attribuez les actions, "GetObjectVersionForReplication", "GetObjectVersionAcl" et "GetObjectVersionTagging" tous trois dans le groupe "Read". Puis passez à la spécification de l'ARN en métant le nom du bucket source "aws-myfirst-s3-bucket-source" au niveau de "Resource bucket name" et en mettant "*" sur le "Resource object name".

Désignation de la ressource

  • Pour le dernier ensemble d'actions, on clique de nouveau sur "Add more permissions", on sélectionne encore S3 puis on alloue les actions "ReplicateObject", "ReplicateDelete", dans "Write", "ReplicateTags" dans "Tagging" ensuite on determine la source dans object en cliquant sur "Add ARNs". Puis passez à la spécification de l'ARN en métant le nom du bucket destination "aws-myfirst-s3-bucket-destination" au niveau de "Resource bucket name" et en méttant "*" sur le "Resource object name".

Désignation de la ressource

  • Après cette configuration, cliquez sur "next", pour finaliser la création de la "Policies". Donné un nom à votre policy pour une cohérence dans la nomenclature, nommez-le "my-first-replication-policy", puis cliquez sur "Create policy".

Créer une règle de réplication et tester que la réplication fonctionne.

Nous avons bien avancé, a présent créons le role.

  • Allez dans le menu latéral du service IAM, cliquez sur "Roles" juste au-dessus de "Policies". Arrivez dans la nouvelle page (où sont listé les Roles par défaut de AWS) et cliquez sur le bouton "Create role", vous atterrirez dans la page de création de Role.

  • Côté "Trusted entity type", vous laisserez comme type d'entité "AWS Service", étant donné que nous appliquerons notre role à un bucket S3, dans "Use case" vous sélectionnerez tout simplement "S3". Puis cliquez sur "next".

  • Une fois dans "Add permissions", allez dans la barre de recherche situé juste en-dessous de "Permissions policies" et tapez le nom de la Policy que nous avons créer toute à l'heure, "my-first-replication-policy", cochez la case juste à côté et cliquez sur "next" pour passer à la finalisation. A l'étape qui suit, attribuez un nom au role, "my-first-replication-role" tout en gardant de la cohérence dans la nomenclature puis cliquer sur "Create role".

  • Retournez dans le service S3 grâce à la barre de recherche, vous tomberez sur le dashboard du service S3 et vous verrez les buckets S3 que nous avons créé au début.

  • Cliquez sur le nom de votre bucket S3 source et allez dans l'onglet "Management". Rendez-vous jusqu'au panneau, "Replication rules", cliquez sur "Create replication rule". Dans le panneau "Create replication configuration", attribuez un nom, en suivant notre nomenclature, "my-first-replication-rule" puis allez dans le panneau "Source bucket", sélectionnez "Apply to all objects in the bucket" pour permettre la réplication de tous les objets contenus dans le bucket source.

  • Dans "Destination", vérifiez que l'option par défaut est "Choose a bucket in this account" et recherchez votre bucket S3 destination, "aws-myfirst-s3-bucket-destination",en cliquant sur "Browse S3". Dans "IAM role", vérifier que l'option est "Choose from existing IAM roles" et sélectionnez notre Role précédemment crée "my-first-replication-role", puis enregistrez en cliquant sur "Save".

  • Vous devriez voir s'afficher ! Assurez-vous que "Replicate existing objects" sur l'option "No, do not replicate existing objects" et cliquez sur "Submit" car nous venons de créer notre bucket S3 source.

  • Pour tester, allons dans le bucket S3 source, cliquons sur le nom "aws-myfirst-s3-bucket-source" puis cliquons ensuite sur le bouton "Upload". A l'affichage de la page d'upload, allez dans votre mémoire sélectionner un fichier puis glisser et déposer dans la zone "Drag and drop files".

  • Allez dans le bucket S3 destination, "aws-myfirst-s3-bucket-destination", est vérifier que le fichier uploadé a été répliqué.

Ta réplication est maintenant configuré !!

Merci d'avoir tenu jusqu'ici, c'était là mon premier article, laissez vos impressions dans les commentaires !

A très bientot !

Top comments (0)