¿Cómo puedo configurar la replicación entre cuentas en mis buckets de Amazon S3 con el bloqueo de objetos?

5 minutos de lectura
0

Quiero configurar la replicación entre cuentas en un bucket de Amazon Simple Storage Service (Amazon S3) donde esté activado el bloqueo de objetos.

Resolución

Para configurar la replicación entre cuentas en un bucket de Amazon S3 con el bloqueo de objetos, complete los siguientes requisitos previos:

  • Asegúrese de que el bucket de destino tenga activado el bloqueo de objetos. Si el bloqueo de objetos no está activado en el bucket de destino, póngase en contacto con AWS Support explicando su solicitud.
  • Asegúrese de poder acceder a la Interfaz de la línea de comandos de AWS (AWS CLI) o AWS CloudShell.
  • Asegúrese de tener el token de bloqueo de objetos antes de iniciar la replicación.

Paso 1: Crear un rol de IAM para la replicación con los permisos necesarios

1.    Cree un rol de replicación en la consola de AWS Identity and Access Management (IAM) para la cuenta de origen con una relación de confianza para Amazon S3.

La relación de confianza es similar a la siguiente:

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

2.    Asegúrese de adjuntar los siguientes permisos al rol de IAM:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    }
  ]
}

3.    Si utiliza las claves de AWS Key Management Service (AWS KMS), asegúrese de adjuntar también los siguientes permisos:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "SourceBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetObjectRetention",
        "s3:GetObjectVersionTagging",
        "s3:GetObjectVersionAcl",
        "s3:ListBucket",
        "s3:GetObjectVersionForReplication",
        "s3:GetObjectLegalHold",
        "s3:GetReplicationConfiguration"
      ],
      "Resource": [
        "arn:aws:s3:::SourceBucketName/*",
        "arn:aws:s3:::SourceBucketName"
      ]
    },
    {
      "Sid": "DestinationBucketPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:ReplicateObject",
        "s3:ObjectOwnerOverrideToBucketOwner",
        "s3:GetObjectVersionTagging",
        "s3:ReplicateTags",
        "s3:ReplicateDelete"
      ],
      "Resource": [
        "arn:aws:s3:::DestBucketName/*"
      ]
    },
    {
      "Sid": "SourceBucketKMSKey",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "SourceBucketKMSKeyARN"
    },
    {
      "Sid": "DestinationBucketKMSKey",
      "Action": [
        "kms:Encrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "DestinationBucketKMSKeyARN"
    }
  ]
}

Paso 2: Actualizar los permisos de la clave de AWS KMS

Asegúrese de que la clave de AWS KMS de la cuenta de destino permita el acceso al rol IAM de replicación en la cuenta de origen.

Ejemplo:

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

Nota: No puede usar la clave de AWS KMS administrada aws/S3 para la replicación entre cuentas. Sin embargo, puede utilizar el cifrado SSE-S3.

Nota: Si utiliza un asterisco (*) como Recurso en la política de claves, esta concede permiso para la clave únicamente al rol de replicación. La política no permite que la función de replicación aumente sus permisos.

Paso 3: Agregar la siguiente política de bucket a la cuenta de destino

En la sección Principal, asegúrese de añadir el ARN del rol de IAM de replicación que ha creado en el paso 1.

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

Paso 4: Crear un archivo replication.json

Cree un archivo llamado replication.json que sea similar al siguiente en la cuenta de origen:

{
  "Role": "arn:aws:iam::123456789012:role/s3-replication-role",
  "Rules": [
    {
      "Status": "Enabled",
      "Priority": 10,
      "DeleteMarkerReplication": {
        "Status": "Disabled"
      },
      "Filter": {
        "Prefix": ""
      },
      "Destination": {
        "Bucket": "arn:aws:s3:::destination_bucket"
      }
    }
  ]
}

Este archivo contiene los parámetros de la formación JSON que configuran la replicación. Estos son los mismos parámetros que puede utilizar al configurar la replicación mediante la consola de Amazon S3. Debe usar la AWS CLI para configurar la replicación, ya que todavía no puede usar la consola de Amazon S3 para hacerlo.

Asegúrese de reemplazar s3-replication-role por el rol de IAM del Paso 1. Además, incluya el ARN del bucket de destino, la especificación del prefijo y las preferencias de eliminación de marcadores, según sea necesario.

Paso 5: Configurar la replicación

Tras guardar la configuración anterior, pase el archivo mediante el siguiente comando de la AWS CLI:

aws s3api put-bucket-replication --bucket <SOURCE BUCKET> --replication-configuration file://Replication.json --token <TOKEN>

Para obtener el valor del token de bloqueo de objetos que se utilizará en este comando, póngase en contacto con AWS Support. El <TOKEN> valor es el token de bloqueo de objetos para el bucket de origen.

Paso 6: Verificación

Al ejecutar el comando anterior, la regla de replicación se añade al bucket de origen. Esta regla permite que los objetos recién añadidos se repliquen en el bucket de destino. Puede probar la regla añadiendo nuevos objetos al origen y comprobando el destino.

Nota: Puede actualizar la configuración de la replicación mediante la consola Amazon S3 después de configurar la replicación. Para replicar objetos cifrados con AWS KMS, modifique la configuración de la replicación seleccionando Replicar objetos cifrados con AWS KMS en Cifrado.

Información relacionada

Configuración del bloqueo de objetos de S3 mediante la consola

Activación del bloqueo de objetos de S3

Replicación de objetos creados con cifrado del servidor (SSE-C, SSE-S3, SSE-KMS)

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año