

# DynamoDB でポイントインタイムリカバリを有効にする
<a name="PointInTimeRecovery_Howitworks"></a>

Amazon DynamoDB ポイントインタイムリカバリ (PITR) は、DynamoDB テーブルデータを自動バックアップする機能です。このセクションでは、DynamoDB でのプロセスの動作の概要を説明します。

**注記**  
DynamoDB は、テーブルデータやローカルセカンダリインデックスなど、各 DynamoDB テーブルのサイズに基づいて PITR の料金を請求します。復旧期間を (35 日から 1 日などに) 変更しても、料金は削減されません。選択した復旧期間に関係なく、コストは変わりません。設定した最長リカバリ期間は、PITR をオンにした場合に請求される料金には影響しません。DynamoDB は、バックアップ料金を決定するために、PITR がオンになっているテーブルのサイズを継続的にモニタリングします。各テーブルの PITR をオフにするまでは、PITR の使用に対して料金が請求されます。

**Topics**
+ [ポイントインタイムリカバリの有効化](#howitworks_enabling)
+ [PITR を有効にする (コンソール）](#howitworks-enable-pitr-console)
+ [PITR を有効にする (AWS CLI)](#howitworks-enable-pitr-cli)
+ [PITR を有効にする (CloudFormation)](#howitworks-enable-pitr-cfn)
+ [PITR を有効にする (API)](#howitworks-enable-pitr-api)
+ [リカバリ期間](#howitworks-pitr-recovery-period)
+ [PITR を編集する](#howitworks-pitr-editing)
+ [PITR が有効になっているテーブルを削除する](#howitworks-pitr-deleting-table)

## ポイントインタイムリカバリの有効化
<a name="howitworks_enabling"></a>

ポイントインタイムリカバリは、AWS マネジメントコンソール、AWS Command Line Interface (AWS CLI)、または DynamoDB API を使用して有効にできます。有効化されると、ポイントインタイムリカバリは、明示的に無効化するまで、連続バックアップを行います。

ポイントインタイムリカバリを有効にしたら、`EarliestRestorableDateTime` および `LatestRestorableDateTime` 内の任意の時点に復元できます。`LatestRestorableDateTime` は、通常、現在時刻の 5 分前です。詳細については、「[DynamoDB テーブルを特定の時点に復元](PointInTimeRecovery.Tutorial.md)」を参照してください。

**注記**  
ポイントインタイムリカバリプロセスは、必ず新しいテーブルに復元されます。

## PITR を有効にする (コンソール）
<a name="howitworks-enable-pitr-console"></a>

**DynamoDB コンソールを使用して PITR を有効にするには**

1. DynamoDB コンソールに移動します。

1. 左のナビゲーションから **[テーブル]** を選択し、DynamoDB テーブルを選択します。

1. **[バックアップ]** タブの **[ポイントインタイムリカバリ]** オプションで、**[編集]** を選択します。

1. **[ポイントインタイムリカバリを有効にする]** をクリックします。

1. バックアップリカバリ期間では、1～35 の値を選択します。これが、継続的バックアップが復元可能な最長期間を示します。

## PITR を有効にする (AWS CLI)
<a name="howitworks-enable-pitr-cli"></a>

**注記**  
AWS CLI コマンドの実行中にエラーが発生した場合は、「[AWS CLI エラーのトラブルシューティング](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-troubleshooting.html)」を参照してください。最新の AWS CLI バージョンを使用していることを確認します。

**point-in-time-recovery-specification** 設定をオンにして [update-continuous-backups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/dynamodb/update-continuous-backups.html) コマンドを実行します。

```
aws dynamodb update-continuous-backups \
--table-name Music \
--point-in-time-recovery-specification PointInTimeRecoveryEnabled=true,RecoveryPeriodInDays=35
```

## PITR を有効にする (CloudFormation)
<a name="howitworks-enable-pitr-cfn"></a>

`PointInTimeRecoverySpecification` プロパティをオンにして [AWS::DynamoDB ::Table ](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)リソースを使用します。

```
Resources:
  iotCatalog:
    Type: AWS::DynamoDB::Table
      Properties:
      ...
      PointInTimeRecoverySpecification:
        PointInTimeRecoveryEnabled: true
        RecoveryPeriodInDays: 35
```

**リクエストの構文例:**

```
{
   "PointInTimeRecoverySpecification": { 
      "PointInTimeRecoveryEnabled": boolean,
      "RecoveryPeriodInDays: number
   },
   "TableName": "string"
}
```

## PITR を有効にする (API)
<a name="howitworks-enable-pitr-api"></a>

`PointInTimeRecoverySpecification` パラメータをオンにして [UpdateContinuousBackups](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateContinuousBackups.html) API オペレーションを実行します。

**リクエストの構文例:**

```
{
   "PointInTimeRecoverySpecification": { 
      "PointInTimeRecoveryEnabled": boolean,
      "RecoveryPeriodInDays" : number
   },
   "TableName": "string"
}
```

**レスポンスの構文例：**

```
{
   "ContinuousBackupsDescription": { 
      "ContinuousBackupsStatus": "string",
      "PointInTimeRecoveryDescription": { 
         "PointInTimeRecoveryStatus": "string",
         "EarliestRestorableDateTime": number,
         "RecoveryPeriodInDays": number,
         "LatestRestorableDateTime": number
      }
   }
}
```

**Python**: 

```
import boto3

dynamodb = boto3.client('dynamodb')

response = dynamodb.update_continuous_backups(
    TableName=<table_name>,
    PointInTimeRecoverySpecification={
        'PointInTimeRecoveryEnabled': True,
        'RecoveryPeriodInDays': 35
    }
)
```

## リカバリ期間
<a name="howitworks-pitr-recovery-period"></a>

継続的バックアップのリカバリ期間は、1～35 日間の任意の数に設定できます。この `RecoveryPeriodInDays` により、継続的バックアップが維持される期間が決まります。例えば、この値を 30 日に設定すると、テーブルを過去 30 日間の任意の時点に復元することしかできなくなります。

**注記**  
DynamoDB は、テーブルデータやローカルセカンダリインデックスなど、各 DynamoDB テーブルのサイズに基づいて PITR の料金を請求します。設定した最長リカバリ期間は、PITR をオンにした場合に請求される料金には影響しません。料金の詳細については、「[DynamoDB 料金](https://aws.amazon.com/dynamodb/pricing/on-demand/)」を参照してください。

## PITR を編集する
<a name="howitworks-pitr-editing"></a>

テーブルの PITR 設定を編集すると、リカバリ期間を変更できます。リカバリ期間を変更して、以前の設定値より高い値に引き上げても、`EarliestRestorePoint` は直ちには変更されません。リカバリ期間はローリングウィンドウであるため、DynamoDB は新しく引き上げられた期間に達するまで自動バックアップを引き続き実行します。リカバリ期間を変更して、以前に設定した値よりも低い値に引き下げると、`EarliestRestorePoint` はリカバリ期間に合わせて直ちに低減し、新しい設定値の範囲外の継続的なバックアップは復元できなくなります。

## PITR が有効になっているテーブルを削除する
<a name="howitworks-pitr-deleting-table"></a>

ポイントインタイムリカバリが有効になっているテーブルを削除すると、DynamoDB は*システムバックアップ*と呼ばれるバックアップスナップショットを自動的に作成し、それを 35 日間保持します (追加コストは発生しません)。システムバックアップを使用して、削除したテーブルを削除前の状態に復元できます。システムバックアップはすべて、*table-name* `$DeletedTableBackup` という標準的な命名規則に従います。

**注記**  
ポイントインタイムリカバリが有効になっているテーブルが削除されると、システムバックアップを使用して、削除されたテーブルを特定の時点、つまり削除直前の時点に復元できます。システムバックアップはテーブルの削除時に作成され、テーブルが削除される直前のテーブルのスナップショットです。