Passer au contenu

Pourquoi mes objets Amazon S3 ne se répliquent-ils pas lorsque je configure la réplication entre mes compartiments ?

Lecture de 10 minute(s)
0

J'ai configuré la réplication entre mes compartiments à usage général Amazon Simple Storage Service (Amazon S3). Cependant, les objets ne sont pas répliqués vers le compartiment de destination situé dans la même région AWS ou dans une région différente.

Brève description

Remarque : Vous ne pouvez utiliser la réplication Amazon S3 que pour les compartiments à usage général. Vous ne pouvez pas utiliser la réplication pour les compartiments de répertoire et les compartiments de table.

Pour résoudre les problèmes liés aux objets Amazon S3 qui ne se répliquent pas pour la réplication interrégionale (CRR) ou la réplication dans la même région (SRR), vérifiez les autorisations de votre compartiment de destination. Vérifiez également les paramètres d'accès public et les paramètres de propriété des compartiments.

Une fois les problèmes à l'origine de l'échec de la réplication résolus, il se peut que certains objets du compartiment source ne se répliquent toujours pas. Par défaut, la réplication Amazon S3 ne réplique pas les objets existants ou les objets dont le statut de réplication est ÉCHEC ou RÉPLICA. Pour vérifier les statut de réplication des objets, consultez la section Comment puis-je afficher les objets dont la réplication d'un compartiment Amazon S3 dans un autre a échoué ? Pour ces objets, utilisez la réplication par lots S3.

Résolution

Identifier les problèmes de configuration de la réplication

Chargez un objet dans le compartiment source pour tester la réplication après chaque modification de configuration. Il est recommandé d'apporter une seule modification de configuration à la fois afin d'identifier tout problème de configuration de la réplication.

Activez également la notification de type d'événement S3:Replication:OperationFailedReplication pour déterminer la cause de l'échec.

Accorder les autorisations Amazon S3 minimales

Vérifiez que le rôle Gestion des identités et des accès AWS (AWS IAM) que vous avez utilisé dans la règle de réplication dispose des autorisations appropriées. Si les compartiments source et de destination se trouvent sur des comptes AWS différents, vérifiez que la stratégie de compartiment du compte de destination accorde des autorisations au rôle de réplication. L’exemple de politique IAM suivant est doté des autorisations minimales requises pour la réplication :

{    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetReplicationConfiguration",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::SourceBucket"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                "s3:GetObjectVersionTagging"
            ],
            "Resource": [
                "arn:aws:s3:::SourceBucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateTags"
            ],
            "Resource": "arn:aws:s3:::DestinationBucket/*"
        }
    ]
}

Remarque : Remplacez SourceBucket par votre compartiment source et DestinationBucket par votre compartiment de destination.

En fonction des options de règles de réplication, il se peut que vous deviez accorder des autorisations supplémentaires.

Le rôle IAM doit être doté d'une stratégie d'approbation qui permet à Amazon S3 d'assumer le rôle de répliquer des objets. Exemple de politique d’approbation :

{    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

Accorder des autorisations Amazon S3 supplémentaires

Si vous définissez la règle de réplication sur Modifier la propriété de l'objet au propriétaire du compartiment de destination, vous devez configurer des autorisations supplémentaires.

Remarque : Si la propriété d’objets du compartiment de destination est Propriétaire du compartiment appliqué, il n'est pas nécessaire de modifier la propriété de l'objet au propriétaire du compartiment de destination dans la règle de réplication. La modification intervient par défaut.

Pour accorder au rôle IAM les autorisations s3:ObjectOwnerOverrideToBucketOwner, ajoutez l'autorisation suivante à la politique d'objet Amazon S3 :

{    "Effect": "Allow",
    "Action": [
        "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    "Resource": "arn:aws:s3:::DestinationBucket/*"
}

Remarque : Remplacez DestinationBucket par votre compartiment de destination.

Ajoutez également l'autorisation s3:ObjectOwnerOverrideToBucketOwner suivante dans la politique de compartiment pour le compte de destination :

{    "Sid": "1",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
    },
    "Action": [
        "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    "Resource": "arn:aws:s3:::DestinationBucket/*"
}

Remarque : Remplacez SourceBucket-account-ID par le compte du compartiment source, source-account-IAM-role par le rôle IAM du compte source et DestinationBucket par le compartiment de destination.

Si vous avez activé la réplication de marqueur de suppression sur la règle de réplication, le rôle IAM doit disposer des autorisations s3:ReplicateDelete suivantes :

{    "Effect": "Allow",
    "Action": [
        "s3:ReplicateDelete"
    ],
    "Resource": "arn:aws:s3:::DestinationBucket/*"
}

Remarque : Remplacez DestinationBucket par votre compartiment de destination.

Si le compartiment de destination se trouve dans un autre compte, le propriétaire du compartiment de destination doit également ajouter l’autorisation suivante dans la stratégie de compartiment :

{    "Version": "2012-10-17",
    "Id": "PolicyForDestinationBucket",
    "Statement": [
        {
            "Sid": "Permissions on objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateTags",
                "s3:ObjectOwnerOverrideToBucketOwner",
                "s3:ReplicateDelete"
            ],
            "Resource": "arn:aws:s3:::DestinationBucket/*"
        },
        {
            "Sid": "Permissions on bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3:GetBucketVersioning",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::DestinationBucket"
        }

    ]
}

Remarque : Remplacez arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role par l’Amazon Resource Name (ARN) de votre rôle de réplication et DestinationBucket par votre compartiment de destination.

Accorder des autorisations AWS KMS

Si vous avez chiffré les objets source d'un compartiment à l'aide d'une clé AWS Key Management Service (AWS KMS), la règle de réplication doit être configurée pour inclure le chiffrement AWS KMS.

Pour configurer les autorisations requises, procédez comme suit :

  1. Ouvrez la console Amazon S3.
  2. Choisissez le compartiment source.
  3. Cliquez sur l'onglet Gestion, puis sous Règles de réplication, sélectionnez la règle de réplication.
  4. Sélectionnez Modifier.
  5. Sous Chiffrement, sélectionnez Répliquer les objets chiffrés avec AWS KMS.
  6. Sous Clé AWS KMS pour le chiffrement des objets de destination, sélectionnez une clé AWS KMS. L'option par défaut consiste à utiliser la clé AWS KMS (aws/S3).

Pour des exemples de politique de réplication, consultez la section Exemples de politiques - Utilisation de SSE-S3 et de SSE-KMS avec réplication.

Remarque : Si le compartiment de destination se trouve dans un autre compte, spécifiez une clé gérée par le client AWS KMS qui appartient au compte de destination. La clé aws/S3 par défaut chiffre les objets à l'aide de la clé gérée par AWS appartenant au compte source. Cependant, vous ne pouvez pas partager la clé gérée par AWS avec un autre compte.

Accorder des autorisations AWS KMS supplémentaires pour les scénarios intercomptes

Pour utiliser la clé AWS KMS du compte de destination afin de chiffrer les objets de destination, le compte de destination doit autoriser le rôle de réplication dans la stratégie de clé. Exemple de stratégie :

{    "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role"
    },
    "Action": [
        "kms:GenerateDataKey",
        "kms:Encrypt"
    ],
    "Resource": "*"
}

Remarque : Remplacez arn:aws:iam::SourceBucket-account-ID:role/service-role/source-account-IAM-role par l'ARN du rôle de réplication. Si vous utilisez un astérisque (*) pour Ressource, la stratégie accorde l'autorisation uniquement au rôle de réplication. Toutefois, la stratégie ne permet pas au rôle de réplication d’étendre ses autorisations.

En outre, vous devez ajouter les autorisations minimales suivantes à la stratégie IAM du rôle de réplication à partir du compte source :

[      {  
        "Effect": "Allow",  
        "Action": [  
            "kms:Decrypt",  
            "kms:GenerateDataKey"  
        ],  
        "Resource": [  
            "SourceKmsKeyArn"  
        ]  
    },  
    {  
        "Effect": "Allow",  
        "Action": [  
            "kms:GenerateDataKey",  
            "kms:Encrypt"  
        ],  
        "Resource": [  
            "DestinationKmsKeyArn"  
        ]  
    }  
]

Par défaut, la stratégie de clé KMS accorde à l'utilisateur racine des autorisations complètes sur la clé. Vous pouvez déléguer ces autorisations à d'autres utilisateurs du même compte. Vous pouvez utiliser une politique IAM pour accorder au rôle de réplication les autorisations sur la clé KMS source. Cette configuration autorise l'accès requis à moins que la stratégie de clé AWS KMS source ne contienne des instructions de refus.

Vérifier l’existence d’instructions de refus explicite et d'autorisation conditionnelle

Important : Avant de supprimer les instructions de refus explicite, vérifiez pourquoi elles existent et si elles ont une incidence sur la sécurité des données.

Si vos objets ne sont toujours pas répliqués après que vous avez validé les autorisations, vérifiez s'il existe des instructions de refus explicite susceptibles d'entraîner l'échec de la réplication.

Supprimez les instructions de refus de la stratégie de compartiment de destination ou de la stratégie de clé AWS KMS qui limitent l'accès aux ressources suivantes :

  • Gammes CIDR spécifiques
  • Points de terminaison de cloud privé virtuel (VPC)
  • Points d'accès Amazon S3

Supprimez également les instructions de refus ou les limites d'autorisations de la politique de rôle IAM et des politiques de contrôle des services (SCP) d'AWS Organizations dans les comptes source et de destination.

Vérifier les clés du compartiment S3

Si les clés AWS KMS source ou de destination accordent des autorisations en fonction du contexte de chiffrement, vérifiez si vous utilisez les clés de compartiment S3. Si les compartiments utilisent des clés de compartiment S3, le contexte de chiffrement doit concerner la ressource au niveau du compartiment. Exemple de contexte de chiffrement :

"kms:EncryptionContext:aws:s3:arn": ["arn:aws:s3:::SOURCE_BUCKET_NAME"]
"kms:EncryptionContext:aws:s3:arn": ["arn:aws:s3:::DESTINATION_BUCKET_NAME"]

Remarque : Remplacez SOURCE_BUCKET_NAME par le compartiment source et DESTINATION_BUCKET_NAME par le compartiment de destination.

Si vous n’utilisez pas les clés de compartiment S3 pour les compartiments source ou de destination, le contexte de chiffrement doit être la ressource au niveau de l'objet. Exemple de contexte de chiffrement :

"kms:EncryptionContext:aws:s3:arn": ["arn:aws:s3:::SOURCE_BUCKET_NAME/*"]
"kms:EncryptionContext:aws:s3:arn": ["arn:aws:s3:::DESTINATION_BUCKET_NAME/*"]

Remarque : Remplacez SOURCE_BUCKET_NAME par le compartiment source et DESTINATION_BUCKET_NAME par le compartiment de destination.

Vérifier vos ACL d’objet

Vérifiez si les compartiments source et de destination utilisent des listes de contrôle d'accès (ACL) qui bloquent l’accès. Si l'objet est associé à une ACL qui autorise l'accès public, mais que le compartiment de destination utilise le blocage de l'accès public S3, la réplication échoue.

Confirmer la propriété de l'objet source

Si un autre compte a chargé les objets dans le compartiment source, le compte source peut ne pas avoir accès à ces objets. Vérifiez que les ACL sont activées dans le compartiment source.

Si les ACL du compartiment source sont désactivées, le compte source est le propriétaire de tous les objets du compartiment. Si les ACL sont activées sur le compartiment source, vérifiez si la propriété de l'objet est définie sur Propriétaire de l’objet préféré ou Propriétaire du compartiment préféré. Si la propriété est définie sur Propriétaire du compartiment préféré, les objets du compartiment source doivent disposer de l'autorisation ACL bucket-owner-full-control.

Le compte source peut désactiver les ACL pour devenir propriétaire de tous les objets de son compartiment. La plupart des cas d'utilisation ne nécessitent pas d’ACL pour gérer l'accès. Il est recommandé d'utiliser les stratégies IAM et de compartiment pour gérer l'accès aux ressources Amazon S3. Avant de désactiver les ACL, assurez-vous que votre compartiment et vos politiques IAM accordent les autorisations requises pour conserver l'accès Amazon S3 existant.

Spécifier le filtre de règles de réplication approprié

Assurez-vous d'avoir correctement spécifié le filtre de règles de réplication.

Si vous spécifiez un filtre de règles combinant un préfixe de clé et des identifications d'objet, Amazon S3 exécute une opération logique AND. La règle s'applique à un sous-ensemble d'objets dotés d'un préfixe clé spécifique et d’identifications spécifiques.

Informations connexes

Exemples de configuration de la réplication en direct

AWS OFFICIELA mis à jour il y a 3 mois