Configuración de la replicación de tablas de S3 - Amazon Simple Storage Service

Configuración de la replicación de tablas de S3

Puede configurar la replicación para crear automáticamente réplicas de tablas desde una tabla de origen hasta cinco buckets de tablas de destino. La replicación se puede configurar por grupo (se aplica a todas las tablas del bucket) o por tabla (para tablas específicas). En este tema, se explica cómo configurar la replicación mediante la consola de Amazon S3 o la interfaz de la línea de comandos de AWS (AWS CLI).

Para obtener más información sobre la configuración de la replicación, consulte los siguientes temas.

Requisitos previos para configurar la replicación

Antes de configurar la replicación, asegúrese de tener lo siguiente:

Recursos necesarios de

  • Bucket de tablas de origen: el bucket de tablas que contiene las tablas que desea replicar

  • Buckets de tabla de destino: uno o más buckets de tabla en los que desea replicar las tablas (hasta 5 buckets de tablas de destino)

  • Tablas de origen: tablas existentes en el bucket de tablas de origen para replicarlas

  • Roles de IAM: un rol de IAM que otorga permisos de Amazon S3 para replicar tablas en su nombre

Permisos necesarios

La identidad de IAM que utilice para configurar la replicación debe tener los siguientes permisos:

Para la replicación por bucket:
  • s3tables:PutTableBucketReplication en el bucket de la tabla de origen

  • s3tables:GetTableBucketReplication en el bucket de la tabla de origen

  • iam:PassRole para el rol de IAM de replicación

Para la replicación por tabla:
  • s3tables:PutTableReplication en la tabla de origen

  • s3tables:GetTableReplication en la tabla de origen

  • iam:PassRole para el rol de IAM de replicación

Para la replicación entre cuentas:
  • Permisos de la política de bucket de la cuenta de destino

Requisitos adicionales para la replicación entre cuentas

Si los buckets de las tablas de origen y destino están en cuentas de AWS diferentes, también necesitará:

  • Una política de bucket en el bucket de la tabla de destino que conceda a la cuenta de origen permisos para replicar las tablas

  • El ID de cuenta de destino y el nombre de recurso de Amazon (ARN) del bucket de tabla

Requisitos adicionales para las tablas cifradas

Si desea cifrar las réplicas de tablas con AWS KMS:

  • Una clave de KMS en la región de destino

  • Permisos para utilizar la clave de KMS en el rol de replicación de IAM

  • Una política de claves de KMS que permite al rol de replicación cifrar datos

Descripción de configuraciones de replicación

Una configuración de replicación define la forma en que Amazon S3 replica las tablas del bucket de tablas de origen. La replicación se puede configurar de dos formas:

Replicación por bucket

Una configuración de replicación por bucket se aplica a todas las tablas del bucket de la tabla de origen. Al configurar la replicación por bucket, Amazon S3 replica automáticamente todas las tablas existentes y las tablas nuevas que se creen en el bucket.

Use la replicación por bucket si:

  • Desea replicar todas las tablas de un bucket

  • Desea un comportamiento de replicación coherente en todas las tablas

  • Desea simplificar la administración mediante una configuración única

Replicación por tabla

Una configuración de replicación por tabla se aplica a una tabla específica. Las configuraciones por tabla invalidan las configuraciones por bucket para esa tabla específica.

Utilice la replicación por tabla si:

  • Desea replicar solo tablas específicas

  • Necesita diferentes destinos de replicación para diferentes tablas

  • Desea invalidar una configuración por bucket para determinadas tablas

Elementos de configuración de la replicación

Cada configuración de replicación contiene:

  • Rol de IAM: el rol que asume Amazon S3 para realizar las operaciones de replicación

  • Reglas: una o más reglas de replicación (limitadas a una regla en el momento del lanzamiento). Cada regla contiene:

    • Destinos: lista de los ARN del bucket de la tabla de destinos (hasta 5 destinos)

    • Estado: si la regla está habilitada o desactivada

  • Token de versión: un token que se utiliza para evitar conflictos de escritura al actualizar las configuraciones

Elección entre replicación por bucket y por tabla

Prioridad de configuración

Cuando existen configuraciones por bucket y por tabla:

  • La configuración por tabla tiene prioridad para esa tabla específica.

  • Otras tablas siguen la configuración por bucket.

Configuración de la replicación mediante la consola de Amazon S3

Este procedimiento muestra cómo configurar la replicación mediante la consola de Amazon S3.

Este procedimiento muestra cómo crear una configuración de replicación de bucket de tabla mediante la consola de Amazon S3. Una configuración de replicación de bucket de tabla se aplica a todas las tablas del bucket de la tabla de origen.

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Buckets de tablas.

  3. En la lista Buckets de tablas, elija el nombre del bucket de tabla para el que desea configurar la replicación.

  4. Seleccione la pestaña Administración.

  5. En la sección Configuración de replicación del bucket de tablas, elija Crear configuración de replicación del bucket de tablas.

  6. En la sección Destino, configure los destinos de replicación:

    1. En el campo ARN del bucket de tabla, ingrese el ARN del bucket de tabla de destino. El formato de es: arn:aws:s3tables:region:account-id:bucket/table-bucket-name

      Como opción alternativa, elija Examinar S3 para seleccionar un bucket de tablas de la cuenta.

    2. (Opcional) Para agregar destinos adicionales, elija Agregar destino. Puede agregar hasta 4 buckets de tablas más para un total de 5 destinos.

  7. En la sección Rol de IAM, configure el rol de replicación:

    1. Para Método de selección de rol de IAM, elija una de las opciones siguientes:

      • Crear un nuevo rol de IAM: Amazon S3 crea un nuevo rol con los permisos necesarios para la replicación.

      • Elegir entre los roles de IAM existentes: seleccione un rol existente que tenga los permisos de replicación necesarios.

      • Ingresar el ARN del rol de IAM: ingrese manualmente el ARN de un rol de IAM existente.

    2. Si eligió Elegir de los roles de IAM existentes, seleccione un rol de la lista desplegable de Rol de IAM.

    3. (Opcional) Elija Ver para revisar los permisos del rol seleccionado en la consola de IAM.

  8. Elija Crear configuración de replicación.

    Tras crear la configuración de replicación, Amazon S3 comienza el proceso de relleno inicial. Puede supervisar el estado de la replicación en la sección Estado de replicación de la tabla, que muestra información sobre cada destino, incluido el estado de la replicación, el ARN de la tabla de destino y los últimos metadatos replicados.

Este procedimiento muestra cómo crear una configuración de replicación por tabla mediante la consola de Amazon S3. Una configuración de replicación de tablas se aplica a una tabla específica e invalida cualquier configuración de replicación por bucket de esa tabla.

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación, elija Buckets de tablas.

  3. En la lista Buckets de tablas, elija el nombre del bucket de tablas que contiene la tabla que desea replicar.

  4. Seleccione la pestaña Tablas.

  5. En la lista Tablas, elija el nombre de la tabla que desea replicar.

  6. Seleccione la pestaña Administración.

  7. En la sección Configuración de replicación de tablas, elija Crear configuración de replicación de tablas.

  8. En la sección Destino, configure los destinos de replicación:

    1. En el campo ARN del bucket de tabla, ingrese el ARN del bucket de tabla de destino. El formato de es: arn:aws:s3tables:region:account-id:bucket/table-bucket-name

      Como opción alternativa, elija Examinar S3 para seleccionar un bucket de tablas de la cuenta.

    2. (Opcional) Para agregar destinos adicionales, elija Agregar destino. Puede agregar hasta 4 buckets de tablas más para un total de 5 destinos.

  9. En la sección Rol de IAM, configure el rol de replicación:

    1. Para Método de selección de rol de IAM, elija una de las opciones siguientes:

      • Crear un nuevo rol de IAM: Amazon S3 crea un nuevo rol con los permisos necesarios para la replicación.

      • Elegir entre los roles de IAM existentes: seleccione un rol existente que tenga los permisos de replicación necesarios.

      • Ingresar el ARN del rol de IAM: ingrese manualmente el ARN de un rol de IAM existente.

    2. Si eligió Elegir de los roles de IAM existentes, seleccione un rol de la lista de Rol de IAM.

    3. (Opcional) Elija Ver para revisar los permisos del rol seleccionado en la consola de IAM.

  10. Elija Crear configuración de replicación.

¿Qué ocurre a continuación?

Después de crear la configuración de replicación:

  • Amazon S3 comienza el proceso de relleno inicial y crea réplicas de tablas en cada bucket de destino

  • El estado de la replicación cambia a Replicación una vez que se inicia el relleno

  • Puede supervisar el progreso de la replicación en la pestaña Administración

  • El tiempo de replicación inicial depende del tamaño de la tabla de origen

Configuración de la replicación mediante la AWS CLI

Este procedimiento muestra cómo configurar la replicación mediante la AWS CLI. Sustituya los ID de cuenta, las regiones y los nombres de los buckets por los valores reales. Agregue todos los buckets de destino a los permisos.

Paso 1: creación de un rol de IAM para replicación

En primer lugar, cree una rol de IAM que Amazon S3 pueda asumir para replicar las tablas.

  1. Cree un documento de política de confianza que permita a tablas de S3 asumir el rol. Guarde esto como trust-policy.json:

    { "Version": "2012-10-17" "Statement": [ { "Effect": "Allow", "Principal": { "Service": "replication.s3tables.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. Cree el rol de IAM:

    aws iam create-role \ --role-name S3TablesReplicationRole \ --assume-role-policy-document file://trust-policy.json \ --description "Role for S3 Tables replication"
  3. Cree una política de permisos que conceda permisos de replicación. Guarde esto como 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. Asocie la política de permisos al rol:

    aws iam put-role-policy \ --role-name S3TablesReplicationRole \ --policy-name S3TablesReplicationPermissions \ --policy-document file://replication-permissions.json
  5. (Opcional) Si usa el cifrado de KMS, agregue permisos de KMS a la política:

    { "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" ] }

(Solo entre cuentas) Paso 2: configuración de la política de bucket de destino

Si está replicando en una cuenta de AWS diferente, la cuenta de destino debe conceder permisos a la cuenta de origen.

  1. En la cuenta de destino, cree una política de bucket para el bucket de tabla de destino. Guarde esto como destination-bucket-policy.json:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/cross-account-test" }, "Action": [ "s3tables:PutTableData", "s3tables:GetTableData", "s3tables:UpdateTableMetadataLocation", "s3tables:PutTableMaintenanceConfiguration" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-cross-account-destination/table/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:role/cross-account-test" }, "Action": [ "s3tables:CreateTable", "s3tables:CreateNamespace" ], "Resource": "arn:aws:s3tables:us-east-2:111122223333:bucket/amzn-s3-demo-table-bucket-cross-account-destination" } ] }
  2. Aplique la política mediante la API de tablas de S3:

    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 \ --policy file://destination-bucket-policy.json \ --profile destination-account
  3. Modifique la clave de KMS de origen para permitir la replicación y el mantenimiento de tablas de 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. Del mismo modo, agregue permisos en la política de claves de KMS de destino

    { "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" } ]

Paso 3: creación de una configuración de replicación

Puede usar la AWS CLI para crear una configuración de replicación por bucket de tabla o por tabla. Para obtener más información, consulte los siguientes procedimientos.

Utilice este enfoque para replicar todas las tablas de un bucket.

  1. Cree un archivo de configuración de replicación. Guarde esto como bucket-replication-config.json:

    ejemplo : Destino único en la misma cuenta
    { "role": "arn:aws:iam::111122223333:role/S3TablesReplicationRole", "rules": [ { "destinations": [ { "destinationTableBucketARN": "arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-table-bucket-dr" } ] } ] }
    ejemplo : Múltiples destinos en todas las regiones
    { "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" } ] } ] }
    ejemplo : Replicación entre cuentas
    { "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. Aplique la configuración de replicación por 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

    Resultado previsto:

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

Utilice este enfoque para replicar tablas específicas o para invalidar la replicación por bucket.

  1. Cree un archivo de configuración de replicación. Guarde esto como table-replication-config.json:

    ejemplo : Replicación de tabla única
    { "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" } ] } ] }
    ejemplo : Tabla con varios destinos
    { "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. Aplique la configuración de replicación por tabla:

    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

    Resultado previsto:

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