DynamoDB テーブルを特定の時点に復元
Amazon DynamoDB ポイントインタイムリカバリ (PITR) は、DynamoDB テーブルデータを連続バックアップする機能です。テーブルをポイントインタイムに復元するには、DynamoDB コンソール、または AWS Command Line Interface (AWS CLI) を使用します。ポイントインタイムリカバリプロセスは、新しいテーブルに復元されます。
AWS CLI を使用する場合は、最初に設定する必要があります。詳細については、「DynamoDB にアクセスする」を参照してください。
DynamoDB テーブルを特定の時点に復元 (コンソール)
DynamoDB コンソールを使用して、Music
という既存のテーブルを特定の時点に復元する方法を次の例に示します。
注記
この手順は、ポイントインタイムリカバリを有効にしていることを前提としています。Music
テーブルで有効にするには、[バックアップ] タブの [ポイントインタイムリカバリ (PITR)] セクションで、[編集] を選択してから、[ポイントインタイムリカバリを有効にする] の横にあるチェックボックスをオンにします。
テーブルをポイントインタイムに復元するには
AWS Management Console にサインインして DynamoDB コンソール (https://console.aws.amazon.com/dynamodb/
) を開きます。 -
コンソールの左側のナビゲーションペインで、[テーブル] を選択します。
-
テーブルのリストで、[
Music
] テーブルを選択します。 -
Music
テーブルの [バックアップ] タブの [ポイントインタイムリカバリ (PITR)] セクションで、[復元] を選択します。 -
新しいテーブルの名前に
MusicMinutesAgo
と入力します。注記
テーブルは、同じ AWS リージョンまたは送信元テーブルが存在する別のリージョンに復元できます。復元済みテーブルで、セカンダリインデックスの作成を除外することもできます。また、別の暗号化モードを指定することもできます。
-
復元可能な時刻を確認するには、[復元日時] を [最も早い] に設定します。次に、[復元] を選択して復元プロセスを開始します。
復元中のテーブルのステータスは、[Restoring (復元中)] と表示されます。復元プロセスが終了すると、
MusicMinutesAgo
テーブルのステータスは [アクティブ] に変わります。
テーブルを特定の時点に復元する (AWS CLI)
AWS CLI を使用して、Music
という既存のテーブルをポイントインタイムに復元する方法を次の手順に示します。
注記
この手順は、ポイントインタイムリカバリを有効にしていることを前提としています。この機能を Music
テーブルに対して有効にするには、次のコマンドを実行します。
aws dynamodb update-continuous-backups \ --table-name Music \ --point-in-time-recovery-specification PointInTimeRecoveryEnabled=True
テーブルをポイントインタイムに復元するには
-
Music
でポイントインタイムリカバリが有効になっていることを確認するには、describe-continuous-backups
コマンドを使用します。aws dynamodb describe-continuous-backups \ --table-name Music
連続バックアップ (テーブル作成時は自動的に有効になる) とポイントインタイムリカバリは有効化されています。
{ "ContinuousBackupsDescription": { "PointInTimeRecoveryDescription": { "PointInTimeRecoveryStatus": "ENABLED", "EarliestRestorableDateTime": 1519257118.0, "LatestRestorableDateTime": 1520018653.01 }, "ContinuousBackupsStatus": "ENABLED" } }
-
テーブルをポイントインタイムに復元します。この場合、
Music
テーブルは同じ AWS リージョンのLatestRestorableDateTime
(最大 5 分前) に復元されます。aws dynamodb restore-table-to-point-in-time \ --source-table-name Music \ --target-table-name MusicMinutesAgo \ --use-latest-restorable-time
注記
特定の時点に復元することもできます。そのためには、
--restore-date-time
引数を使用してコマンドを実行し、タイムスタンプを指定します。過去 35 日間の任意の時点を指定できます。たとえば、次のコマンドでは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
特定の時点に復元する場合の
--no-use-latest-restorable-time
引数の指定はオプションです。 -
カスタムテーブル設定で、テーブルを特定時点に復元します。この場合、
Music
テーブルは、LatestRestorableDateTime
に復元されます (5 分前まで)。復元済みテーブルに対して、次のように別の暗号化モードを指定できます。
注記
sse-specification-override
パラメータは、sse-specification-override
コマンドで使用されるCreateTable
パラメータと同じ値を使用します。詳細については、「DynamoDB での暗号化テーブルの管理」を参照してください。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
テーブルは、送信元テーブルが存在する別の AWS リージョンから復元できます。
注記
-
sse-specification-override
パラメータは、クロスリージョン復元には必須ですが、送信元テーブルと同じリージョンに復元する場合はオプションです。 -
クロスリージョン復元には、
source-table-arn
パラメータを指定する必要があります。 -
コマンドラインからクロスリージョン復元を実行する場合は、デフォルトの AWS リージョンを希望のリージョンに設定する必要があります。詳細については、「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
復元済みテーブルの請求モードとプロビジョニングされたスループットをオーバーライドできます。
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
復元済みテーブルで、一部またはすべてのセカンダリインデックスの作成を除外できます。
注記
新しく復元されるテーブルで、一部またはすべてのセカンダリインデックスの作成を除外すると、復元はより高速でコスト効率が高くなります。
aws dynamodb restore-table-to-point-in-time \ --source-table-name Music \ --target-table-name MusicMinutesAgo \ --use-latest-restorable-time \ --global-secondary-index-override '[]'
さまざまなオーバーライドの組み合わせを使用できます。たとえば、次のように単一のグローバルセカンダリインデックスを使用すると同時に、プロビジョニングされたスループットを変更できます。
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
-
復元を確認するには、describe-table
コマンドで MusicEarliestRestorableDateTime
テーブルを指定します。
aws dynamodb describe-table --table-name MusicEarliestRestorableDateTime
復元中のテーブルは、ステータスが [Creating (作成中)]、復元中に [true] として表示されています。復元プロセスが終了すると、MusicEarliestRestorableDateTime
テーブルのステータスは [アクティブ] に変わります。
重要
復元中は、復元を目的とした、IAM エンティティ (例: ユーザー、グループ、ロール) を付与する AWS Identity and Access Management (IAM) ポリシーの変更や削除を行わないでください。行った場合、予期しない動作が発生する場合があります。たとえば、テーブルの復元中にテーブルの書き込み権限を削除したとします。この場合、基本となる RestoreTableToPointInTime
オペレーションを使用しても、復元されたデータをテーブルに書き込むことはできません。復元先のターゲットテーブルにアクセスするための送信元 IP 制限を含む IAM ポリシーでも、同様の問題が発生する可能性があります。
復元オペレーション完了後は、アクセス権限の変更または削除のみ行うことができます。