

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