Saltar al contenido

¿Cómo puedo solucionar los problemas de replicación entre cuentas de Amazon S3?

4 minutos de lectura
0

Los objetos de mi bucket de Amazon Simple Storage Service (Amazon S3) de origen en una cuenta de AWS no se replican en el bucket de destino de otra cuenta de AWS. 

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Comprobación de la política de IAM asociada al rol de IAM de replicación

Para resolver los errores de replicación de Amazon S3, asegúrese de conceder los permisos correctos.

Si el objeto del bucket de origen contiene etiquetas, asegúrese de que las políticas para el rol de replicación de AWS Identity and Access Management (IAM) y el bucket de destino permitan la acción s3:ReplicateTags.

Si establece la regla de replicación en Cambiar la propiedad del objeto al propietario del bucket de destino, el rol de IAM debe tener el permiso s3:ObjectOwnerOverrideToBucketOwner.

La regla de replicación de S3 crea automáticamente el rol de IAM de replicación con los permisos necesarios.

Ejemplo de política de IAM para un rol de IAM de replicación:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersionAcl",
            "s3:GetObjectVersionTagging"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ReplicateObject",
            "s3:ReplicateDelete",
            "s3:ReplicateTags",
            "s3:ObjectOwnerOverrideToBucketOwner"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/"
      }
   ]
}

Si crea manualmente el rol de IAM, cree una política de confianza para permitir que Amazon S3 asuma el rol. A continuación, utilice la consola de IAM o la AWS CLI para adjuntar la política.

Ejemplo de política de confianza:

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

Adición de los permisos necesarios a la política de bucket de destino

Asegúrese de que la política de bucket de destino permita que el rol de IAM de replicación de la cuenta de origen replique objetos.

Agregue los siguientes permisos a la política de bucket:

  • s3:ReplicateDelete
  • s3:ReplicateObject
  • s3:ReplicateTags
  • s3:ObjectOwnerOverrideToBucketOwner

Ejemplo de política de bucket de destino:

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

Especificación de los permisos de clave de AWS KMS

Para usar el cifrado en el servidor con las claves de AWS Key Management Service (AWS KMS) (SSE-KMS), debe especificar la clave de AWS KMS de la cuenta de destino en la regla de replicación. Además, las políticas de claves de AWS KMS deben permitir que el rol de IAM de replicación utilice las claves para el cifrado y el descifrado. Para obtener más información, consulte Adición de una instrucción de política de claves en la cuenta local.

Ejemplo de política de rol de IAM de replicación para SSE-KMS:

{
    "Version": "2012-10-17",
    "Statement": [

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

Ejemplo de política de bucket de destino para SSE-KMS:

{
    "Sid": "Allow an external account to use this KMS key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/ReplicationIAMRole"
    },
    "Action": [
        "kms:Encrypt"
    ],
    "Resource": "*"
}

Si la política de claves de AWS KMS de origen o destino concede el permiso en función del contexto de cifrado, compruebe si utiliza claves de bucket de Amazon S3.

Si usa claves de bucket de Amazon S3, el contexto de cifrado debe ser el del recurso a nivel de bucket.

Ejemplo de política:

"kms:EncryptionContext:aws:s3:arn": [     "arn:aws:s3:::amzn-s3-demo-source-bucket"     ]
"kms:EncryptionContext:aws:s3:arn": [     "arn:aws:s3:::amzn-s3-demo-destination-bucket"   ]

Si no utiliza claves de bucket de Amazon S3, el contexto de cifrado debe ser para el recurso a nivel de objeto.

Ejemplo de política:

"kms:EncryptionContext:aws:s3:arn": [     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"     ]
"kms:EncryptionContext:aws:s3:arn": [     "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"   ]

Nota: En las políticas de ejemplo anteriores, sustituya amzn-s3-demo-source-bucket y amzn-s3-demo-destination-bucket por el nombre del bucket de origen y el nombre del bucket de destino.

Comprobación de las SCP para ver las cuentas de origen y destino 

Asegúrese de que las políticas de control de servicios (SCP) de las cuentas de origen y destino no contengan instrucciones Deny.

Información relacionada

Supervisión de la replicación con métricas, notificaciones de eventos y estados

Replicación de objetos cifrados (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C)

¿Por qué mis objetos de Amazon S3 no se replican cuando configuro la replicación entre mis buckets?

OFICIAL DE AWSActualizada hace un año