

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Keyspaces でポイントインタイムリカバリを使用する
<a name="PointInTimeRecovery_Tutorial"></a>

Amazon Keyspaces (Apache Cassandra 向け) では、ポイントインタイム復元 (PITR) を使用して、特定の時点の状態にテーブルを復元できます。PITR では、過去 35 日以内の以前の状態にテーブルを復元することができ、データの保護と復旧の機能として利用できます。この機能は、間違えてデータを削除してしまった場合やアプリケーションエラーが起きた場合、またはテストの目的などで活躍します。データをすばやく効率的に復旧し、ダウンタイムとデータ損失を最小限に抑えることができます。以降のセクションでは、Amazon Keyspaces で PITR を使用してテーブルを復元し、データの整合性とビジネスの継続性を確保するプロセスについて説明します。

**Topics**
+ [Amazon Keyspaces PITR のテーブル復元用の IAM アクセス許可を設定する](howitworks_restore_permissions.md)
+ [Amazon Keyspaces でテーブルの PITR を設定する](configure_PITR.md)
+ [Amazon Keyspaces テーブルの PITR を無効にする](disable_PITR.md)
+ [Amazon Keyspaces でテーブルをバックアップから特定の時点に復元する](restoretabletopointintime.md)
+ [削除済みのテーブルを Amazon Keyspaces PITR を使用して復元する](restoredeleted.md)

# Amazon Keyspaces PITR のテーブル復元用の IAM アクセス許可を設定する
<a name="howitworks_restore_permissions"></a>

このセクションでは、Amazon Keyspaces テーブルを復元するための AWS Identity and Access Management (IAM) プリンシパルのアクセス許可を設定する方法を要約します。IAM では、 AWS マネージドポリシーである `AmazonKeyspacesFullAccess` に、Amazon Keyspaces テーブルの復元に必要なアクセス許可が含まれています。最低限必要なアクセス許可を含めたカスタムポリシーを実装するには、次のセクションで概説している要件を検討してください。

テーブルを正常に復元するには、IAM プリンシパルに次の最小限のアクセス許可が必要です。
+ `cassandra:Restore` — この復元アクションはターゲットテーブルの復元に必須です。
+ `cassandra:Select` — この選択アクションはソーステーブルからの読み取りに必須です。
+ `cassandra:TagResource` — タグアクションはオプションで、復元オペレーションによりタグが追加される場合にのみ必須です。

次の例は、キースペース `mykeyspace` 内のテーブルを復元するために必要な最小限のアクセス許可をユーザーに与えるポリシーを示しています。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Restore",
            "cassandra:Select"
         ],
         "Resource":[
            "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/*",
            "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
         ]
      }
   ]
}
```

選択した他の機能に基づいて、テーブルを復元するための追加の許可が必要になる場合があります。例えば、ソーステーブルが保管時にカスタマーマネージドキーで暗号化されている場合、テーブルを正常に復元するために、Amazon Keyspaces にはソーステーブルのカスタマーマネージドキーへのアクセス許可が必要になります。詳細については、「[暗号化されたテーブルの PITR 復元](PointInTimeRecovery_HowItWorks.md#howitworks_backup_encryption)」を参照してください。

IAM ポリシーを[条件キー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)とともに使用して特定のソースへの受信トラフィックを制限するには、プリンシパルの代わりに復元オペレーションを実行する許可が Amazon Keyspaces に付与されていることを確認する必要があります。ポリシーにより受信トラフィックが次のいずれかに制限されている場合は、IAM ポリシーに `aws:ViaAWSService` 条件キーを追加する必要があります。
+ `aws:SourceVpce` の場合は VPC エンドポイント
+ `aws:SourceIp` の場合は IP レンジ
+ `aws:SourceVpc` の場合は VPC

 AWS サービスでプリンシパルの認証情報を使用してリクエストを実行すると、`aws:ViaAWSService` 条件キーによりアクセスが許可されます。詳細については、『*IAM ユーザーガイド*』の「[IAM JSON policy elements: Condition key(IAM JSON ポリシー要素: 条件キー)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」 を参照してください。

以下は、ソーストラフィックを特定の IP アドレスに制限し、プリンシパルの代わりに Amazon Keyspaces によってテーブルが復元されるようにするポリシーの例です。

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"CassandraAccessForCustomIp",
         "Effect":"Allow",
         "Action":"cassandra:*",
         "Resource":"*",
         "Condition":{
            "Bool":{
               "aws:ViaAWSService":"false"
            },
            "ForAnyValue:IpAddress":{
               "aws:SourceIp":[
                  "123.45.167.89"
               ]
            }
         }
      },
      {
         "Sid":"CassandraAccessForAwsService",
         "Effect":"Allow",
         "Action":"cassandra:*",
         "Resource":"*",
         "Condition":{
            "Bool":{
               "aws:ViaAWSService":"true"
            }
         }
      }
   ]
}
```

 `aws:ViaAWSService` グローバル条件キーを使用したポリシーの例については、「[VPC エンドポイントポリシーと Amazon Keyspaces ポイントインタイムリカバリ (PITR)](vpc-endpoints.md#VPC_PITR_restore)」を参照してください。

# Amazon Keyspaces でテーブルの PITR を設定する
<a name="configure_PITR"></a>

コンソール、CQL、および AWS CLIで、PITR を使用したバックアップおよび復元のオペレーションを Amazon Keyspaces のテーブルに設定できます。

CQL または を使用して新しいテーブルを作成する場合は AWS CLI、テーブル作成ステートメントで PITR を明示的に有効にする必要があります。コンソールで新しいテーブルを作成した場合は、PITR がデフォルトで有効になります。

テーブルの復元方法については、「[Amazon Keyspaces でテーブルをバックアップから特定の時点に復元する](restoretabletopointintime.md)」を参照してください。

------
#### [ Console ]

**コンソールを使用してテーブルの PITR を設定する**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. ナビゲーションペインで [**Tables (テーブル)**] を選択し、編集するテーブルを選択します。

1. [**Backups (バックアップ)**] タブで、[**Edit (編集)**] を選択します。

1. [**Edit point-in-time recovery settings (ポイントインタイムリカバリ設定の編集)**] セクションで、[**Enable Point-in-time recovery (ポイントタイムリカバリを有効にする)**] チェックボックスを選択します。

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルの PITR を設定する**

1. テーブルの PITR 設定は、`point_in_time_recovery` カスタムプロパティを使用して管理することができます。

   新しいテーブルの作成時に PITR を有効にするには、`enabled` のステータスを `point_in_time_recovery` に設定する必要があります。例えば、次の CQL コマンドを使用できます。

   ```
   CREATE TABLE "my_keyspace1"."my_table1"(
   	"id" int,
   	"name" ascii,
   	"date" timestamp,
   	PRIMARY KEY("id"))
   WITH CUSTOM_PROPERTIES = {
   	'capacity_mode':{'throughput_mode':'PAY_PER_REQUEST'}, 
   	'point_in_time_recovery':{'status':'enabled'}
   }
   ```
**注記**  
ポイントインタイムリカバリのカスタムプロパティが指定されていない場合、デフォルトにより、ポイントインタイムリカバリは無効になります。

1. CQL を使用して既存のテーブルの PITR を有効にするには、次の CQL コマンドを実行します。

   ```
   ALTER TABLE mykeyspace.mytable
   WITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}}
   ```

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

**を使用してテーブルの PITR を設定する AWS CLI**

1. テーブルの PITR 設定は、`UpdateTable` API を使用して管理することができます。

   新しいテーブルの作成時に PITR を有効にするには、create-table コマンドに `point-in-time-recovery 'status=ENABLED'` を指定する必要があります。例えば、次の AWS CLI コマンドを使用できます。このコマンドは読みやすくするために別々の行に分割されています。

   ```
   aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' 
               --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
               --point-in-time-recovery 'status=ENABLED'
   ```
**注記**  
ポイントインタイムリカバリ値が指定されていない場合、デフォルトにより、ポイントインタイムリカバリは無効になります。

1. テーブルのpoint-in-timeリカバリ設定を確認するには、次の AWS CLI コマンドを使用します。

   ```
   aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'
   ```

1. を使用して既存のテーブルの PITR を有効にするには AWS CLI、次のコマンドを実行します。

   ```
   aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=ENABLED'
   ```

------

# Amazon Keyspaces テーブルの PITR を無効にする
<a name="disable_PITR"></a>

Amazon Keyspaces テーブルの PITR は、コンソール、CQL、または AWS CLIを使用して、いつでも無効にすることができます。

**重要**  
PITR を無効にすると、35 日以内にテーブルの PITR を再度有効にしても、バックアップ履歴が直ちに削除されます。

テーブルの復元方法については、「[Amazon Keyspaces でテーブルをバックアップから特定の時点に復元する](restoretabletopointintime.md)」を参照してください。

------
#### [ Console ]

**コンソールを使用してテーブルの PITR を無効にする**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. ナビゲーションペインで [**Tables (テーブル)**] を選択し、編集するテーブルを選択します。

1. [**Backups (バックアップ)**] タブで、[**Edit (編集)**] を選択します。

1. [**Edit point-in-time recovery settings (ポイントインタイムリカバリ設定の編集)**] セクションで、[**Enable Point-in-time recovery (ポイントタイムリカバリを有効にする)**] チェックボックスの選択を解除します。

1. **[Save changes]** (変更の保存) をクリックします。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルの PITR を無効にする**
+ 既存のテーブルの PITR を無効にするには、次の CQL コマンドを実行します。

  ```
  ALTER TABLE mykeyspace.mytable
  WITH custom_properties = {'point_in_time_recovery': {'status': 'disabled'}}
  ```

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

**を使用してテーブルの PITR を無効にする AWS CLI**
+ 既存のテーブルの PITR を無効にするには、次の AWS CLI コマンドを実行します。

  ```
  aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=DISABLED'
  ```

------

# Amazon Keyspaces でテーブルをバックアップから特定の時点に復元する
<a name="restoretabletopointintime"></a>

既存の Amazon Keyspaces テーブルを特定の時点の状態に復元する実際の方法を紹介します。

**注記**  
この手順では、操作対象のテーブルにポイントインタイムリカバリが設定済みであることが前提です。テーブルの PITR を有効にするには、「[Amazon Keyspaces でテーブルの PITR を設定する](configure_PITR.md)」を参照してください。

**重要**  
 復元中は、復元を実行するアクセス許可を IAM プリンシパル (ユーザー、グループ、ロールなど) に付与する AWS Identity and Access Management (IAM) ポリシーを変更または削除しないでください。行った場合、予期しない動作が発生する場合があります。例えば、テーブルの復元中にそのテーブルへの書き込みアクセス許可を削除してしまうと、基盤となる `RestoreTableToPointInTime` オペレーションが復元済みデータをテーブルに書き込むことができなくなります。  
復元オペレーションが完了したら、アクセス許可を変更または削除してもかまいません。

------
#### [ Console ]

**コンソールを使用してテーブルを特定の時点の状態に復元する**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. コンソールの左側のナビゲーションペインで、**[テーブル]** を選択します。

1. テーブルのリストで、復元対象のテーブルを選択します。

1. テーブルの **[バックアップ]** タブの **[ポイントインタイムリカバリ]** セクションで、**[復元]** を選択します。

1. 新しいテーブル名には、復元後のテーブルの新しい名前を入力します (例: **mytable\$1restored**)。

1. 復元オペレーションのポイントインタイムを定義するために、次の 2 つのオプションのいずれかを選択できます。
   + あらかじめ設定されている **[Earliest]** (最も早い時間) を選択します。
   + **[Specify date and time]** (日時の指定) を選択し、新しいテーブルの復元時点の日付と時刻を入力します。
**注記**  
**[Earliest]** (最古) の時点から現在の時点までの期間内の任意の特定時点の状態に復元できます。Amazon Keyspaces により、選択した日時 (day:hour:minute:second) に基づいた状態にテーブルデータが復元されます。

1. [**Restore (復元)**] を選択して、復元プロセスを開始します。

   復元中のテーブルのステータスは、[**Restoring (復元中)**] と表示されます。復元が終わると、復元後のテーブルのステータスが **[アクティブ]** に変わります。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルを特定の時点の状態に復元する**

1. アクティブなテーブルを、`earliest_restorable_timestamp` から現在の時点までの範囲内の任意の時点の状態に復元できます。デフォルトは現在の時刻です。

   テーブルでポイントインタイムリカバリが有効になっていることを確認するには、次の例に示すように、`system_schema_mcs.tables` をクエリします。

   ```
   SELECT custom_properties
   FROM system_schema_mcs.tables
   WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable';
   ```

   次のサンプル出力に示すように、ポイントインタイムリカバリが有効になります。

   ```
   custom_properties
   -----------------
   {
     ...,
       "point_in_time_recovery": {
       "earliest_restorable_timestamp":"2020-06-30T19:19:21.175Z"
       "status":"enabled"
     }
   }
   ```

1. 
   + テーブルを現在の時点に復元します。`WITH restore_timestamp = ...` 句を省略すると、現在のタイムスタンプが使用されます。

     ```
     RESTORE TABLE mykeyspace.mytable_restored
     FROM TABLE mykeyspace.mytable;
     ```
   + `restore_timestamp` に ISO 8601 形式で特定の時点を定義し、その時点の状態に復元することもできます。過去 35 日間の任意の時点を指定できます。たとえば、次のコマンドでは `EarliestRestorableDateTime` にテーブルを復元します。

     ```
     RESTORE TABLE mykeyspace.mytable_restored
     FROM TABLE mykeyspace.mytable
     WITH restore_timestamp = '2020-06-30T19:19:21.175Z';
     ```

     構文の完全な説明については、言語リファレンスの「[RESTORE TABLE](cql.ddl.table.md#cql.ddl.table.restore)」を参照してください。

1. テーブルの復元が成功したことを確認するには、`system_schema_mcs.tables` をクエリしてテーブルのステータスを確認します。

   ```
   SELECT status
   FROM system_schema_mcs.tables
   WHERE keyspace_name = 'mykeyspace' AND table_name = 'mytable_restored'
   ```

   クエリには次の出力が表示されます。

   ```
   status
   ------
   RESTORING
   ```

   復元中のテーブルのステータスは、[**Restoring (復元中)**] と表示されます。復元が終わると、テーブルのステータスが **[アクティブ]** に変わります。

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

**を使用してテーブルを特定の時点に復元する AWS CLI**

1. PITR を有効にした `myTable` という名前の簡単なテーブルを作成します。コマンドは読みやすくするため、別々の行に分割されています。

   ```
   aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' 
               --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' 
               --point-in-time-recovery 'status=ENABLED'
   ```

1. 新しいテーブルのプロパティを確認し、PITR 用の `earliestRestorableTimestamp` を確認してください。

   ```
   aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'
   ```

   このコマンドの出力では、以下の値が返ります。

   ```
   {
       "keyspaceName": "myKeyspace",
       "tableName": "myTable",
       "resourceArn": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable",
       "creationTimestamp": "2022-06-20T14:34:57.049000-07:00",
       "status": "ACTIVE",
       "schemaDefinition": {
           "allColumns": [
               {
                   "name": "id",
                   "type": "int"
               },
               {
                   "name": "date",
                   "type": "timestamp"
               },
               {
                   "name": "name",
                   "type": "text"
               }
           ],
           "partitionKeys": [
               {
                   "name": "id"
               }
           ],
           "clusteringKeys": [],
           "staticColumns": []
       },
       "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2022-06-20T14:34:57.049000-07:00"
       },
       "encryptionSpecification": {
           "type": "AWS_OWNED_KMS_KEY"
       },
       "pointInTimeRecovery": {
           "status": "ENABLED",
           "earliestRestorableTimestamp": "2022-06-20T14:35:13.693000-07:00"
       },
       "defaultTimeToLive": 0,
       "comment": {
           "message": ""
       }
   }
   ```

1. 
   + 特定の時点の状態にテーブルを復元するには、ISO 8601 形式で `restore_timestamp` を指定します。過去 35 日間の任意の時点を 1 秒間隔で選択できます。たとえば、次のコマンドでは `EarliestRestorableDateTime` にテーブルを復元します。

     ```
     aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored' --restore-timestamp "2022-06-20 21:35:14.693"
     ```

     このコマンドの出力は、復元されたテーブルの ARN を返します。

     ```
     {
         "restoredTableARN": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable_restored"
     }
     ```
   + テーブルを現在の時点に復元するには、`restore-timestamp` パラメータを省略できます。

     ```
     aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored1'"
     ```

------

# 削除済みのテーブルを Amazon Keyspaces PITR を使用して復元する
<a name="restoredeleted"></a>

次の手順は、削除されたテーブルをバックアップから削除時点の状態に復元する方法を示しています。これを行うには、CQL または を使用します AWS CLI。

**注記**  
この手順では、削除されたテーブルに対して PITR が有効になっていることを前提としています。



------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用して削除済みテーブルを復元する**

1. 削除されたテーブルに対してポイントインタイムリカバリが有効になっていることを確認するには、システムテーブルのクエリを実行します。ポイントインタイムリカバリが有効になっているテーブルのみが表示されます。

   ```
   SELECT custom_properties
   FROM system_schema_mcs.tables_history 
   WHERE keyspace_name = 'mykeyspace' AND table_name = 'my_table';
   ```

   クエリには次の出力が表示されます。

   ```
   custom_properties
   ------------------
   {
       ...,
      "point_in_time_recovery":{
         "restorable_until_time":"2020-08-04T00:48:58.381Z",
         "status":"enabled"
      }
   }
   ```

1. 次のサンプルステートメントを使用して、テーブルを削除時点の状態に復元します。

   ```
   RESTORE TABLE mykeyspace.mytable_restored
   FROM TABLE mykeyspace.mytable;
   ```

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

**を使用して削除されたテーブルを復元する AWS CLI**

1. 事前に作成し、PITR を有効にしておいたテーブルを削除します。コマンドの例を次に示します。

   ```
   aws keyspaces delete-table --keyspace-name 'myKeyspace' --table-name 'myTable'
   ```

1. 次のコマンドを使用して、削除されたテーブルを削除時点の状態に復元します。

   ```
   aws keyspaces restore-table --source-keyspace-name 'myKeyspace' --source-table-name 'myTable' --target-keyspace-name 'myKeyspace' --target-table-name 'myTable_restored2'
   ```

   このコマンドの出力は、復元されたテーブルの ARN を返します。

   ```
   {
       "restoredTableARN": "arn:aws:cassandra:us-east-1:111122223333:/keyspace/myKeyspace/table/myTable_restored2"
   }
   ```

------