

# Restaurar uma tabela do DynamoDB
<a name="pointintimerecovery_restores"></a>

É possível restaurar uma tabela do DynamoDB por meio do backup da PITR ou dos backups sob demanda usando o Console de gerenciamento da AWS, a AWS Command Line Interface (AWS CLI) ou a API do DynamoDB. O processo de recuperação restaura para uma nova tabela do DynamoDB.

## Restaurar uma tabela usando a recuperação pontual
<a name="pointintimerecovery-pitr-restore"></a>

É possível restaurar a tabela para qualquer ponto no tempo até o `EarliestRestoreableDateTime`.

**Importante**  
Se você desabilitar a recuperação para um ponto no tempo e depois habilitá-la novamente em uma tabela, redefinirá a hora de início para a qual pode recuperar essa tabela. Dessa forma, você só pode restaurar imediatamente essa tabela usando a tabela `LatestRestorableDateTime`.

Quando você restaura usando a recuperação para um ponto no tempo, o DynamoDB restaura os dados da tabela para o estado com base na data e hora selecionadas (day:hour:minute:second) em uma nova tabela. Você restaura uma tabela sem consumir o throughput provisionado na tabela. Você pode fazer uma restauração completa da tabela usando a recuperação pontual ou pode definir as configurações da tabela de destino. Você pode alterar as seguintes configurações de tabela na tabela restaurada: 
+ Índices secundários globais (GSIs)
+ Índices secundários locais (LSIs)
+ Modo de faturamento
+ Capacidade de leitura e gravação provisionada
+ Configurações de criptografia

**Importante**  
Ao fazer uma restauração completa da tabela, a tabela de destino é definida com as mesmas unidades de capacidade de leitura e unidades de capacidade de gravação provisionadas da tabela-fonte, conforme gravado no momento em que o backup foi solicitado. Por exemplo, suponha que o throughput provisionado de uma tabela tenha sido reduzido recentemente para 50 unidades de capacidade de leitura e 50 unidades de capacidade de gravação. Você, então, restaura o estado da tabela para três semanas atrás, quando o throughput provisionado estava definido como 100 unidades de capacidade de leitura e 100 unidades de capacidade de gravação. Nesse caso, o DynamoDB restaura os dados da tabela para esse ponto anterior no tempo com o throughput provisionado desse momento (100 unidades de capacidade de leitura e 100 unidades de capacidade de gravação).

Também é possível restaurar os dados da tabela do DynamoDB entre Regiões da AWS para que a tabela restaurada seja criada em uma região diferente daquela na qual a tabela de origem reside. É possível fazer restaurações entre regiões comerciais da AWS, regiões da AWS na China e AWS GovCloud (US). Você paga somente pelos dados transferidos para fora da região de origem e pela restauração para uma nova tabela na região de destino.

**nota**  
A restauração entre regiões não funcionará se a região de origem ou de destino for a Ásia-Pacífico (Hong Kong) ou o Oriente Médio (Bahrein).

As restaurações poderão ser mais rápidas e econômicas se você excluir a criação de alguns ou todos os índices na tabela restaurada. Você deve configurar manualmente os itens a seguir na tabela restaurada: 
+ Políticas de Auto Scaling
+ AWS Identity and Access ManagementPolíticas do 
+ Métricas e alarmes do Amazon CloudWatch Events
+ Tags
+ Configurações de fluxo
+ Configurações de vida útil (TTL)
+ Configurações de recuperação pontual

O tempo necessário para restaurar uma tabela é baseado em vários fatores e nem sempre está correlacionado com o tamanho da tabela.

# Restaurar uma tabela do DynamoDB para um ponto no tempo
<a name="PointInTimeRecovery.Tutorial"></a>

A recuperação em um ponto anterior no tempo (PITR) do Amazon DynamoDB fornece backups contínuos dos dados de tabelas do DynamoDB. Você pode restaurar uma tabela para um ponto no tempo usando o console do DynamoDB ou a AWS Command Line Interface (AWS CLI). O processo de recuperação em um ponto anterior no tempo sempre restaura uma nova tabela.

Se desejar usar a AWS CLI, você precisará configurá-la primeiro. Para obter mais informações, consulte [Acessar o DynamoDB](AccessingDynamoDB.md).

**Topics**
+ [Restaurar uma tabela do DynamoDB table para um ponto no tempo (console)](#restoretabletopointintime_console)
+ [Restaurar uma tabela para um ponto no tempo (AWS CLI)](#restorepointintime_cli)

## Restaurar uma tabela do DynamoDB table para um ponto no tempo (console)
<a name="restoretabletopointintime_console"></a>

O exemplo a seguir demonstra como usar o console do DynamoDB para restaurar uma tabela existente chamada `Music` para um ponto no tempo.

**nota**  
Esse procedimento supõe que você habilitou a recuperação em um ponto anterior no tempo. Para habilitá-lo para a tabela de `Music`, na guia de **Backups**, na seção de **Recuperação em um ponto anterior no tempo (Point-in-time recovery – PITR)**, escolha **Edit (Editar)** e depois marque a caixa de seleção ao lado de **Enable point-in-time recovery (Habilitar recuperação em um ponto anterior no tempo)**.

**Para restaurar uma tabela para um ponto no tempo**

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/).

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

1. Na lista de tabelas, escolha a tabela `Music`.

1. Na guia **Backups** da tabela de `Music`, na seção **Recuperação em um ponto anterior no tempo (Point-in-time recovery – PITR)**, escolha **Restore (Restaurar)**.

1. Insira como o novo nome da tabela **MusicMinutesAgo**.
**nota**  
Você pode restaurar a tabela para a mesma região da AWS ou para uma região diferente daquela na qual a tabela de origem reside. Você também pode excluir a criação de índices secundários na tabela restaurada. Além disso, você pode especificar um modo de criptografia diferente.

1. Para confirmar a hora restaurável, defina a data e hora da restauração como **Earliest (Mais antigo)**. Em seguida, escolha **Restore (Restaurar)** para iniciar o processo de restauração.

   A tabela que está sendo restaurada é mostrada com o status **Restoring (Em restauração)**. Quando o processo de restauração for concluído, o status da tabela `MusicMinutesAgo` mudará para **Active (Ativo)**.

## Restaurar uma tabela para um ponto no tempo (AWS CLI)
<a name="restorepointintime_cli"></a>

O seguinte procedimento mostra como usar a AWS CLI para restaurar uma tabela existente chamada `Music` para um ponto no tempo.

**nota**  
Esse procedimento supõe que você habilitou a recuperação em um ponto anterior no tempo. Para habilitar esse recurso para a tabela `Music`, execute o seguinte comando.  

```
aws dynamodb update-continuous-backups \
    --table-name Music \
    --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
```



**Para restaurar uma tabela para um ponto no tempo**

1. Confirme se a recuperação point-in-time está habilitada para a tabela `Music` usando o comando `describe-continuous-backups`.

   ```
   aws dynamodb describe-continuous-backups \
       --table-name Music
   ```

   Os backups contínuos (habilitados automaticamente na criação da tabela) e a recuperação point-in-time estão habilitados.

   ```
   {
       "ContinuousBackupsDescription": {
           "PointInTimeRecoveryDescription": {
               "PointInTimeRecoveryStatus": "ENABLED", 
               "EarliestRestorableDateTime": 1519257118.0, 
               "LatestRestorableDateTime": 1520018653.01
           }, 
           "ContinuousBackupsStatus": "ENABLED"
       }
   }
   ```

1. Restaure a tabela para um ponto. Nesse caso, a tabela `Music` é restaurada para `LatestRestorableDateTime` (aproximadamente 5 minutos atrás) para a mesma região da AWS.

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time
   ```
**nota**  
 Você também restaurar para um ponto específico. Para isso, execute o comando usando o argumento `--restore-date-time` e especifique um timestamp. É possível especificar qualquer momento dentro do período de recuperação configurado, que pode ser definido para qualquer valor entre 1 e 35 dias. Por exemplo, o comando a seguir restaura a tabela para o `EarliestRestorableDateTime`.  

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicEarliestRestorableDateTime \
       --no-use-latest-restorable-time \
       --restore-date-time 1519257118.0
   ```
 Especificar o argumento `--no-use-latest-restorable-time` é opcional durante a restauração para um ponto específico.

1. Restaure a tabela para um momento determinado com configurações de tabela personalizadas. Nesse caso, a tabela `Music` é restaurada para o `LatestRestorableDateTime` (há aproximadamente cinco minutos).

   Você pode especificar um modo de criptografia diferente para a tabela restaurada, conforme mostrado a seguir.
**nota**  
O parâmetro `sse-specification-override` assume os mesmos valores do parâmetro `sse-specification-override` usado no comando `CreateTable`. Para saber mais, consulte [Gerenciar tabelas criptografadas no DynamoDB](encryption.tutorial.md).

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --sse-specification-override Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
   ```

   Você pode restaurar a tabela para outra região da AWS diferente daquela na qual a tabela de origem reside.
**nota**  
O parâmetro `sse-specification-override` é obrigatório para restaurações entre regiões, mas opcional para restaurações para a mesma região da tabela de origem.
O parâmetro `source-table-arn` deve ser fornecido para restaurações entre regiões.
Ao realizar uma restauração entre regiões na linha de comando, você deve definir a região padrão da AWS como a região de destino desejada. Para saber mais, consulte [Opções de linha de comando](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html) no *Guia do usuário do AWS Command Line Interface*.

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-arn arn:aws:dynamodb:us-east-1:123456789012:table/Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --sse-specification-override Enabled=true,SSEType=KMS,KMSMasterKeyId=abcd1234-abcd-1234-a123-ab1234a1b234
   ```

   Você pode substituir o modo de faturamento e o throughput provisionado para a tabela restaurada.

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --billing-mode-override PAY_PER_REQUEST
   ```

   Você pode excluir a criação de alguns ou todos os índices secundários na tabela restaurada.
**nota**  
As restaurações poderão ser mais rápidas e econômicas se você excluir a criação de alguns ou todos os índices secundários na nova tabela restaurada.

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --use-latest-restorable-time \
       --global-secondary-index-override '[]'
   ```

   Você pode usar uma combinação de diferentes substituições. Por exemplo, você pode usar um único índice secundário global e alterar o throughput provisionado ao mesmo tempo, da seguinte forma.

   ```
   aws dynamodb restore-table-to-point-in-time \
       --source-table-name Music \
       --target-table-name MusicMinutesAgo \
       --billing-mode-override PROVISIONED \
       --provisioned-throughput-override ReadCapacityUnits=100,WriteCapacityUnits=100 \
       --global-secondary-index-override IndexName=singers-index,KeySchema=["{AttributeName=SingerName,KeyType=HASH}"],Projection="{ProjectionType=KEYS_ONLY}",ProvisionedThroughput="{ReadCapacityUnits=50,WriteCapacityUnits=50}" \
       --sse-specification-override Enabled=true,SSEType=KMS \
       --use-latest-restorable-time
   ```

Para verificar a restauração, use o comando `describe-table` para descrever a tabela `MusicEarliestRestorableDateTime`.

```
aws dynamodb describe-table --table-name MusicEarliestRestorableDateTime
```

A tabela que está sendo restaurada é mostrada com o status **Creating (Em criação)** e restauração em andamento como **true (verdadeiro)**. Quando o processo de restauração for concluído, o status da tabela `MusicEarliestRestorableDateTime` mudará para **Active (Ativo)**.

**Importante**  
Enquanto uma restauração estiver em andamento, não modifique nem exclua as políticas do AWS Identity and Access Management (IAM) que concedem à entidade do IAM (por exemplo, usuário, grupo ou função) permissão para realizar a restauração. Do contrário, pode haver um comportamento inesperado. Por exemplo, suponha que você tenha removido as permissões de gravação de uma tabela enquanto essa tabela estava sendo restaurada. Nesse caso, a operação `RestoreTableToPointInTime` subjacente não conseguirá gravar na tabela nenhum dos dados restaurados. Da mesma forma, as políticas do IAM que envolvem restrições de IP de origem para acessar a tabela de restauração de destino podem causar problemas.  
Você pode modificar ou excluir permissões somente depois que a operação de restauração é concluída.