

# Tabelas globais de várias contas do DynamoDB
<a name="globaltables-MultiAccount"></a>

As tabelas globais de várias contas replicam automaticamente os dados da tabela do DynamoDB em várias regiões da AWS e várias contas da AWS para melhorar a resiliência, isolar workloads em nível de conta e aplicar controles distintos de segurança e governança. Cada tabela-réplica reside em uma conta da AWS distinta, permitindo o isolamento de falhas em nível de região e de conta. Também é possível alinhar as réplicas à sua estrutura organizacional da AWS. As tabelas globais de várias contas oferecem benefícios adicionais de isolamento, governança e segurança em comparação às tabelas globais da mesma conta.

As tabelas globais de várias contas oferecem os seguintes benefícios:
+ Replicação automática de tabelas do DynamoDB nas regiões da AWS escolhidas por você.
+ Fortalecimento da segurança e da governança ao replicar dados entre contas com políticas, barreiras de proteção e limites de conformidade distintos.
+ Aprimoramento da resiliência operacional e do isolamento de falhas em nível de conta ao posicionar réplicas em contas AWS separadas.
+ Alinhamento das workloads por unidade de negócios ou propriedade usando uma estratégia de várias contas.
+ Simplificação da atribuição de custos, faturando cada réplica na respectiva conta da AWS.

Para ter mais informações, consulte [Benefícios do uso de várias contas da AWS](https://docs.aws.amazon.com/whitepapers/latest/organizing-your-aws-environment/benefits-of-using-multiple-aws-accounts.html). Se suas workloads não precisarem de replicação em várias contas ou se quiser simplificar o gerenciamento de réplicas com substituições locais, você pode continuar usando tabelas globais da mesma conta.

É possível configurar tabelas globais de várias contas com [Consistência final multirregional (MREC)](V2globaltables_HowItWorks.md#V2globaltables_HowItWorks.consistency-modes.mrec). Não é possível usar tabelas globais configuradas para [Consistência forte multirregional (MRSC)](V2globaltables_HowItWorks.md#V2globaltables_HowItWorks.consistency-modes.mrsc) no modelo de várias contas.

**Topics**
+ [Como funcionam as tabelas globais do DynamoDB](V2globaltables_MA_HowItWorks.md)
+ [Tutoriais: criar de tabelas globais de várias contas](V2globaltables_MA.tutorial.md)
+ [Segurança de tabelas globais do DynamoDB](globaltables_MA_security.md)

# Como funcionam as tabelas globais do DynamoDB
<a name="V2globaltables_MA_HowItWorks"></a>

As tabelas globais de várias contas estendem os recursos totalmente gerenciados, multirregionais, sem servidor e multiativos das tabelas globais do DynamoDB para abranger várias contas da AWS. As tabelas globais de várias contas replicam dados entre regiões e contas da AWS, oferecendo a mesma funcionalidade ativa-ativa das tabelas globais da mesma conta. Quando você grava em qualquer réplica, o DynamoDB replica os dados em todas as outras réplicas.

As principais diferenças em relação às tabelas globais da mesma conta incluem:
+ É possível usar a replicação multirregional com tabelas globais com consistência final multirregional (MREC).
+ Só é possível adicionar réplicas começando com uma tabela de região única. Não é possível converter uma tabela global existente da mesma conta em uma configuração de várias contas. Para migrar e criar uma tabela global de várias contas, primeiro é necessário excluir as réplicas existentes para retornar a uma tabela de região única.
+ Cada réplica deve residir em uma conta da AWS separada. Para uma tabela global de várias contas com *N* réplicas, é necessário ter *N* contas.
+ Por padrão, as tabelas globais de várias contas usam configurações de tabela unificadas em todas as réplicas. Todas as réplicas compartilham automaticamente a mesma configuração (como modo de throughput e TTL) e, diferentemente das tabelas globais da mesma conta, essas configurações não podem ser substituídas por réplicas.
+ Os clientes devem fornecer permissões de replicação à entidade principal do serviço de tabelas globais do DynamoDB em suas políticas de recursos.

As tabelas globais de várias contas usam a mesma tecnologia de replicação subjacente das tabelas globais da mesma conta. As configurações da tabela são replicadas automaticamente em todas as réplicas regionais e os clientes não podem substituí-las por réplicas nem personalizá-las. Isso garante uma configuração consistente e um comportamento previsível em várias contas da AWS que compartilham a mesma tabela global.

As configurações nas tabelas globais do DynamoDB definem como uma tabela se comporta e como os dados são replicados nas regiões. Essas configurações são definidas por meio de APIs do ambiente de gerenciamento do DynamoDB durante a criação da tabela ou ao adicionar uma nova réplica regional.

Ao criar uma tabela global de várias contas, os clientes devem definir `GlobalTableSettingsReplicationMode = ENABLED` para cada réplica regional. Isso garante que as alterações de configuração feitas em uma região se propaguem automaticamente para todas as outras regiões que compartilham a tabela global.

É possível habilitar a replicação das configurações após a criação da tabela. Isso é adequado para o cenário em que uma tabela é criada originalmente como uma tabela regional e depois atualizada para uma tabela global de várias contas.

**Configurações sincronizadas**

As seguintes configurações são sempre sincronizadas entre as réplicas em uma tabela global de várias contas:

**nota**  
Diferentemente das tabelas globais da mesma conta, as tabelas globais de várias contas não permitem substituições por região para essas configurações. A única exceção é que as substituições de políticas de ajuste de escala automático de leitura (tabelas e GSIs) são permitidas, pois são recursos externos separados.
+ Modo de capacidade (capacidade provisionada ou sob demanda)
+ Capacidade provisionada de leitura e gravação da tabela
+ Ajuste de escala automático de leitura e gravação da tabela
+ Definição do índice secundário local (LSI)
+ Definição do Índice Secundário Global (GSI)
+ Capacidade provisionada de leitura e gravação do GSI
+ Ajuste de escala automático de leitura e gravação do GSI
+ Definição de streams no modo MREC
+ Vida útil (TTL)
+ Throughput a quente
+ Throughput máximo sob demanda de leitura e gravação

**Configurações não sincronizadas**

As configurações a seguir não são sincronizadas entre as réplicas e devem ser definidas de forma independente para cada tabela-réplica em cada região.
+ Classe de tabela
+ Tipo de criptografia do lado do servidor (SSE)
+ Recuperação para um ponto no tempo
+ ID da chave do KMS da criptografia do lado do servidor (SSE)
+ Proteção contra exclusão
+ Kinesis Data Streams (KDSD)
+ Tags
+ Política de recursos
+ Tabela Cloudwatch-Contributor Insights (CCI)
+ GSI Cloudwatch-Contributor Insights (CCI)

## Monitoramento
<a name="V2globaltables_MA_HowItWorks.monitoring"></a>

Tabelas globais configuradas para consistência final em várias regiões (MREC) publicam a métrica [`ReplicationLatency`](metrics-dimensions.md#ReplicationLatency) no CloudWatch. Essa métrica controla o tempo decorrido entre quando um item foi gravado em uma tabela-réplica e quando esse item aparece em outra réplica na tabela global. `ReplicationLatency` é expresso em milissegundos e é emitido para cada par de regiões de origem e destino em uma tabela global.

Os valores típicos de `ReplicationLatency` dependem da distância entre as regiões da AWS escolhidas, bem como de outras variáveis como tipo de workload e throughput. Por exemplo, uma réplica de origem na região Oeste dos EUA (N. da Califórnia) (us-west-1) tem uma `ReplicationLatency` menor para a região Oeste dos EUA (Oregon) (us-west-2) em comparação com a região África (Cidade do Cabo) (af-south-1).

Um valor elevado para `ReplicationLatency` pode indicar que as atualizações de uma réplica não se propagaram para outras tabelas-réplica em tempo hábil. Nesse caso, você pode redirecionar temporariamente as atividades de leitura e gravação da aplicação para outra região da AWS.

**Lidar com problemas de latência de replicação em tabelas globais de várias contas**

Se `ReplicationLatency` exceder três horas devido a problemas causados pelo cliente em uma tabela-réplica, o DynamoDB enviará uma notificação solicitando que o cliente resolva o problema subjacente. Os problemas comuns causados pelo cliente que podem impedir a replicação incluem:
+ Remover as permissões necessárias da política de recursos da tabela-réplica.
+ Optar por não aderir a uma região da AWS que hospede uma réplica da tabela global de várias contas.
+ Negar as permissões da chave do AWS KMS da tabela necessárias para descriptografar dados.

Dentro de três horas, o DynamoDB enviará uma notificação inicial de alta latência de replicação, seguida de uma segunda notificação após vinte horas se o problema continuar sem solução. Se o problema não for corrigido dentro do período exigido, o DynamoDB desassociará automaticamente a réplica da tabela global. Depois, a réplica afetada será convertida em uma tabela regional.

# Tutoriais: criar de tabelas globais de várias contas
<a name="V2globaltables_MA.tutorial"></a>

Esta seção contém instruções passo a passo para criar tabelas globais do DynamoDB que abrangem várias contas da AWS.

## Criar uma tabela global de várias contas usando o console do DynamoDB
<a name="create-ma-gt-console"></a>

Siga estas etapas para criar uma tabela global de várias contas usando o Console de gerenciamento da AWS. O exemplo a seguir cria uma tabela global com tabelas-réplica nos Estados Unidos.

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) para a primeira conta (por exemplo, *111122223333*).

1. Para este exemplo, escolha **Leste dos EUA (Ohio)** no seletor de região na barra de navegação.

1. No painel de navegação, no lado esquerdo do console, selecione **Tables** (Tabelas).

1. Selecione **Create Table** (Criar tabela).

1. Na página **Criar tabela**:

   1. Em **Table name** (Nome da tabela), insira **MusicTable**.

   1. Em **Partition key**, (Chave de partição), insira **Artist**.

   1. Em **Chave de classificação**, insira **SongTitle**.

   1. Mantenha o restante das configurações padrão e escolha **Criar tabela**.

1. Adicione a seguinte política de recursos à tabela.

------
#### [ 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. Essa nova tabela serve como a primeira tabela de réplica em uma nova tabela global. Ela é o protótipo das outras tabelas-réplica que serão adicionadas posteriormente.

1. Aguarde a tabela se tornar **ativa**. Para a tabela recém-criada, na guia **Tabelas globais**, acesse **Replicação de configurações** e clique em **Habilitar**.

1. Saia dessa conta (aqui, *111122223333*).

1. Faça login no Console de gerenciamento da AWS e abra o console do DynamoDB em [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) para a segunda conta (por exemplo, *444455556666*).

1. Para este exemplo, escolha **Leste dos EUA (Norte da Virgínia)** no seletor de região na barra de navegação.

1. O console garante que não exista uma tabela com o mesmo nome na região selecionada. Se existir uma tabela com o mesmo nome, será necessário excluir a tabela existente para criar outra tabela-réplica nessa região.

1. No menu suspenso próximo a **Criar tabela**, escolha **Criar de outra conta**

1. Na página **Criar tabela de outra conta**:

   1. Adicione **arn:aws:dynamodb:us-east-2:*111122223333*:table/MusicTable** como ARN da tabela de origem.

   1. Em **ARNs das réplicas da tabela**, adicione novamente o ARN **arn:aws:dynamodb:us-east-2:*111122223333*:table/MusicTable** da tabela de origem. Se várias réplicas já existirem como parte de uma tabela global de várias contas, será necessário adicionar todas as réplicas existentes a ReplicaTableARN.

   1. Mantenha o restante das configurações padrão e escolha **Enviar**.

1. A guia **Tabelas globais** da tabela “Music” (e de qualquer outra tabela-réplica) mostra que a tabela foi replicada em várias regiões.

1. Como testar a replicação:

   1. É possível usar qualquer uma das regiões em que exista uma réplica para essa tabela.

   1. Escolha **Explore table items** (Explorar itens da tabela).

   1. Selecione **Create Item** (Criar item).

   1. Insira **item\$11** para **Artist (Artista)** e **Song Value 1** para **SongTitle (Título da música)**.

   1. Selecione **Create Item** (Criar item).

   1. Verifique a replicação mudando para outras regiões:

   1. Verifique se a tabela Music (Música) contém o item que você criou.

## Criar uma tabela global de várias contas usando a AWS CLI
<a name="ma-gt-cli"></a>

Os exemplos a seguir mostram como criar uma tabela global de várias contas usando a AWS CLI. Esses exemplos demonstram o fluxo de trabalho completo para configurar a replicação entre contas.

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

Use os comandos da AWS CLI a seguir para criar uma tabela global de várias contas com replicação entre contas.

```
# 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
```

------

# Segurança de tabelas globais do DynamoDB
<a name="globaltables_MA_security"></a>

As réplicas de tabelas globais são tabelas do DynamoDB, então você usa os mesmos métodos para controlar o acesso às réplicas que usa para tabelas de região única, incluindo políticas de identidade e políticas baseadas em recursos do AWS Identity and Access Management (IAM). Este tópico aborda como proteger tabelas globais de várias contas do DynamoDB usando permissões do IAM e a criptografia do AWS Key Management Service (AWS KMS). Você aprenderá mais sobre políticas baseadas em recursos e perfis vinculados ao serviço (SLR) que permitem a replicação e o ajuste de escala automático entre contas e entre regiões, bem como sobre as permissões do IAM necessárias para criar, atualizar e excluir tabelas globais, para ter tabelas com consistência final multirregional (MREC). Você também aprenderá mais sobre chaves de criptografia do AWS KMS para gerenciar a replicação entre regiões com segurança.

Este tópico contém informações detalhadas sobre as políticas e permissões baseadas em recursos necessárias para estabelecer a replicação de tabelas entre contas e entre regiões. Compreender esse modelo de segurança é fundamental para clientes que precisam implementar soluções seguras de replicação de dados entre contas.

## Autorização de replicação à entidade principal do serviço
<a name="globaltables_MA_service_principal"></a>

As tabelas globais de várias contas do DynamoDB usam uma abordagem de autorização distinta porque a replicação é realizada entre os limites da conta. Isso é feito usando a entidade principal do serviço de replicação do DynamoDB: `replication.dynamodb.amazonaws.com`. Cada conta participante deve dar permissão explícita a essa entidade principal na política de recursos da tabela-réplica, concedendo a ela permissões que podem se restringir a réplicas específicas de acordo com as condições de contexto da origem em chaves como `aws:SourceAccount`, `aws:SourceArn` etc. Para ver detalhes, consulte [Chaves de condição globais da AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html). As permissões são bidirecionais, o que significa que todas as réplicas devem conceder permissões explicitamente umas às outras para que a replicação seja estabelecida em qualquer par específico de réplicas.

As seguintes permissões de entidade principal de serviço são essenciais para a replicação entre contas:
+ `dynamodb:ReadDataForReplication` concede permissão para ler dados para fins de replicação. Esta permissão possibilita que as alterações em uma réplica sejam lidas e propagadas para outras réplicas.
+ `dynamodb:WriteDataForReplication` permite a gravação de dados replicados nas tabelas de destino. Esta permissão possibilita que as alterações sejam sincronizadas em todas as réplicas na tabela global.
+ `dynamodb:ReplicateSettings` permite a sincronização das configurações da tabela entre as réplicas, oferecendo uma configuração consistente em todas as tabelas participantes.

Cada réplica deve conceder as permissões acima a todas as outras réplicas e a si mesma; isto é, as condições de contexto da origem devem incluir o conjunto completo de réplicas que compõe a tabela global. Essas permissões são verificadas para cada nova réplica quando ela é adicionada a uma tabela global de várias contas. Esse processo verifica se as operações de replicação são realizadas somente pelo serviço autorizado do DynamoDB e apenas entre as tabelas pretendidas.

## Perfis vinculados ao serviço para tabelas globais de várias contas
<a name="globaltables_MA_service_linked_roles"></a>

As tabelas globais de várias contas do DynamoDB replicam as configurações em todas as réplicas para que cada réplica seja configurada de forma idêntica com um throughput consistente e ofereça uma experiência de failover contínua. A replicação das configurações é controlada por meio da permissão `ReplicateSettings` da entidade principal do serviço, mas também dependemos de perfis vinculados ao serviço (SLRs) para gerenciar determinados recursos de replicação e ajuste de escala automático entre contas e entre regiões. É necessário configurar esses perfis somente uma vez por conta da AWS. Depois de criados, os mesmos perfis atendem a todas as tabelas globais da sua conta. Para ter mais informações sobre perfis vinculados ao serviço, consulte [Criar um perfil vinculado ao serviço](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html) no Guia do usuário do IAM.

### Perfil vinculado ao serviço de gerenciamento de configurações
<a name="globaltables_MA_settings_management_slr"></a>

O Amazon DynamoDB cria automaticamente o perfil vinculado ao serviço (SLR) AWSServiceRoleForDynamoDBGlobalTableSettingsManagement quando a primeira réplica de tabela global de várias contas é criada na conta. Esse perfil gerencia a replicação de configurações entre contas e entre regiões para você.

Ao aplicar políticas baseadas em recursos às réplicas, não negue nenhuma das permissões definidas em `AWSServiceRoleForDynamoDBGlobalTableSettingsManagement` à entidade principal do SLR, pois isso pode interferir no gerenciamento de configurações e prejudicar a replicação se o throughput não corresponder entre as réplicas ou os GSIs. Se você negar as permissões de SLR necessárias, a replicação entre as réplicas afetadas será interrompida e o status da tabela-réplica mudará para `REPLICATION_NOT_AUTHORIZED`. No caso de tabelas globais de várias contas, se uma réplica permanecer no estado `REPLICATION_NOT_AUTHORIZED` por mais de vinte horas, ela será convertida irreversivelmente em uma tabela do DynamoDB de região única. O SLR tem as seguintes permissões:
+ `application-autoscaling:DeleteScalingPolicy`
+ `application-autoscaling:DescribeScalableTargets`
+ `application-autoscaling:DescribeScalingPolicies`
+ `application-autoscaling:DeregisterScalableTarget`
+ `application-autoscaling:PutScalingPolicy`
+ `application-autoscaling:RegisterScalableTarget`

### Função vinculada a serviço do IAM para ajuste de escala automático
<a name="globaltables_MA_autoscaling_slr"></a>

Quando você configura uma tabela global para o modo de capacidade provisionada, também deve configurar o ajuste de escala automático para ela. O ajuste de escala automático do DynamoDB usa o serviço AWS Application Auto Scaling para ajustar dinamicamente a capacidade de throughput em suas réplicas de tabela global. O serviço Application Auto Scaling cria um perfil vinculado ao serviço (SLR) chamado [AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html). Esse perfil vinculado ao serviço é criado automaticamente em sua conta da AWS quando você configura o ajuste de escala automático para uma tabela do DynamoDB. Isso permite que o Application Auto Scaling gerencie a capacidade provisionada da tabela e crie alarmes do CloudWatch.

Ao aplicar políticas baseadas em recursos às réplicas, verifique se você não negou nenhuma permissão definida em [AWSApplicationAutoscalingDynamoDBTablePolicy](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSApplicationAutoscalingDynamoDBTablePolicy.html) à entidade principal de SLR do Application Auto Scaling, pois isso interromperá a funcionalidade de ajuste de escala automático.

## Como as tabelas globais usam o IAM da AWS
<a name="globaltables_MA_iam"></a>

As seções a seguir descrevem as permissões necessárias para diferentes operações de tabela global e contêm exemplos de políticas para ajudar você a configurar o acesso apropriado para seus usuários e aplicações.

**nota**  
Todas as permissões descritas devem ser aplicadas ao ARN do recurso de tabela específico nas regiões afetadas. O ARN do recurso de tabela segue o formato `arn:aws:dynamodb:region:account-id:table/table-name`, no qual você precisa especificar os valores reais de região, ID da conta e nome da tabela.

Estes são os tópicos detalhados que abordamos nas seções abaixo:
+ Criar tabelas globais de várias contas e adicionar réplicas
+ Atualizar uma tabela global de várias contas
+ Excluir tabelas globais e remover réplicas

### Criar tabelas globais e adicionar réplicas
<a name="globaltables_MA_creating"></a>

#### Permissões para criar tabelas globais
<a name="globaltables_MA_creating_permissions"></a>

Quando uma nova réplica é adicionada a uma tabela regional para formar uma tabela global de várias contas ou a uma tabela global de várias contas existente, a entidade principal do IAM que executa a ação deve ser autorizada por todos os membros existentes. Todos os membros existentes precisam conceder a seguinte permissão em sua política de tabela para que a inclusão da réplica seja bem-sucedida:
+ `dynamodb:AssociateTableReplica`: esta permissão possibilita que as tabelas sejam unidas em uma configuração de tabela global. Ela é fundamental para o estabelecimento inicial da relação de replicação.

Esse controle preciso permite que somente contas autorizadas participem da configuração da tabela global.

#### Exemplos de política do IAM para criar tabelas globais
<a name="globaltables_MA_creating_examples"></a>

##### Exemplos de política do IAM para a configuração de duas réplicas
<a name="globaltables_MA_2replica_example"></a>

A configuração de tabelas globais de várias contas segue um fluxo de autorização específico que oferece uma replicação segura. Vamos examinar como isso funciona na prática, analisando um cenário prático em que um cliente deseja estabelecer uma tabela global com duas réplicas. A primeira réplica (ReplicaA) reside na conta A na região ap-east-1, enquanto a segunda réplica (ReplicaB) está na conta B na região eu-south-1.
+ Na conta de origem (conta A), o processo começa com a criação da tabela-réplica primária. O administrador da conta deve anexar uma política baseada em recursos a essa tabela que conceda explicitamente as permissões necessárias à conta de destino (conta B) para realizar a associação. Essa política também autoriza o serviço de replicação do DynamoDB a realizar ações essenciais de replicação.
+ A conta de destino (conta B) segue um processo semelhante, anexando uma política baseada em recursos correspondente ao criar a réplica e mencionando o ARN da tabela de origem a ser usado para criar a réplica. Essa política reflete as permissões concedidas pela conta A, criando uma relação bidirecional confiável. Antes de estabelecer a replicação, o DynamoDB valida essas permissões entre contas para verificar se a autorização adequada está em vigor.

Para estabelecer essa configuração:
+ O administrador da conta A deve primeiro anexar a política baseada em recursos à ReplicaA. Essa política concede explicitamente as permissões necessárias à conta B e ao serviço de replicação do DynamoDB.
+ Da mesma forma, o administrador da conta B deve anexar uma política correspondente à ReplicaB na chamada de criação da tabela, revertendo as referências da conta para conceder as permissões correspondentes à conta A e criar a ReplicaB fazendo referência à ReplicaA como tabela de origem.

------
#### [ 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"
                    ]
                }
            }
        }
    ]
}
```

------

##### Exemplos de política do IAM para a configuração de três réplicas
<a name="globaltables_MA_3replica_example"></a>

Nesta configuração, temos três réplicas ReplicaA, ReplicaB e ReplicaC na conta A, conta B e conta C, respectivamente. A ReplicaA é a primeira e começa como uma tabela regional; em seguida, a ReplicaB e a ReplicaC são adicionadas a ela.
+ O administrador da conta A deve primeiro anexar a política baseada em recursos à ReplicaA, permitindo a replicação com todos os membros e que a entidade principal do IAM tanto da conta B quanto da conta C adicione 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" ] }
        }
    ]
}
```

------
+ O administrador da conta B deve adicionar uma réplica (ReplicaB) apontando para a ReplicaA como origem. A ReplicaB tem a seguinte política, que permite a replicação entre todos os membros e que a conta C adicione uma 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 fim, o administrador da conta C cria uma réplica com a política a seguir, que concede permissões de replicação entre todos os membros. A política não permite que nenhuma outra réplica seja adicionada.

------
#### [ 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"
                    ]
                }
            }
        }
    ]
}
```

------

### Atualizar uma tabela global de várias contas
<a name="globaltables_MA_updating"></a>

Para modificar as configurações de réplica de uma tabela global existente usando a API UpdateTable, é preciso ter a seguinte permissão no recurso de tabela na região em que você está fazendo a chamada de API: `dynamodb:UpdateTable`.

Além disso, você pode atualizar outras configurações da tabela global, como políticas de ajuste de escala automático e configurações de tempo de vida. As seguintes permissões são necessárias para essas operações adicionais de atualização:

Para atualizar as configurações de vida útil com a API `UpdateTimeToLive`, é necessário ter a seguinte permissão no recurso de tabela em todas as regiões que contêm réplicas: `dynamodb:UpdateTimeToLive`.

Para atualizar uma política de ajuste de escala automático da réplica com a API `UpdateTableReplicaAutoScaling`, é necessário ter as seguintes permissões no recurso de tabela em todas as regiões que contêm 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**  
É preciso fornecer permissões `dynamodb:ReplicateSettings` em todas as regiões e contas de réplica para que a tabela de atualização tenha êxito. Se alguma réplica não fornecer permissões para replicar configurações em qualquer réplica na tabela global de várias contas, todas as operações de atualização em todas as réplicas falharão, exibindo `AccessDeniedException`, enquanto as permissões não forem corrigidas.

### Excluir tabelas globais e remover réplicas
<a name="globaltables_MA_deleting"></a>

Para excluir uma tabela global, você deve remover todas as réplicas. Ao contrário da tabela global da mesma conta, não é possível usar `UpdateTable` para excluir uma tabela-réplica em uma região remota e cada réplica deve ser excluída por meio da API `DeleteTable` da conta que a controla.

#### Permissões para excluir tabelas globais e remover réplicas
<a name="globaltables_MA_deleting_permissions"></a>

As permissões a seguir são necessárias tanto para remover réplicas individuais quanto para excluir completamente as tabelas globais. A exclusão de uma configuração de tabela global só remove o relacionamento de replicação entre tabelas em diferentes regiões. Ela não exclui a tabela subjacente do DynamoDB na última região restante. A tabela na última região continua existindo como uma tabela padrão do DynamoDB com os mesmos dados e configurações.

Você precisa das seguintes permissões no recurso de tabela em cada região em que você está removendo uma réplica:
+ `dynamodb:DeleteTable`
+ `dynamodb:DeleteTableReplica`

## Como as tabelas globais usam AWS KMS
<a name="globaltables_MA_kms"></a>

Como todas as tabelas do DynamoDB, as réplicas de tabela global sempre criptografam dados em repouso usando chaves de criptografia armazenadas no AWS Key Management Service (AWS KMS).

**nota**  
Ao contrário da tabela global da mesma conta, réplicas diferentes em uma tabela global de várias contas podem ser configuradas com diferentes tipos de chave do AWS KMS (chave de propriedade da AWS ou chave gerenciada pelo cliente). Não é possível usar chaves gerenciadas pela AWS em tabelas globais de várias contas.

As tabelas globais de várias contas que usam CMKs exigem que a política de chave de cada réplica conceda permissões à entidade principal do serviço de replicação (`replication.dynamodb.amazonaws.com`) do DynamoDB para acessar a chave e usá-la na replicação e no gerenciamento de configurações. As seguintes permissões são necessárias:
+ `kms:Decrypt`
+ `kms:ReEncrypt*`
+ `kms:GenerateDataKey*`
+ `kms:DescribeKey`

**Importante**

O DynamoDB exige acesso à chave de criptografia da réplica para excluir uma réplica. Se você quiser desabilitar ou excluir uma chave gerenciada pelo cliente usada para criptografar uma réplica porque está excluindo a réplica, primeiro exclua a réplica, aguarde a remoção da tabela do grupo de replicação chamando describe em uma das outras réplicas e, em seguida, desabilite ou exclua a chave.

Se você desabilitar ou revogar o acesso do DynamoDB a uma chave gerenciada pelo cliente usada para criptografar uma réplica, a replicação de e para a réplica será interrompida e o status da réplica mudará para `INACCESSIBLE_ENCRYPTION_CREDENTIALS`. Se uma réplica permanecer no estado `INACCESSIBLE_ENCRYPTION_CREDENTIALS` por mais de vinte horas, ela será convertida irreversivelmente em uma tabela do DynamoDB de região única.

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

A política AWS KMS permite que o DynamoDB acesse ambas as chaves do AWS KMS para replicação entre as réplicas A e B. As chaves do AWS KMS anexadas à réplica do DynamoDB em cada conta precisam ser atualizadas com a seguinte 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"
                ]
            }
        }
      }
   ]
 }
```

------