

# Tablas globales de varias cuentas de DynamoDB
<a name="globaltables-MultiAccount"></a>

Las tablas globales de varias cuentas replican automáticamente los datos de las tablas de DynamoDB en varias regiones de AWS y cuentas de AWS para mejorar la resiliencia, aislar las cargas de trabajo por cuenta y aplicar distintos controles de seguridad y gobernanza. Cada tabla de réplica reside en una cuenta de AWS distinta, lo que permite el aislamiento de errores por región y cuenta. También puede alinear las réplicas con la estructura organizativa de AWS. Las tablas globales de varias cuentas ofrecen beneficios adicionales de aislamiento, gobernanza y seguridad en comparación con las tablas globales de una misma cuenta.

Las tablas globales de varias cuentas proporcionan los siguientes beneficios:
+ Replique datos de tablas de DynamoDB automáticamente en las cuentas y regiones de AWS que elija.
+ Mejore la seguridad y la gobernanza replicando los datos en todas las cuentas con políticas, barreras de protección y límites de cumplimiento distintos.
+ Mejore la resiliencia operativa y el aislamiento de errores por cuenta al colocar las réplicas en cuentas de AWS independientes.
+ Alinee las cargas de trabajo por unidad de negocio o propiedad al utilizar una estrategia de varias cuentas.
+ Simplifique la atribución de costos facturando cada réplica a su cuenta de AWS correspondiente.

Para obtener más información, consulte [Beneficios de usar varias cuentas de AWS](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/benefits-of-using-multiple-aws-accounts.html). Si las cargas de trabajo no requieren la replicación de varias cuentas o si desea una administración de réplicas más sencilla con invalidaciones locales, puede seguir utilizando tablas globales de la misma cuenta.

Puede configurar tablas globales de varias cuentas con [Consistencia posterior de varias regiones (MREC)](V2globaltables_HowItWorks.md#V2globaltables_HowItWorks.consistency-modes.mrec). Las tablas globales configuradas para [Coherencia alta de varias regiones (MRSC)](V2globaltables_HowItWorks.md#V2globaltables_HowItWorks.consistency-modes.mrsc) no admiten el modelo de varias cuentas.

**Topics**
+ [Funcionamiento de las tablas globales de DynamoDB](V2globaltables_MA_HowItWorks.md)
+ [Tutoriales: Creación de tablas globales de varias cuentas](V2globaltables_MA.tutorial.md)
+ [Seguridad de las tablas globales de DynamoDB](globaltables_MA_security.md)

# Funcionamiento de las tablas globales de DynamoDB
<a name="V2globaltables_MA_HowItWorks"></a>

Las tablas globales de varias cuentas amplían las capacidades totalmente administradas, sin servidor, de varias regiones y multiactivas de tablas globales de DynamoDB para abarcar varias cuentas de AWS. Las tablas globales de varias cuentas replican los datos de todas las regiones y cuentas de AWS, lo que proporciona la misma funcionalidad activo-activa que las tablas globales de la misma cuenta. Al escribir en cualquier réplica, DynamoDB replica los datos en todas las demás réplicas.

Entre las principales diferencias con respecto a las tablas globales de la misma cuenta se incluyen las siguientes:
+ La replicación de varias cuentas es compatible con las tablas globales de coherencia final de varias regiones (MREC).
+ Solo puede agregar réplicas comenzando con una tabla de una sola región. No se admite la conversión de una tabla global existente de la misma cuenta en una configuración de varias cuentas. Para migrar, debe eliminar las réplicas existentes para volver a una tabla de una sola región antes de crear una nueva tabla global de varias cuentas.
+ Cada réplica debe residir en una cuenta de AWS independiente. Para una tabla global de varias cuentas con *N* réplicas, debe tener *N* cuentas.
+ Las tablas globales de varias cuentas utilizan una configuración de tabla unificada en todas las réplicas de forma predeterminada. Todas las réplicas comparten automáticamente la misma configuración (como el modo de rendimiento y TTL) y, a diferencia de las tablas globales de la misma cuenta, estas configuraciones no se pueden invalidar por réplica.
+ Los clientes deben proporcionar permisos de replicación a la entidad principal del servicio de tablas globales de DynamoDB en sus políticas de recursos.

Las tablas globales de varias cuentas utilizan la misma tecnología de replicación subyacente que las tablas globales de la misma cuenta. La configuración de las tablas se replica automáticamente en todas las réplicas regionales y los clientes no pueden invalidar ni personalizar la configuración por réplica. Esto garantiza una configuración uniforme y un comportamiento predecible en varias cuentas de AWS que participan en la misma tabla global.

La configuración de las tablas globales de DynamoDB define cómo se comporta una tabla y cómo se replican los datos en todas las regiones. Estos ajustes se configuran mediante las API del plano de control de DynamoDB durante la creación de la tabla o al agregar una nueva réplica regional.

Al crear una tabla global de varias cuentas, los clientes deben configurar `GlobalTableSettingsReplicationMode = ENABLED` para cada réplica regional. Esto garantiza que los cambios de configuración realizados en una región se propaguen automáticamente a todas las demás regiones que participan en la tabla global.

Puede habilitar la replicación de la configuración después de crear la tabla. Esto es compatible con el escenario en el que una tabla se crea originalmente como una tabla regional y, posteriormente, se actualiza a una tabla global de varias cuentas.

**Configuración sincronizada**

Los ajustes de tabla siguientes siempre se sincronizan entre todas las réplicas de una tabla global de varias cuentas:

**nota**  
a diferencia de las tablas globales de la misma cuenta, las tablas globales de varias cuentas no permiten anular esta configuración por región. La única excepción es que se permiten las invalidaciones de las políticas de escalado automático de lectura (tablas y GSI), ya que son recursos externos independientes.
+ Modo de capacidad (capacidad aprovisionada o bajo demanda)
+ Capacidad de lectura y escritura aprovisionada de tablas
+ Escalado automático de lectura y escritura de tablas
+ Definición del índice secundario local (LSI)
+ Definición del índice secundario global (GSI)
+ Capacidad de lectura y escritura aprovisionada de GSI
+ Escalado automático de lectura y escritura de GSI
+ Definición de flujos en modo de MREC
+ Tiempo de vida (TTL)
+ Rendimiento en caliente
+ Rendimiento máximo de lectura y escritura bajo demanda

**Configuración no sincronizada**

Los ajustes siguientes no se sincronizan entre las réplicas y se deben configurar de forma independiente para cada tabla de réplicas de cada región.
+ Clase de tabla
+ Tipo de cifrado del servidor (SSE)
+ Recuperación en un momento dado
+ ID de clave de KMS de cifrado del servidor (SSE)
+ Protección contra eliminación
+ Kinesis Data Streams (KDSD)
+ Etiquetas
+ Política de recursos
+ Información de colaboradores de Cloudwatch (CCI) de tablas
+ Información de colaboradores de Cloudwatch (CCI) de GSI

## Supervisión
<a name="V2globaltables_MA_HowItWorks.monitoring"></a>

Las tablas globales configuradas para una coherencia final de varias regiones (MREC) publican la métrica [`ReplicationLatency`](metrics-dimensions.md#ReplicationLatency) en CloudWatch. Esta métrica realiza un seguimiento del tiempo transcurrido entre el momento en que un elemento se escribe en una tabla de réplica y el momento en que dicho elemento aparece en otra réplica de la tabla global. `ReplicationLatency` se expresa en milisegundos y se emite para cada par de región de origen y destino en una tabla global.

Los valores típicos de `ReplicationLatency` dependen de la distancia entre las regiones de AWS elegidas, así como de otras variables, como el tipo de carga de trabajo y el rendimiento. Por ejemplo, una réplica de origen en la región Oeste de EE. UU. (Norte de California) (us-west-1) tiene un nivel más bajo de `ReplicationLatency` hacia la región Oeste de EE. UU. (Oregón) (us-west-2) en comparación con la región África (Ciudad del Cabo) (af-south-1).

Un valor en aumento de `ReplicationLatency` podría indicar que las actualizaciones de una réplica no se están propagando hacia otras tablas de réplica de manera puntual. En este caso, puede redirigir temporalmente la actividad de lectura y escritura de la aplicación a otra región de AWS.

**Gestión de los problemas de latencia de replicación en tablas globales de varias cuentas**

Si `ReplicationLatency` sobrepasa las 3 horas debido a problemas provocados por el cliente en una tabla de réplicas, DynamoDB envía una notificación solicitando al cliente que aborde el problema subyacente. Los problemas más comunes inducidos por el cliente que pueden impedir la replicación son:
+ Eliminar los permisos necesarios de la política de recursos de la tabla de réplicas.
+ Excluirse de una región de AWS que aloja una réplica de la tabla global de varias cuentas.
+ Denegar los permisos de clave de KMS de AWS de la tabla necesarios para descifrar los datos.

DynamoDB envía una notificación inicial en un plazo de 3 horas si la latencia de replicación es elevada, seguida de una segunda notificación tras 20 horas si el problema sigue sin resolverse. Si el problema no se corrige dentro del intervalo de tiempo requerido, DynamoDB desasociará automáticamente la réplica de la tabla global. A continuación, la réplica afectada se convertirá en una tabla regional.

# Tutoriales: Creación de tablas globales de varias cuentas
<a name="V2globaltables_MA.tutorial"></a>

En esta sección, se proporcionan instrucciones paso a paso para crear tablas globales de DynamoDB que abarquen varias cuentas de AWS.

## Creación de una tabla global de varias cuentas mediante la consola de DynamoDB
<a name="create-ma-gt-console"></a>

Siga estos pasos para crear una tabla global de varias cuentas mediante la Consola de administración de AWS. En el ejemplo siguiente, se crea una tabla global con tablas de réplica en Estados Unidos.

1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) para la primera cuenta (diga *111122223333*).

1. Para este ejemplo, elija **Este de EE. UU. (Ohio)** en el selector de regiones en la barra de navegación.

1. En el panel de navegación del lado izquierdo de la consola, elija **Tablas**.

1. Seleccione **Create Table (Crear tabla)**.

1. En la página **Crear tabla**:

   1. En **Nombre de la tabla**, introduzca **MusicTable**.

   1. En **Partition key** (Clave de partición), ingrese **Artist**.

   1. Para **Clave de clasificación**, ingrese **SongTitle**.

   1. Deje los demás valores predeterminados y elija **Crear tabla**.

1. Adición de la siguiente política de recursos a la tabla

------
#### [ JSON ]

****  

   ```
   {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
       {
           "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
           "Effect": "Allow",
           "Action": [
               "dynamodb:ReadDataForReplication",
               "dynamodb:WriteDataForReplication",
               "dynamodb:ReplicateSettings"
           ],
           "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable",
           "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
           "Condition": {
               "StringEquals": {
                   "aws:SourceAccount": ["444455556666","111122223333"],
                   "aws:SourceArn": [
                       "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable",
                       "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable"
                   ]
               }
           }
       },
       {
           "Sid": "AllowTrustedAccountsToJoinThisGlobalTable",
           "Effect": "Allow",
           "Action": [
               "dynamodb:AssociateTableReplica"
           ],
           "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable",
           "Principal": {"AWS": ["444455556666"]}
       }
   ]
   }
   ```

------

1. Esta nueva tabla le servirá de primera tabla de réplica en una nueva tabla global. Será el prototipo para crear otras tablas de réplica que quiera añadir más tarde.

1. Espere que la tabla pase a **Activa**. Para la tabla recién creada, en la pestaña **Tablas globales**, vaya a **Configuración y replicación** y haga clic en **Habilitar**.

1. Cierre sesión en esta cuenta (*111122223333* aquí).

1. Inicie sesión en la Consola de administración de AWS y abra la consola de DynamoDB en [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) para la segunda cuenta (diga *444455556666*).

1. Para este ejemplo, elija **Este de EE. UU. (Norte de Virginia)** en el selector de regiones en la barra de navegación.

1. La consola asegura que no haya ninguna tabla con el mismo nombre en la región seleccionada. Si ya existe una tabla con el mismo nombre, debe eliminar la tabla existente antes de crear una nueva tabla de réplica en esa región.

1. En el menú desplegable situado junto a **Crear tabla**, elija **Crear desde otra cuenta**

1. En la página **Crear una tabla desde otra cuenta**:

   1. Agregue **arn:aws:dynamodb:us-east-2:*111122223333*:table/MusicTable** como arn de tabla para la tabla de origen.

   1. En los **ARN de la tabla de réplica**, vuelva a agregar el ARN de la tabla de origen **arn:aws:dynamodb:us-east-2:*111122223333*:table/MusicTable**. Si ya existen varias réplicas como parte de una tabla global de varias cuentas, debe agregar todas las réplicas existentes a ReplicaTableARN.

   1. Deje los demás valores predeterminados y elija **Enviar**.

1. La pestaña **Tablas globales** de la tabla Música (y de cualquier otra tabla de réplica) indica que la tabla se ha replicado en varias regiones.

1. Para probar la replicación:

   1. Puede usar cualquiera de las regiones en las que existe una réplica para esta tabla

   1. Elija **Explorar elementos de la tabla**.

   1. Seleccione **Crear elemento**.

   1. Ingrese **item\$11** para **Artista** y **Song Value 1** para **Título de la canción**.

   1. Seleccione **Crear elemento**.

   1. Compruebe la replicación cambiando a las otras regiones:

   1. Compruebe que la tabla Música contiene el elemento que ha creado.

## Creación de una tabla global de varias cuentas mediante la AWS CLI
<a name="ma-gt-cli"></a>

En los siguientes ejemplos, se muestra cómo crear una tabla global de varias cuentas mediante la AWS CLI. Estos ejemplos muestran el flujo de trabajo completo para configurar la replicación entre cuentas.

------
#### [ CLI ]

Use los comandos de la AWS CLI siguientes para crear una tabla global de varias cuentas con replicación entre cuentas.

```
# STEP 1: Setting resource policy for the table in account 111122223333

cat > /tmp/source-resource-policy.json << 'EOF'
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": ["444455556666","111122223333"],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable",
                        "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable"
                    ]
                }
            }
        },
        {
            "Sid": "AllowTrustedAccountsToJoinThisGlobalTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:AssociateTableReplica"
            ],
            "Resource": "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable",
            "Principal": {"AWS": ["444455556666"]}
        }
    ]
}
EOF

# Step 2: Create a new table (MusicTable) in US East (Ohio), 
#   with DynamoDB Streams enabled (NEW_AND_OLD_IMAGES),
#   and Settings Replication ENABLED on the account 111122223333

aws dynamodb create-table \
    --table-name MusicTable \
    --attribute-definitions \
        AttributeName=Artist,AttributeType=S \
        AttributeName=SongTitle,AttributeType=S \
    --key-schema \
        AttributeName=Artist,KeyType=HASH \
        AttributeName=SongTitle,KeyType=RANGE \
    --billing-mode PAY_PER_REQUEST \
    --stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES \
    --global-table-settings-replication-mode ENABLED \
    --resource-policy file:///tmp/source-resource-policy.json \
    --region us-east-2 


# Step 3: Creating replica table in account 444455556666

# Resource policy for account 444455556666
cat > /tmp/dest-resource-policy.json << 'EOF'
{
    "Version": "2012-10-17", 		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": ["444455556666","111122223333"],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:us-east-1:444455556666:table/MusicTable",
                        "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable"
                    ]
                }
            }
        }
    ]
}
EOF

# Execute the replica table creation
aws dynamodb create-table \
    --table-name MusicTable \
    --global-table-source-arn "arn:aws:dynamodb:us-east-2:111122223333:table/MusicTable" \
    --resource-policy file:///tmp/dest-resource-policy.json \
    --global-table-settings-replication-mode ENABLED \
    --region us-east-1

# Step 4: View the list of replicas created using describe-table
aws dynamodb describe-table \
    --table-name MusicTable \
    --region us-east-2 \
    --query 'Table.{TableName:TableName,TableStatus:TableStatus,MultiRegionConsistency:MultiRegionConsistency,Replicas:Replicas[*].{Region:RegionName,Status:ReplicaStatus}}'

# Step 5: To verify that replication is working, add a new item to the Music table in US East (Ohio)
aws dynamodb put-item \
    --table-name MusicTable \
    --item '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \
    --region us-east-2

# Step 6: Wait for a few seconds, and then check to see whether the item has been 
# successfully replicated to US East (N. Virginia) and Europe (Ireland)
aws dynamodb get-item \
    --table-name MusicTable \
    --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \
    --region us-east-1

aws dynamodb get-item \
    --table-name MusicTable \
    --key '{"Artist": {"S":"item_1"},"SongTitle": {"S":"Song Value 1"}}' \
    --region us-east-2

# Step 7: Delete the replica table in US East (N. Virginia) Region
aws dynamodb delete-table \
    --table-name MusicTable \
    --region us-east-1

# Clean up: Delete the primary table
aws dynamodb delete-table \
    --table-name MusicTable \
    --region us-east-2
```

------

# Seguridad de las tablas globales de DynamoDB
<a name="globaltables_MA_security"></a>

Las réplicas de tablas globales son tablas de DynamoDB, por lo que se utilizan los mismos métodos para controlar el acceso a las réplicas que se utilizan para las tablas de una sola región, incluyendo las políticas de identidad y las políticas basadas en recursos de AWS Identity and Access Management (IAM). En este tema, se describe cómo proteger las tablas globales de varias cuentas de DynamoDB mediante permisos de IAM y cifrado de AWS Key Management Service (AWS KMS). Obtendrá información sobre las políticas basadas en recursos y los roles vinculados a servicios (SLR) que permiten la replicación y el escalado automático entre regiones y entre cuentas, los permisos de IAM necesarios para crear, actualizar y eliminar tablas globales, para tablas de coherencia final de varias regiones (MREC). También obtendrá información sobre las claves de cifrado de AWS KMS para administrar de forma segura la replicación entre regiones.

Proporciona información detallada sobre las políticas basadas en recursos y los permisos necesarios para establecer la replicación de tablas entre cuentas y regiones. Comprender este modelo de seguridad es fundamental para los clientes que necesitan implementar soluciones de replicación de datos seguras y entre cuentas.

## Autorización de la entidad principal del servicio para la replicación
<a name="globaltables_MA_service_principal"></a>

Las tablas globales de varias cuentas de DynamoDB utilizan un enfoque de autorización distinto, ya que la replicación se realiza más allá de los límites de las cuentas. Esto se consigue mediante la entidad principal del servicio de replicación de DynamoDB: `replication.dynamodb.amazonaws.com`. Cada cuenta participante debe incluir explícitamente esa entidad principal en la política de recursos de la tabla de réplicas, lo que concede permisos que puedan restringirse a réplicas específicas en función de las condiciones del contexto de origen de las claves como `aws:SourceAccount`, `aws:SourceArn`, etc. (consulte las [claves de condición globales de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) para obtener más información). Los permisos son bidireccionales, lo que significa que todas las réplicas deben concederse permisos de forma explícita entre sí antes de poder establecer la replicación en un par de réplicas concreto.

Los permisos de las entidades principales de servicio siguientes son esenciales para la replicación entre cuentas:
+ `dynamodb:ReadDataForReplication` otorga la capacidad de leer datos con fines de replicación. Este permiso permite leer los cambios de una réplica y propagarlos a otras réplicas.
+ `dynamodb:WriteDataForReplication` permite escribir los datos replicados en las tablas de destino. Este permiso permite sincronizar los cambios en todas las réplicas de la tabla global.
+ `dynamodb:ReplicateSettings` permite la sincronización de la configuración de la tabla entre las réplicas, lo que proporciona una configuración coherente en todas las tablas participantes.

Cada réplica debe conceder los permisos anteriores a todas las demás réplicas y a sí misma, es decir, las condiciones del contexto de origen deben incluir el conjunto completo de réplicas que componen la tabla global. Estos permisos se verifican para cada nueva réplica cuando se agrega a una tabla global de varias cuentas. Esto verifica que las operaciones de replicación las realice solo el servicio DynamoDB autorizado y solo entre las tablas previstas.

## Roles vinculados a servicios para tablas globales de varias cuentas
<a name="globaltables_MA_service_linked_roles"></a>

Las tablas globales de varias cuentas de DynamoDB replican la configuración en todas las réplicas, de modo que cada réplica se configura de forma idéntica con un rendimiento coherente y proporciona una experiencia de conmutación por error perfecta. La replicación de la configuración se controla mediante el permiso `ReplicateSettings` de la entidad principal de servicio, pero también confiamos en roles vinculados a servicios (SLR) para gestionar determinadas capacidades de replicación y escalado automático entre cuentas y entre regiones. Estos roles se configuran solo una vez por cuenta de AWS. Una vez creados, los mismos roles sirven en todas las tablas globales de la cuenta. Para obtener más información acerca de los roles vinculados a servicios, consulte [Uso de roles vinculados a servicios](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) en la Guía del usuario de IAM.

### Rol vinculado al servicio de administración de configuración
<a name="globaltables_MA_settings_management_slr"></a>

Amazon DynamoDB crea automáticamente el rol vinculado al servicio (SLR) AWSServiceRoleForDynamoDBGlobalTableSettingsManagement cuando se crea la primera réplica de una tabla global de varias cuentas en la cuenta. Este rol administra la replicación de la configuración entre regiones y cuentas por usted.

Al aplicar políticas basadas en recursos a las réplicas, confirme que no deniega ninguno de los permisos definidos en `AWSServiceRoleForDynamoDBGlobalTableSettingsManagement` a la entidad principal de SLR, ya que esto podría interferir con la administración de la configuración y podría afectar la replicación si el rendimiento no coincide en todas las réplicas o GSI. Si deniega los permisos de SLR necesarios, la replicación hacia y desde las réplicas afectadas podría detenerse y el estado de la tabla de réplicas cambiará a `REPLICATION_NOT_AUTHORIZED`. Para tablas globales de varias cuentas, si una réplica permanece en el estado `REPLICATION_NOT_AUTHORIZED` durante más de 20 horas, la réplica se convierte irreversiblemente en una tabla de DynamoDB de una sola región. SLR tiene los siguientes permisos:
+ `application-autoscaling:DeleteScalingPolicy`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:RegisterScalableTarget`

### Rol vinculado a un servicio de escalado automático
<a name="globaltables_MA_autoscaling_slr"></a>

Al configurar una tabla global para el modo de capacidad aprovisionada, se debe configurar el escalado automático para la tabla global. El escalado automático de DynamoDB utiliza el servicio de escalado automático de aplicaciones de AWS para ajustar dinámicamente la capacidad de rendimiento aprovisionada en las réplicas de tabla global. El servicio de escalado automático de aplicaciones crea un rol vinculado a un servicio (SLR) denominado [AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html). Este rol vinculado al servicio se crea automáticamente en la cuenta de AWS al configurar el escalado automático para una tabla de DynamoDB. Permite el escalado automático de aplicaciones para administrar la capacidad de la tabla aprovisionada y crear alarmas de CloudWatch.

Al aplicar políticas basadas en recursos a las réplicas, asegúrese de no denegar ninguno de los permisos definidos en la [AWSApplicationAutoscalingDynamoDBTablePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSApplicationAutoscalingDynamoDBTablePolicy.html) a la entidad principal de SLR de escalado automático de aplicaciones, ya que esto interrumpiría la funcionalidad de escalado automático.

## Uso de las tablas globales de AWS IAM
<a name="globaltables_MA_iam"></a>

En las siguientes secciones, se describen los permisos necesarios para las distintas operaciones de las tablas globales y se proporcionan ejemplos de políticas que le ayudarán a configurar el acceso adecuado para los usuarios y aplicaciones.

**nota**  
Todos los permisos descritos se deben aplicar al ARN del recurso de tabla específico en las regiones afectadas. El ARN del recurso de tabla sigue el formato `arn:aws:dynamodb:region:account-id:table/table-name`, en el que debe especificar los valores reales de la región, el ID de cuenta y el nombre de la tabla.

A continuación, se muestran los temas paso a paso que cubrimos en las secciones siguientes:
+ Creación de tablas globales de varias cuentas y agregación de réplicas
+ Actualización de una tabla global de varias cuentas
+ Eliminación de tablas globales y réplicas

### Creación de tablas globales y agregación de réplicas
<a name="globaltables_MA_creating"></a>

#### Permisos para crear tablas globales
<a name="globaltables_MA_creating_permissions"></a>

Cuando se agrega una nueva réplica a una tabla regional para formar una tabla global de varias cuentas o a una tabla global de varias cuentas existente, la entidad principal de IAM que realice la acción debe contar con la autorización de todos los miembros existentes. Todos los miembros existentes deben incluir el siguiente permiso en su política de tablas para que la adición de réplicas se realice correctamente:
+ `dynamodb:AssociateTableReplica`: este permiso permite unir las tablas en una configuración de tabla global. Este es el permiso fundamental que permite el establecimiento inicial de la relación de replicación.

Este control preciso permite que solo las cuentas autorizadas participen en la configuración de la tabla global.

#### Políticas de IAM de ejemplo para crear tablas globales
<a name="globaltables_MA_creating_examples"></a>

##### Ejemplo de políticas de IAM para una configuración de 2 réplicas
<a name="globaltables_MA_2replica_example"></a>

La configuración de las tablas globales de varias cuentas sigue un flujo de autorización específico que proporciona una replicación segura. Examinemos cómo funciona esto en la práctica analizando un escenario práctico en el que un cliente desea establecer una tabla global con dos réplicas. La primera réplica (réplica A) reside en la cuenta A de la región ap-east-1, mientras que la segunda réplica (réplica B) se encuentra en la cuenta B de la región eu-south-1.
+ En la cuenta de origen (cuenta A), el proceso comienza con la creación de la tabla de réplicas principal. El administrador de la cuenta debe adjuntar a esta tabla una política basada en recursos que conceda de forma explícita los permisos necesarios a la cuenta de destino (cuenta B) para realizar la asociación. Esta política también autoriza al servicio de replicación de DynamoDB a realizar las acciones de replicación esenciales.
+ La cuenta de destino (cuenta B) sigue un proceso similar al adjuntar la política basada en recursos correspondiente al crear la réplica y hacer referencia al ARN de la tabla de origen que se utilizará para crear la réplica. Esta política refleja los permisos otorgados por la cuenta A, lo que crea una relación bidireccional de confianza. Antes de establecer la replicación, DynamoDB valida estos permisos entre cuentas para comprobar que existe la autorización adecuada.

Para establecer esta configuración:
+ El administrador de la cuenta A debe adjuntar primero la política basada en recursos a réplica A. Esta política concede de forma explícita los permisos necesarios a la cuenta B y al servicio de replicación de DynamoDB.
+ Del mismo modo, el administrador de la cuenta B debe adjuntar una política de coincidencia a la réplica B, con las referencias de cuenta invertidas para conceder los permisos correspondientes a la cuenta A; en la llamada de creación de la tabla para crear la réplica B, se hace referencia a la réplica A como tabla de origen.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [ "111122223333", "444455556666" ],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
                        "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB"
                    ]
                }
            }
        },
        {
            "Sid": "AllowTrustedAccountsToJoinThisGlobalTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:AssociateTableReplica"
            ],
            "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
            "Principal": {"AWS": ["444455556666"]}
        }
    ]
}
```

------

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [ "111122223333", "444455556666" ],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
                        "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB"
                    ]
                }
            }
        }
    ]
}
```

------

##### Ejemplo de políticas de IAM para una configuración de 3 réplicas
<a name="globaltables_MA_3replica_example"></a>

En esta configuración, tenemos 3 réplicas: la réplica A, la réplica B y la réplica C en la cuenta A, la cuenta B y la cuenta C, respectivamente. La réplica A es la primera réplica, que comienza como una tabla regional y a la que, a continuación, se agregan la réplica B y la réplica C.
+ El administrador de la cuenta A primero debe adjuntar la política basada en recursos a la réplica A, lo que permitirá la replicación con todos los miembros y permitirá a las entidades principales de IAM de las cuentas B y C agregar réplicas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [ "111122223333", "444455556666", "123456789012" ],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
                        "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB",
                        "arn:aws:dynamodb:us-east-1:123456789012:table/ReplicaC"
                    ]
                }
            }
        },
        {
            "Sid": "AllowTrustedAccountsToJoinThisGlobalTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:AssociateTableReplica"
            ],
            "Resource": "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
            "Principal": { "AWS": [ "444455556666", "123456789012" ] }
        }
    ]
}
```

------
+ El administrador de la cuenta B debe agregar una réplica (réplica B) que apunte a la réplica A como origen. La réplica B tiene la siguiente política que permite la replicación entre todos los miembros y permite a la cuenta C agregar una réplica:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [ "111122223333", "444455556666", "123456789012" ],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
                        "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB",
                        "arn:aws:dynamodb:us-east-1:123456789012:table/ReplicaC"
                    ]
                }
            }
        },
        {
            "Sid": "AllowTrustedAccountsToJoinThisGlobalTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:AssociateTableReplica"
            ],
            "Resource": "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB",
            "Principal": { "AWS": [ "123456789012" ] }
        }
    ]
}
```

------
+ Por último, el administrador de la cuenta C crea una réplica con la siguiente política que permite los permisos de replicación entre todos los miembros. La política no permite agregar más réplicas.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBActionsNeededForSteadyStateReplication",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ReadDataForReplication",
                "dynamodb:WriteDataForReplication",
                "dynamodb:ReplicateSettings"
            ],
            "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/ReplicaC",
            "Principal": {"Service": ["replication.dynamodb.amazonaws.com"]},
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": [ "111122223333", "444455556666" ],
                    "aws:SourceArn": [
                        "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
                        "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB"
                    ]
                }
            }
        }
    ]
}
```

------

### Actualización de una tabla global de varias cuentas
<a name="globaltables_MA_updating"></a>

Para modificar la configuración de réplica de una tabla global existente mediante la API de UpdateTable, necesita el siguiente permiso en el recurso de tabla de la región en la que va a realizar la llamada a la API: `dynamodb:UpdateTable`

Además, puede actualizar otras configuraciones de tablas globales, como las políticas de escalado automático y la configuración del tiempo de vida. Se requieren los siguientes permisos para estas operaciones de actualización adicionales:

Para actualizar la configuración de Periodo de vida con la API de `UpdateTimeToLive`, debe tener el siguiente permiso en el recurso de la tabla en todas las regiones que contienen réplicas: `dynamodb:UpdateTimeToLive`

Para actualizar una política de escalado automático de réplicas con la API de `UpdateTableReplicaAutoScaling`, debe tener los siguientes permisos en el recurso de la tabla en todas las regiones que contengan réplicas:
+ `application-autoscaling:DeleteScalingPolicy`
+ `application-autoscaling:DeleteScheduledAction`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DescribeScalingActivities`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DescribeScheduledActions`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:PutScheduledAction`
+ `application-autoscaling:RegisterScalableTarget`

**nota**  
Debe proporcionar permisos de `dynamodb:ReplicateSettings` en todas las regiones y cuentas de réplica para que la tabla de actualización se realice correctamente. Si alguna réplica no proporciona permisos para replicar la configuración en ninguna réplica de la tabla global de varias cuentas, todas las operaciones de actualización de todas las réplicas producirán un error con `AccessDeniedException` hasta que se fijen los permisos.

### Eliminación de tablas globales y réplicas
<a name="globaltables_MA_deleting"></a>

Para eliminar una tabla global, debe eliminar todas las réplicas. A diferencia de la tabla global con la misma cuenta, no puede utilizar `UpdateTable` para eliminar una tabla de réplica en una región remota y cada réplica se debe eliminar mediante la API `DeleteTable` de la cuenta que la controla.

#### Permisos para eliminar tablas globales y réplicas
<a name="globaltables_MA_deleting_permissions"></a>

Los siguientes permisos son necesarios para eliminar réplicas individuales y para eliminar por completo tablas globales. Al eliminar una configuración de tabla global, solo se elimina la relación de replicación entre tablas de distintas regiones. No se eliminará la tabla de DynamoDB de la última región restante. La tabla de la última región sigue existiendo como tabla estándar de DynamoDB con los mismos datos y configuraciones.

Necesita los siguientes permisos en el recurso de tabla en cada región en la que vaya a eliminar una réplica:
+ `dynamodb:DeleteTable`
+ `dynamodb:DeleteTableReplica`

## Uso de las tablas globales de AWS KMS
<a name="globaltables_MA_kms"></a>

Como todas las tablas de DynamoDB, las réplicas de tablas globales siempre cifran los datos en reposo mediante claves de cifrado almacenadas en AWS Key Management Service (AWS KMS).

**nota**  
A diferencia de la tabla global de la misma cuenta, se pueden configurar diferentes réplicas en una tabla global de varias cuentas con un tipo de clave de AWS KMS diferente (clave propia de AWS o clave administrada por el cliente). Las tablas globales de varias cuentas no admiten claves administradas por AWS.

Las tablas globales de varias cuentas que utilizan CMK requieren que la política de claves de cada réplica otorgue permisos a la entidad principal del servicio de replicación de DynamoDB (`replication.dynamodb.amazonaws.com`) para acceder a la clave para la administración de la replicación y la configuración. Los siguientes permisos son necesarios:
+ `kms:Decrypt`
+ `kms:ReEncrypt*`
+ `kms:GenerateDataKey*`
+ `kms:DescribeKey`

**Importante**

DynamoDB requiere acceso a la clave de cifrado de la réplica para eliminarla. Si desea desactivar o eliminar una clave administrada por el cliente que se utiliza para cifrar una réplica porque va a eliminar la réplica, primero debe eliminar la réplica, esperar a que la tabla se elimine del grupo de replicación llamando a describir en una de las demás réplicas y luego desactivar o eliminar la clave.

Si desactiva o revoca el acceso de DynamoDB a una clave administrada por el cliente que se utiliza para cifrar una réplica, la replicación hacia y desde la réplica se detendrá y el estado de la réplica cambiará a `INACCESSIBLE_ENCRYPTION_CREDENTIALS`. Si una réplica permanece en el estado `INACCESSIBLE_ENCRYPTION_CREDENTIALS` durante más de 20 horas, la réplica se convierte irreversiblemente en una tabla de DynamoDB de una sola región.

### Ejemplo de política de AWS KMS
<a name="globaltables_MA_kms_example"></a>

La política de AWS KMS permite a DynamoDB acceder a ambas claves de AWS KMS para la replicación entre las réplicas A y B. Las claves de AWS KMS adjuntas a la réplica de DynamoDB en cada cuenta deben actualizarse con la siguiente política:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": { "Service": "replication.dynamodb.amazonaws.com" },
        "Action": [
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*",
            "kms:DescribeKey"
        ],
        "Resource": "*",
        "Condition": {
            "StringEquals": {
                "aws:SourceAccount": [ "111122223333", "444455556666" ],
                "aws:SourceArn": [
                    "arn:aws:dynamodb:ap-east-1:111122223333:table/ReplicaA",
                    "arn:aws:dynamodb:eu-south-1:444455556666:table/ReplicaB"
                ]
            }
        }
      }
   ]
 }
```

------