Solución de problemas de replicación - Amazon Simple Storage Service

Solución de problemas de replicación

En esta sección se incluyen consejos de solución de problemas para Replicación de Amazon S3 e información sobre los errores de la replicación por lotes de S3.

Consejos para solucionar problemas de replicación de S3

Si las réplicas de objetos no aparecen en el bucket de destino después de configurar la replicación, use estos consejos de solución de problemas para identificar y solucionar los problemas.

  • La mayoría de los objetos se replican en 15 minutos. El tiempo que tarda Amazon S3 en replicar un objeto depende de diferentes factores, como el par de regiones de origen y destino y el tamaño del objeto. La replicación puede tardar varias horas para los objetos grandes. Para obtener visibilidad de los tiempos de replicación, puede utilizar el control del tiempo de replicación de S3 (S3 RTC).

    Si el objeto que se replica es grande, espere un tiempo antes de comprobar si aparece en el destino. También puede comprobar el estado de replicación del objeto de origen. Si el estado de replicación de objetos es PENDING, Amazon S3 no ha completado la replicación. Si el estado de replicación del objeto es FAILED, compruebe la configuración de replicación establecida en el bucket de origen. Además, para recibir información sobre los errores durante la replicación, puede configurar la replicación de las notificaciones de eventos de Amazon S3 para recibir eventos de error. Para obtener más información, consulte Recepción de eventos de error de replicación con notificaciones de eventos de Amazon S3.

  • Puede llamar a la operación de la API HeadObject para comprobar el estado de replicación de un objeto. La operación de la API HeadObject devuelve el estado de replicación PENDING, COMPLETED o FAILED de un objeto. En respuesta a una llamada a la API HeadObject, el estado de replicación se devuelve en el elemento x-amz-replication-status.

    nota

    Para ejecutar HeadObject, debe tener acceso de lectura al objeto que solicita. Una solicitud HEAD tiene las mismas opciones que una solicitud GET, sin realizar ninguna operación GET. Por ejemplo, para ejecutar una solicitud HeadObject mediante la AWS Command Line Interface (AWS CLI), puede ejecutar el siguiente comando. Reemplace los user input placeholders con su propia información.

    aws s3api head-object --bucket my-bucket --key index.html
  • Después de que HeadObject devuelva los objetos con un estado de replicación FAILED, puede utilizar la replicación por lotes de S3 para replicar esos objetos con errores. Como alternativa, puede volver a cargar los objetos con errores en el bucket de origen, lo que iniciará la replicación de los objetos nuevos.

  • En la configuración de replicación en el bucket de origen, verifique lo siguiente:

    • El Nombre de recurso de Amazon (ARN) del bucket de destino es correcto.

    • El prefijo de nombre de clave sea correcto. Por ejemplo, si establece la configuración para replicar objetos con el prefijo Tax, entonces, solo se replicarán los objetos con nombres de clave como Tax/document1 o Tax/document2. No se replicará un objeto con el nombre de clave document3.

    • El estado de la regla de replicación es Enabled.

  • Compruebe que el control de versiones no se haya suspendido en ningún bucket de la configuración de la replicación. Ambos buckets de origen y destino deben tener habilitado el control de versiones.

  • Si una regla de replicación está configurada como Cambiar la propiedad de los objetos al propietario del bucket de destino, el rol (de IAM) AWS Identity and Access Management que se usa para la replicación debe tener el permiso s3:ObjectOwnerOverrideToBucketOwner. Este permiso se concede al recurso (en este caso, al bucket de destino). Por ejemplo, la siguiente instrucción Resource muestra cómo conceder este permiso en el bucket de destino:

    { "Effect":"Allow", "Action":[ "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource":"arn:aws:s3:::DestinationBucket/*" }
  • Si el bucket de destino pertenece a otra cuenta, el propietario del bucket de destino también debe conceder el permiso s3:ObjectOwnerOverrideToBucketOwner al propietario del bucket de origen mediante la política de bucket de destino. Para utilizar el siguiente ejemplo de política de bucket, sustituya user input placeholders con su información:

    { "Version": "2012-10-17", "Id": "Policy1644945280205", "Statement": [ { "Sid": "Stmt1644945277847", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-replication-role" }, "Action": [ "s3:ReplicateObject", "s3:ReplicateTags", "s3:ObjectOwnerOverrideToBucketOwner" ], "Resource": "arn:aws:s3:::DestinationBucket/*" } ] }
    nota

    Si la configuración de la propiedad de los objetos incluye Aplicada al propietario del bucket, no será necesario que actualice la configuración a Cambiar la propiedad de los objetos al propietario del bucket de destino en la regla de replicación. El cambio de propiedad de los objetos se realiza de forma predeterminada. Para obtener más información acerca de cómo cambiar la propiedad de la réplica, consulte Cambiar el propietario de la réplica.

  • Si va a definir la configuración de replicación en un escenario entre cuentas en el que los buckets de origen y destino pertenecen a diferentes Cuentas de AWS, los buckets de destino no se podrán configurar como buckets de Pago por solicitante. Para obtener más información, consulte Utilización de buckets de pago por solicitante para transferencias de almacenamiento y uso.

  • Si los objetos de origen de un bucket están cifrados con una clave de AWS Key Management Service (AWS KMS), la regla de replicación debe configurarse para incluir objetos cifrados con AWS KMS. Asegúrese de seleccionar Replicar objetos cifrados con AWS KMS en la configuración Cifrado de la consola de Amazon S3. A continuación, seleccione una clave de AWS KMS para cifrar los objetos de destino.

    nota

    Si el bucket de destino está en una cuenta diferente, especifique una clave administrada por el cliente de AWS KMS que pertenezca a la cuenta de destino. No utilice la clave administrada predeterminada de Amazon S3 (aws/s3). Al usar la clave predeterminada se cifran los objetos con la clave administrada de Amazon S3 que pertenece a la cuenta de origen, lo que impide que el objeto se comparta con otra cuenta. Como resultado, la cuenta de destino no podrá acceder a los objetos del bucket de destino.

    Para utilizar una clave de AWS KMS que pertenezca a la cuenta de destino para cifrar los objetos de destino, la cuenta de destino debe conceder los permisos kms:GenerateDataKey y kms:Encrypt al rol de replicación de la política de claves de KMS. Para utilizar el siguiente ejemplo de instrucción en su política de claves de KMS, sustituya user input placeholders con su información:

    { "Sid": "AllowS3ReplicationSourceRoleToUseTheKey", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789101:role/s3-replication-role" }, "Action": ["kms:GenerateDataKey", "kms:Encrypt"], "Resource": "*" }

    Si usa un asterisco (*) para la instrucción Resource de la política de claves de AWS KMS, la política otorga permiso para usar la clave de KMS únicamente para el rol de replicación. La política no permite que el rol de replicación derive sus permisos.

    De forma predeterminada, la política de claves de KMS otorga al usuario raíz todos los permisos sobre la clave. Estos permisos se pueden delegar a otros usuarios de la misma cuenta. A menos que haya instrucciones Deny en la política de claves de KMS de origen, basta con utilizar una política de IAM para conceder permisos de rol de replicación a la clave de KMS de origen.

    nota

    Las políticas de claves de KMS que restringen el acceso a rangos de CIDR, puntos de conexión de VPC o puntos de acceso de S3 específicos pueden provocar un error en la replicación.

    Si las claves KMS de origen o destino otorgan permisos en función del contexto de cifrado, confirme que las claves de bucket de Amazon S3 estén activadas para los buckets. Si los buckets tienen activadas las claves de bucket de S3, el contexto de cifrado debe ser el recurso en el nivel de bucket, tal como se muestra a continuación:

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

    Además de los permisos otorgados por la política de claves de KMS, la cuenta de origen debe añadir los siguientes permisos mínimos a la política de IAM del rol de replicación:

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

    Para obtener más información sobre la replicación de objetos cifrados con AWS KMS, consulte Replicar objetos cifrados.

  • Si el bucket de destino pertenece a otra Cuenta de AWS, compruebe que el propietario del bucket tenga una política de bucket en el bucket de destino que permita al propietario del bucket de origen replicar objetos. Para ver un ejemplo, consulte La configuración de la reproducción para los buckets de origen y destino son propiedad de diferentes cuentas.

  • Si los objetos siguen sin replicarse después de haber validado los permisos, compruebe si hay instrucciones Deny explícitas en las siguientes ubicaciones:

    • Las instrucciones Deny en las políticas de bucket de origen o destino. La replicación devuelve un error si la política de bucket deniega el acceso a la función de replicación para cualquiera de las siguientes acciones:

      Bucket de origen:

      "s3:GetReplicationConfiguration", "s3:ListBucket", "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging"

      Buckets de destino:

      "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags"
    • Las instrucciones Deny o límites de permisos adjuntos al rol de IAM pueden provocar un error en la replicación.

    • Las instrucciones Deny en las políticas de control de servicios de AWS Organizations adjuntas a las cuentas de origen o destino pueden provocar un error en la replicación.

  • Si la réplica de un objeto no aparece en el bucket de destino, los siguientes problemas podría haber impedido la replicación:

    • Amazon S3 no replica los objetos de un bucket de origen si son una réplica creada por otra configuración de replicación. Por ejemplo, si establece la configuración de replicación del bucket A en el bucket B y, luego, en el bucket C, Amazon S3 no replica las réplicas de objetos del bucket B en el bucket C.

    • Un propietario del bucket de origen puede conceder permisos a otras Cuentas de AWS para cargar objetos. De forma predeterminada, el propietario del bucket de origen no tiene permisos sobre los objetos creados por otras cuentas. La configuración de replicación solo replica los objetos para los que el propietario del bucket de origen tiene permisos de acceso. El propietario del bucket de origen puede conceder permisos a otras Cuentas de AWS para crear objetos con la condición de que tengan permisos de acceso explícitos para esos objetos. Para ver una política de ejemplo, consulte Conceder permisos entre cuentas para cargar objetos al mismo tiempo que se garantiza que el propietario del bucket tenga el control total.

  • Supongamos que en la configuración de replicación añade una regla para replicar un subconjunto de objetos con una etiqueta específica. En este caso, debe asignar la clave de etiqueta y el valor específicos en el momento de crear el objeto para que Amazon S3 replique el objeto. Si primero crea un objeto y luego agrega la etiqueta al objeto existente, Amazon S3 no replica el objeto.

  • Use las notificaciones de eventos de Amazon S3 para recibir notificaciones de instancias cuando los objetos no se repliquen en la Región de AWS de destino. Las notificaciones de eventos de Amazon S3 están disponibles a través de Amazon Simple Queue Service (Amazon SQS), Amazon Simple Notification Service (Amazon SNS) o AWS Lambda. Para obtener más información, consulte Recepción de eventos de error de replicación con notificaciones de eventos de Amazon S3.

    También puede usar las notificaciones de eventos de Amazon S3 para ver los motivos de error de replicación. Para revisar la lista de los motivos de error, consulte Motivos de errores de replicación de Amazon S3.

Errores de replicación por lotes

Para solucionar problemas con objetos que no se replican en el bucket de destino, compruebe los diferentes tipos de permisos del bucket, el rol de replicación y el rol de IAM que se utilizan para crear el trabajo de replicación por lotes. Además, compruebe la configuración de acceso público y la configuración de propiedad del bucket.

Al utilizar la replicación por lotes, es posible que se produzca uno de los siguientes errores:

  • Error en el estado de operación por lotes por el motivo siguiente: no se ha podido escribir el informe del trabajo en el bucket de informes.

    Este error se produce si el rol de IAM que se utiliza para el trabajo de operaciones por lotes no puede colocar el informe de finalización en la ubicación que se especificó al crear el trabajo. Para resolver este error, compruebe que el rol de IAM tenga permisos PutObject para el bucket en el que desea guardar el informe de finalización de las operaciones por lotes. Se recomienda entregar el informe en un bucket diferente al bucket de origen.

  • La operación por lotes se ha completado con errores y el total de errores no es igual a 0.

    Este error se produce si no hay problemas porque no hay suficientes permisos de objetos con el trabajo de replicación por lotes que se está ejecutando. Si utiliza una regla de replicación para su trabajo de replicación por lotes, asegúrese de que el rol de IAM utilizado para la replicación tenga los permisos adecuados para acceder a los objetos del bucket de origen o de destino. También puede consultar el Informe de finalización de replicación por lotes para revisar el Motivo de error de replicación de Amazon S3.

  • El trabajo por lotes se ha ejecutado correctamente, pero el número de objetos esperado en el bucket de destino no es el mismo.

    Este error se produce cuando hay una discrepancia entre los objetos que figuran en el manifiesto que se proporciona en el trabajo de replicación por lotes y los filtros que ha seleccionado al crear el trabajo. También puede recibir este mensaje cuando los objetos de su bucket de origen no coincidan con ninguna regla de replicación y no estén incluidos en el manifiesto generado.