

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

# Time Travel タスクの設定
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel"></a>

レプリケーションタスクをログ記録およびデバッグするには、 AWS DMS Time Travel を使用できます。この方法の場合、Amazon S3 を使用してログを保存し、暗号化キーを使用して暗号化します。Time Travel S3 バケットにアクセスできる場合にのみ、日時フィルターを使用して S3 ログを取得して、必要に応じてログを表示、ダウンロード、難読化できます。これにより、安全に「時間を遡って」データベースのアクティビティを調査できます。Time Travel は CloudWatch のログ記録とは独立して機能します。CloudWatch ログの詳細については、「[ロギングタスク設定](CHAP_Tasks.CustomizingTasks.TaskSettings.Logging.md)」を参照してください。

Time Travel は、 AWS DMSサポートされている Oracle、Microsoft SQL Server、PostgreSQL ソースエンドポイント、および AWS DMSサポートされている PostgreSQL と MySQL ターゲットエンドポイントを持つすべての AWS リージョンで使用できます。Time Travel は、フルロードと変更データキャプチャ (CDC) タスクと CDC のみのタスクでのみ有効にできます。Time Travel を有効にしたり、既存の Time Travel 設定を変更したりするには、レプリケーションタスクが停止していることを確認します。

Time Travel 設定には、次の `TTSettings` プロパティがあります。
+ `EnableTT` – このオプションを `true` に設定すると、タスクの Time Travel ログ記録が有効になります。デフォルト値は `false` です。

  タイプ: ブール値

  必須: いいえ
+ `EncryptionMode` – データとログを保存するために S3 バケットで使用されるサーバー側の暗号化のタイプ。`"SSE_S3"` (デフォルト) または `"SSE_KMS"` のいずれかを指定できます。

  `EncryptionMode` を `"SSE_KMS"` から `"SSE_S3"` に変更することはできても、その逆の変更はできません。

  タイプ: 文字列

  必須: いいえ
+ `ServerSideEncryptionKmsKeyId` – `"SSE_KMS"`に を指定する場合は`EncryptionMode`、カスタムマネージド AWS KMS キーの ID を指定します。使用するキーに、 AWS Identity and Access Management (IAM) ユーザーのアクセス許可を有効にし、キーの使用を許可するポリシーがアタッチされていることを確認します。

  `"SSE_KMS"` オプションでは、独自のカスタマーマネージド 対称 KMS キーのみがサポートされます。

  タイプ: 文字列

  必須: `EncryptionMode` が `"SSE_KMS"` に設定されている場合のみ
+ `ServiceAccessRoleArn` – IAM ロールにアクセスするためにサービスが使用する Amazon リソースネーム (ARN)。ロール名は、`dms-tt-s3-access-role` に設定します。これは、 が S3 バケットからのオブジェクト AWS DMS の書き込みと読み取りを許可する必須の設定です。

  タイプ: 文字列

  必須: Time Travel がオンになっている場合

  このロールのポリシーの例は次のとおりです。

------
#### [ JSON ]

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
          {
              "Sid": "VisualEditor0",
              "Effect": "Allow",
              "Action": [
                  "s3:PutObject",
                  "kms:GenerateDataKey",
                  "kms:Decrypt",
                  "s3:ListBucket",
                  "s3:DeleteObject"
              ],
              "Resource": [
                  "arn:aws:s3:::S3bucketName*",
                  "arn:aws:kms:us-east-1:112233445566:key/1234a1a1-1m2m-1z2z-d1d2-12dmstt1234"
              ]
          }
      ]
  }
  ```

------

  このロールの信頼ポリシーの例は次のとおりです。

------
#### [ JSON ]

****  

  ```
  {
   "Version":"2012-10-17",		 	 	 
   "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "Service": [
                       "dms.amazonaws.com"
                   ]
               },
               "Action": "sts:AssumeRole"
          }
      ]
  }
  ```

------
+ `BucketName` – Time Travel ログを保存する S3 バケットの名前。Time Travel ログを有効にする前に、この S3 バケットが作成されていることを確認します。

  タイプ: 文字列

  必須: Time Travel がオンになっている場合
+ `BucketFolder` – S3 バケット内のフォルダ名を設定するためのオプションのパラメータ。のパラメータを指定すると、DMS は `"/BucketName/BucketFolder/taskARN/YYYY/MM/DD/hh"` のパスにTime Travel ログを作成します。このパラメータを指定しない場合、 はデフォルトパスを として AWS DMS 作成します`"/BucketName/dms-time-travel-logs/taskARN/YYYY/MM/DD/hh`。

  タイプ: 文字列

  必須: いいえ
+ `EnableDeletingFromS3OnTaskDelete` – このオプションを に設定すると`true`、タスクが削除されると、 は S3 から Time Travel ログ AWS DMS を削除します。デフォルト値は `false` です。

  タイプ: 文字列

  必須: いいえ
+ `EnableRawData` – このオプションを `true` に設定すると、Time Travel ログのデータ操作言語 (DML) の raw データがTime Travel ログの `raw_data` 列の下に表示されます。詳細については、「[Time Travel ログの使用](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.LogSchema.md)」を参照してください。デフォルト値は `false` です。このオプションを `false` に設定すると、DML タイプのみがキャプチャされます。

  タイプ: 文字列

  必須: いいえ
+ `RawDataFormat` – AWS DMS バージョン 3.5.0 以降では、 `EnableRawData` が に設定されている場合`true`。このプロパティは、Time Travel ログ内の DML の raw データの形式を指定し、次のとおり表示します。
  + `"TEXT"` – CDC 中に `Raw` フィールドとしてキャプチャした DML イベントの、解析され、読み取り可能な列名と値。
  + `"HEX"` – CDC 中に DML イベントでキャプチャした列名と値の元の16 進数値。

  このプロパティは Oracle と Microsoft SQL Server データベースソースに適用されます。

  タイプ: 文字列

  必須: いいえ
+ `OperationsToLog` – Time Travel ログに記録する DML オペレーションのタイプを指定します。以下のいずれかを指定できます。
  + `"INSERT"`
  + `"UPDATE"`
  + `"DELETE"`
  + `"COMMIT"`
  + `"ROLLBACK"`
  + `"ALL"`

  デフォルトは `"ALL"` です。

  タイプ: 文字列

  必須: いいえ
+ `MaxRecordSize` – 各行に記録される Time Travel ログのレコードの最大サイズを指定します。このプロパティを使用して、特に使用頻度の高いテーブルの Time Travel ログの増大を制御します。デフォルトは 64 KB です。

  タイプ: 整数

  必須: いいえ

Time Travel ログを有効にして使用する方法の詳細については、次のトピックを参照してください。

**Topics**
+ [タスクの Time Travel ログを有効にする](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.TaskEnabling.md)
+ [Time Travel ログの使用](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.LogSchema.md)
+ [が Time Travel ログを S3 AWS DMS にアップロードする頻度](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.UploadsToS3.md)

# タスクの Time Travel ログを有効にする
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.TaskEnabling"></a>

前述の AWS DMS タスク設定を使用して、タスクの Time Travel を有効にできます。Time Travel を有効にする前に、レプリケーションタスクが停止していることを確認します。

**を使用して Time Travel を有効にするには AWS CLI**

1. DMS タスク設定 JSON ファイルを作成して、次のとおりの `TTSettings` セクションを追加します。タスク設定ファイルを使用してタスク設定を設定する方法については、「[タスク設定例](CHAP_Tasks.CustomizingTasks.TaskSettings.md#CHAP_Tasks.CustomizingTasks.TaskSettings.Example)」をご参照ください。

   ```
    .
    .
    .
       },
   "TTSettings" : {
     "EnableTT" : true,
     "TTS3Settings": {
         "EncryptionMode": "SSE_KMS",
         "ServerSideEncryptionKmsKeyId": "arn:aws:kms:us-west-2:112233445566:key/myKMSKey",
         "ServiceAccessRoleArn": "arn:aws:iam::112233445566:role/dms-tt-s3-access-role",
         "BucketName": "myttbucket",
         "BucketFolder": "myttfolder",
         "EnableDeletingFromS3OnTaskDelete": false
       },
     "TTRecordSettings": {
         "EnableRawData" : true,
         "OperationsToLog": "DELETE,UPDATE",
         "MaxRecordSize": 64
       },
    .
    .
    .
   ```

1. 適切なタスクアクションで、`--replication-task-settings` オプションを使用してこの JSON ファイルを指定します。例えば、次の CLI コードフラグメントは、では、このTime Travel 設定ファイルを `create-replication-task` の一部で指定しています。

   ```
   aws dms create-replication-task 
   --target-endpoint-arn arn:aws:dms:us-east-1:112233445566:endpoint:ELS5O7YTYV452CAZR2EYBNQGILFHQIFVPWFRQAY \
   --source-endpoint-arn arn:aws:dms:us-east-1:112233445566:endpoint:HNX2BWIIN5ZYFF7F6UFFZVWTDFFSMTNOV2FTXZA \
   --replication-instance-arn arn:aws:dms:us-east-1:112233445566:rep:ERLHG2UA52EEJJKFYNYWRPCG6T7EPUAB5AWBUJQ \
   --migration-type full-load-and-cdc --table-mappings 'file:///FilePath/mappings.json' \
   --replication-task-settings 'file:///FilePath/task-settings-tt-enabled.json' \
   --replication-task-identifier test-task
                               .
                               .
                               .
   ```

   この例での、Time Travel 設定ファイル名は `task-settings-tt-enabled.json` です。

同様に、このファイルを `modify-replication-task` アクションの一部として指定できます。

次のタスクアクションの Time Travel ログの特別な処理に注意します。
+ `start-replication-task` – レプリケーションタスクを実行する際に、Time Travel に使用される S3 バケットにアクセスできない場合、タスクは `FAILED` としてマークされます。
+ `stop-replication-task` – タスクが停止すると、 は、レプリケーションインスタンスで現在利用可能なすべての Time Travel ログを Time Travel に使用される S3 バケットに AWS DMS すぐにプッシュします。

レプリケーションタスク実行中は、`EncryptionMode` 値を `"SSE_KMS"` から `"SSE_S3"` に変更できます。ただし、その逆の変更はできません。

実行中のタスクの Time Travel ログのサイズが 1 GB を超える場合、DMS はそのサイズに達してから 5 分以内にログを S3 にプッシュします。タスクの実行後、S3 バケットまたは KMS キーにアクセスできなくなると、DMS はこのバケットへのログのプッシュを停止します。ログが S3 バケットにプッシュされていない場合は、S3 と アクセス AWS KMS 許可を確認してください。DMS が上記のログを S3 にプッシュする頻度の詳細については、「[が Time Travel ログを S3 AWS DMS にアップロードする頻度](CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.UploadsToS3.md)」を参照してください。

コンソールから既存のタスクの Time Travel を有効にするには、**[タスク設定]** の下にある JSON エディタオプションを使用して `TTSettings` セクションを追加します。

# Time Travel ログの使用
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.LogSchema"></a>

**Time Travel ログファイルは、次のフィールドを持つカンマ区切り値 (CSV) ファイルです。

```
log_timestamp 
component 
dms_source_code_location 
transaction_id 
event_id 
event_timestamp 
lsn/scn 
primary_key
record_type 
event_type 
schema_name 
table_name 
statement 
action 
result 
raw_data
```

Time Travel ログが S3 で利用できるようになったら、Amazon Athena などのツールを使用して直接アクセスし、クエリを実行できます。または、S3 から任意のファイルをダウンロードする場合と同様に、ログをダウンロードすることもできます。

`mytable` というテーブルのトランザクションがログ記録される Time Travel ログの例は次のとおりです。読みやすくするために、次のログには行末が追加されています。

```
"log_timestamp ","tt_record_type","dms_source_code_location ","transaction_id",
"event_id","event_timestamp","scn_lsn","primary_key","record_type","event_type",
"schema_name","table_name","statement","action","result","raw_data"
"2021-09-23T01:03:00:778230","SOURCE_CAPTURE","postgres_endpoint_wal_engine.c:00819",
"609284109","565612992","2021-09-23 01:03:00.765321+00","00000E9C/D53AB518","","DML",
"UPDATE (3)","dmstest","mytable","","Migrate","","table dmstest.mytable:
UPDATE: id[bigint]:2244937 phone_number[character varying]:'phone-number-482'
age[integer]:82 gender[character]:'f' isactive[character]:'true ' 
date_of_travel[timestamp without time zone]:'2021-09-23 01:03:00.76593' 
description[text]:'TEST DATA TEST DATA TEST DATA TEST DATA'"
```

# が Time Travel ログを S3 AWS DMS にアップロードする頻度
<a name="CHAP_Tasks.CustomizingTasks.TaskSettings.TimeTravel.UploadsToS3"></a>

レプリケーションインスタンスのストレージ使用量を最小限に抑えるために、 は Time Travel ログを定期的に AWS DMS オフロードします。

Time Travel ログは、次の場合に Amazon S3 バケットにプッシュされます。
+ ログの現在のサイズが 1 GB を超える場合、 は 5 分以内にログを S3 AWS DMS にアップロードします。したがって、 AWS DMS は実行中のタスクごとに S3 および に対して 1 時間 AWS KMS あたり最大 12 回の呼び出しを行うことができます。
+ AWS DMS は、ログのサイズに関係なく、1 時間ごとにログを S3 にアップロードします。
+ タスクが停止すると、 はタイムトラベルログを AWS DMS すぐに S3 にアップロードします。