View a markdown version of this page

Configuration de la réplication des tables S3 - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration de la réplication des tables S3

Vous pouvez configurer la réplication pour créer automatiquement des répliques de tables à partir d'une table source vers un maximum de cinq compartiments de tables de destination. La réplication peut être configurée au niveau du compartiment (s'appliquant à toutes les tables du compartiment) ou au niveau de la table (pour des tables spécifiques). Cette rubrique explique comment configurer la réplication à l'aide de la console Amazon S3 ou de l'interface de ligne de AWS commande (AWS CLI).

Pour plus d'informations sur la configuration de la réplication, consultez les rubriques suivantes.

Conditions préalables à la configuration de la réplication

Avant de configurer la réplication, assurez-vous de disposer des éléments suivants :

Ressources requises

  • Compartiment de tables source  : compartiment de tables contenant la ou les tables que vous souhaitez répliquer

  • Seaux de tables de destination  : un ou plusieurs compartiments de tables dans lesquels vous souhaitez dupliquer vos tables (jusqu'à 5 compartiments de tables de destination)

  • Table (s) source (s)  : tables existantes dans votre compartiment de tables source à répliquer

  • Rôle (s) IAM  : rôle IAM qui accorde à Amazon S3 les autorisations nécessaires pour répliquer des tables en votre nom

Autorisations requises

L'identité IAM que vous utilisez pour configurer la réplication doit disposer des autorisations suivantes :

Pour la réplication au niveau du bucket :
  • s3tables:PutTableBucketReplicationsur le bucket de la table source

  • s3tables:GetTableBucketReplicationsur le bucket de la table source

  • iam:PassRolepour le rôle IAM de réplication

Pour la réplication au niveau de la table :
  • s3tables:PutTableReplicationsur la table source

  • s3tables:GetTableReplicationsur la table source

  • iam:PassRolepour le rôle IAM de réplication

Pour la réplication entre comptes :
  • Autorisations issues de la politique de bucket du compte de destination

Exigences supplémentaires pour la réplication entre comptes

Si vos compartiments de table source et de destination se trouvent dans AWS des comptes différents, vous devez également :

  • Une politique de compartiment sur le compartiment de tables de destination qui accorde au compte source les autorisations nécessaires pour répliquer les tables

  • L'ID du compte de destination et le nom de ressource Amazon (ARN) du compartiment de tables

Exigences supplémentaires pour les tables chiffrées

Si vous souhaitez chiffrer des tables de répliques avec AWS KMS :

  • Une clé KMS dans la région de destination

  • Autorisations d'utilisation de la clé KMS dans votre rôle de réplication IAM

  • Une politique de clé KMS qui permet au rôle de réplication de chiffrer les données

Comprendre les configurations de réplication

Une configuration de réplication définit la manière dont Amazon S3 réplique les tables à partir de votre compartiment de tables source. La réplication peut être configurée à deux niveaux :

Bucket-level réplication

Une configuration de réplication au niveau du bucket s'applique à toutes les tables du bucket de tables source. Lorsque vous configurez la réplication au niveau du compartiment, Amazon S3 réplique automatiquement toutes les tables existantes et toutes les nouvelles tables créées dans le compartiment.

Utilisez la réplication au niveau du bucket lorsque :

  • Vous souhaitez répliquer toutes les tables d'un bucket

  • Vous souhaitez un comportement de réplication cohérent sur toutes les tables

  • Vous souhaitez simplifier la gestion en ayant une configuration unique

Table-level réplication

Une configuration de réplication au niveau de la table s'applique à une table spécifique. Table-levelles configurations remplacent les configurations au niveau du compartiment pour cette table spécifique.

Utilisez la réplication au niveau de la table dans les cas suivants :

  • Vous souhaitez répliquer uniquement des tables spécifiques

  • Vous avez besoin de destinations de réplication différentes pour les différentes tables

  • Vous souhaitez modifier une configuration au niveau du bucket pour certaines tables

Éléments de configuration de réplication

Chaque configuration de réplication contient :

  • Rôle IAM  : rôle assumé par Amazon S3 pour effectuer les opérations de réplication

  • Règles  : une ou plusieurs règles de réplication (limitées à une règle au lancement). Chaque règle contient :

    • Destinations — Liste des ARN des compartiments de destination dans le tableau des destinations (jusqu'à 5 destinations)

    • État  : indique si la règle est activée ou désactivée

  • Jeton de version  : jeton utilisé pour éviter les conflits d'écriture lors de la mise à jour des configurations

Choisir entre la réplication au niveau du bucket et celle au niveau de la table

Ordre de priorité de configuration

Lorsque des configurations au niveau du compartiment et au niveau de la table existent :

  • Table-level la configuration est prioritaire pour cette table spécifique.

  • Les autres tableaux suivent la configuration au niveau du compartiment.

Configuration de la réplication à l'aide de la console Amazon S3

Cette procédure explique comment configurer la réplication à l'aide de la console Amazon S3.

Cette procédure explique comment créer une configuration de réplication de bucket de tables à l'aide de la console Amazon S3. Une configuration de réplication de compartiment de tables s'applique à toutes les tables du compartiment de tables source.

  1. Connectez-vous à Console de gestion AWS et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation, choisissez Table buckets.

  3. Dans la liste des compartiments de tables, choisissez le nom du compartiment de tables pour lequel vous souhaitez configurer la réplication.

  4. Choisissez l’onglet Gestion.

  5. Dans la section Configuration de la réplication du compartiment de tables, choisissez Créer une configuration de réplication du compartiment de tables.

  6. Dans la section Destination, configurez vos destinations de réplication :

    1. Dans le champ ARN du compartiment de table, entrez l'ARN du compartiment de table de destination. Le format est : arn:aws:s3tables:region:account-id:bucket/table-bucket-name

      Vous pouvez également choisir Browse S3 pour sélectionner un compartiment de tables dans votre compte.

    2. (Facultatif) Pour ajouter des destinations supplémentaires, choisissez Ajouter une destination. Vous pouvez ajouter jusqu'à 4 tables supplémentaires pour un total de 5 destinations.

  7. Dans la section Rôle IAM, configurez le rôle de réplication :

    1. Pour la méthode de sélection des rôles IAM, choisissez l'une des options suivantes :

      • Créer un nouveau rôle IAM — Amazon S3 crée un nouveau rôle avec les autorisations nécessaires à la réplication.

      • Choisissez parmi les rôles IAM existants  : sélectionnez un rôle existant qui possède les autorisations de réplication requises.

      • Entrez l'ARN du rôle IAM — Entrez manuellement l'ARN d'un rôle IAM existant.

    2. Si vous avez choisi Choisir parmi les rôles IAM existants, sélectionnez un rôle dans la liste déroulante des rôles IAM.

    3. (Facultatif) Choisissez Afficher pour consulter les autorisations du rôle sélectionné dans la console IAM.

  8. Choisissez Créer une configuration de réplication.

    Une fois que vous avez créé la configuration de réplication, Amazon S3 entame le processus de remplissage initial. Vous pouvez surveiller l'état de la réplication dans la section État de réplication de la table, qui affiche des informations sur chaque destination, notamment l'état de la réplication, l'ARN de la table de destination et les dernières métadonnées répliquées.

Cette procédure explique comment créer une configuration de réplication au niveau de la table à l'aide de la console Amazon S3. Une configuration de réplication de table s'applique à une table spécifique et remplace toute configuration de réplication au niveau du compartiment pour cette table.

  1. Connectez-vous à Console de gestion AWS et ouvrez la console Amazon S3 à l'adresse https://console.aws.amazon.com/s3/.

  2. Dans le volet de navigation, choisissez Table buckets.

  3. Dans la liste des compartiments de tables, choisissez le nom du compartiment de tables qui contient la table que vous souhaitez répliquer.

  4. Choisissez l'onglet Tables.

  5. Dans la liste Tables, choisissez le nom de la table que vous souhaitez répliquer.

  6. Choisissez l’onglet Gestion.

  7. Dans la section Configuration de réplication de table, choisissez Créer une configuration de réplication de table.

  8. Dans la section Destination, configurez vos destinations de réplication :

    1. Dans le champ ARN du compartiment de table, entrez l'ARN du compartiment de table de destination. Le format est : arn:aws:s3tables:region:account-id:bucket/table-bucket-name

      Vous pouvez également choisir Browse S3 pour sélectionner un compartiment de tables dans votre compte.

    2. (Facultatif) Pour ajouter des destinations supplémentaires, choisissez Ajouter une destination. Vous pouvez ajouter jusqu'à 4 tables supplémentaires pour un total de 5 destinations.

  9. Dans la section Rôle IAM, configurez le rôle de réplication :

    1. Pour la méthode de sélection des rôles IAM, choisissez l'une des options suivantes :

      • Créer un nouveau rôle IAM — Amazon S3 crée un nouveau rôle avec les autorisations nécessaires à la réplication.

      • Choisissez parmi les rôles IAM existants  : sélectionnez un rôle existant qui possède les autorisations de réplication requises.

      • Entrez l'ARN du rôle IAM — Entrez manuellement l'ARN d'un rôle IAM existant.

    2. Si vous avez choisi Choisir parmi les rôles IAM existants, sélectionnez un rôle dans la liste des rôles IAM.

    3. (Facultatif) Choisissez Afficher pour consulter les autorisations du rôle sélectionné dans la console IAM.

  10. Choisissez Créer une configuration de réplication.

Que se passera-t-il ensuite ?

Après avoir créé la configuration de réplication :

  • Amazon S3 commence le processus de remplissage initial en créant des tables de répliques dans chaque compartiment de destination

  • Le statut de réplication passe à Réplication une fois que le remblayage commence.

  • Vous pouvez suivre la progression de la réplication dans l'onglet Gestion

  • Le temps de réplication initial dépend de la taille de votre table source

Configuration de la réplication à l'aide du AWS CLI

Cette procédure vous montre comment configurer la réplication à l'aide du AWS CLI. Remplacez les identifiants de compte, les régions et les noms des compartiments par vos valeurs réelles. Ajoutez tous les compartiments de destination aux autorisations.

Étape 1 : Création d'un rôle IAM pour la réplication

Tout d'abord, créez un rôle IAM qu'Amazon S3 peut assumer pour répliquer vos tables.

  1. Créez un document de politique de confiance qui permet à S3 Tables d'assumer ce rôle. Enregistrez ceci sous le nom trust-policy.json :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "replication.s3tables.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Créez le rôle IAM :

    aws iam create-role \ --role-name S3TablesReplicationRole \ --assume-role-policy-document file://trust-policy.json \ --description "Role for S3 Tables replication"
  3. Créez une politique d'autorisations qui accorde des autorisations de réplication. Enregistrez ceci sous le nom replication-permissions.json :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3tables:GetTable", "s3tables:GetTableMetadataLocation", "s3tables:GetTableMaintenanceConfiguration", "s3tables:GetTableData" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-source/table/*" }, { "Effect": "Allow", "Action": [ "s3tables:ListTables" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-source" }, { "Effect": "Allow", "Action": [ "s3tables:CreateTable", "s3tables:CreateNamespace" ], "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-destination" }, { "Effect": "Allow", "Action": [ "s3tables:PutTableData", "s3tables:GetTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-destination/table/*" } ] }
  4. Attachez la politique d'autorisations au rôle :

    aws iam put-role-policy \ --role-name S3TablesReplicationRole \ --policy-name S3TablesReplicationPermissions \ --policy-document file://replication-permissions.json
    Note

    La politique d'autorisations utilise deux étendues de ressources car les actions s'opèrent à des niveaux différents. CreateTableet CreateNamespace sont des opérations au niveau du bucket qui créent des ressources dans le bucket. Elles utilisent donc l'ARN du bucket sans. /table/* PutTableData, GetTableDataUpdateTableMetadataLocation, et PutTableMaintenanceConfiguration opèrent sur des tables existantes, de sorte qu'ils utilisent l'ARN du bucket avec/table/*.

  5. (Facultatif) Si vous utilisez le chiffrement KMS, ajoutez des autorisations KMS à votre politique :

    { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey", "kms:Encrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1" ] }

(Cross-account uniquement) Étape 2 : Configuration de la politique du compartiment de destination

Si vous effectuez la réplication vers un autre AWS compte, le compte de destination doit accorder des autorisations au compte source.

  1. Dans le compte de destination, créez une politique de compartiment pour le compartiment de table de destination. Enregistrez ceci sous le nom destination-bucket-policy.json :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/S3TablesReplicationRole" }, "Action": [ "s3tables:PutTableData", "s3tables:GetTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-cross-account-destination/table/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/S3TablesReplicationRole" }, "Action": [ "s3tables:CreateTable", "s3tables:CreateNamespace" ], "Resource": "arn:aws:s3tables:us-east-2:444455556666:bucket/amzn-s3-demo-table-bucket-cross-account-destination" } ] }
  2. Appliquez la politique à l'aide de l'API S3 Tables :

    aws s3tables put-table-bucket-policy \ --table-bucket-arn arn:aws:s3tables:us-west-2:444455556666:bucket/amzn-s3-demo-table-bucket-cross-account-destination \ --resource-policy file://destination-bucket-policy.json \ --profile destination-account
  3. Modifiez votre clé KMS source pour permettre la réplication et la maintenance des tables S3 :

    { "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "allow replication to decrypt", "Effect": "Allow", "Principal": { "AWS": "replication_role_arn" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID" }, { "Sid": "allow maintenance", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/SOURCE-KEY-ID" } ] }
  4. De même, ajoutez des autorisations dans votre politique de clé KMS de destination

    { "Version": "2012-10-17", "Id": "key-policy-3", "Statement": [ { "Sid": "allow maintenance", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1" }, { "Sid": "allow replication to encrypt/decrypt", "Effect": "Allow", "Principal": { "AWS": "replication_role_arn" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:444455556666:key/DESTINATION-KEY-ID-1" } ]

Étape 3 : Création d'une configuration de réplication

Vous pouvez utiliser le AWS CLI pour créer une configuration de réplication au niveau du compartiment de table ou au niveau de la table. Pour plus d’informations, consultez les procédures suivantes.

Utilisez cette approche pour répliquer toutes les tables d'un bucket.

  1. Créez un fichier de configuration de réplication. Enregistrez ceci sous le nom bucket-replication-config.json :

    Exemple: destination unique sur le même compte
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr" } ] } ] }
    Exemple: destinations multiples dans toutes les régions
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr" }, { "destinationTableBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu" }, { "destinationTableBucketARN": "arn:aws:s3tables:ap-south-1:111122223333:bucket/amzn-s3-demo-table-bucket-apac" } ] } ] }
    Exemple: Cross-account réplication
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-east-1:444455556666:bucket/amzn-s3-demo-table-bucket-partner" } ] } ] }
  2. Appliquez la configuration de réplication au niveau du bucket :

    aws s3tables put-table-bucket-replication \ --table-bucket-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket \ --configuration file://bucket-replication-config.json

    Sortie attendue :

    { "versionToken": "3HL4kqtJl40Nr8X8gdRQBpUMLUo", "status": "Success" }

Utilisez cette approche pour répliquer des tables spécifiques ou pour annuler la réplication au niveau du bucket.

  1. Créez un fichier de configuration de réplication. Enregistrez ceci sous le nom table-replication-config.json :

    Exemple: réplication d'une seule table
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-analytics-bucket" } ] } ] }
    Exemple: Tableau avec plusieurs destinations
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr" }, { "destinationTableBucketARN": "arn:aws:s3tables:eu-west-1:111122223333:bucket/amzn-s3-demo-table-bucket-eu" } ] } ] }
  2. Appliquez la configuration de réplication au niveau de la table :

    aws s3tables put-table-replication \ --table-arn arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/amzn-s3-demo-table-bucket-sales-data \ --configuration file://table-replication-config.json

    Sortie attendue :

    { "versionToken": "xT2LZkFZ0UuTC2h8XqtGLx2Ak6M", "status": "Success" }