

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

# のターゲットとしての Amazon Timestream の使用 AWS Database Migration Service
<a name="CHAP_Target.Timestream"></a>

を使用して AWS Database Migration Service 、フルロードと CDC データ移行をサポートしながら、ソースデータベースから Amazon Timestream ターゲットエンドポイントにデータを移行できます。

Amazon Timestream は、大量のデータインジェスト用に構築された、高速でスケーラブルなサーバーレスの時系列データベースサービスです。時系列データは、一定の間隔で収集された一連のデータポイントで、時間の経過とともに変化するイベントの測定に使用します。IoT アプリケーション、DevOps アプリケーション、分析アプリケーションのメトリクスの収集、保存、分析に役立ちます。Timestream にデータを保存すると、データの傾向やパターンをほぼリアルタイムで視覚化して特定できます。Amazon Timestream の詳細については、「Amazon Timestream デベロッパーガイド」の「[Amazon Timestream とは](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html)」を参照してください。**

**Topics**
+ [のターゲットとして Amazon Timestream を使用するための前提条件 AWS Database Migration Service](#CHAP_Target.Timestream.Prerequisites)
+ [マルチスレッド全ロードタスク設定](#CHAP_Target.Timestream.FLTaskSettings)
+ [マルチスレッド CDC ロードタスクの設定](#CHAP_Target.Timestream.CDCTaskSettings)
+ [のターゲットとして Timestream を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Target.Timestream.ConnectionAttrib)
+ [Amazon Timestream ターゲットエンドポイントの作成と変更](#CHAP_Target.Timestream.CreateModifyEndpoint)
+ [データを Timestream トピックに移行するためのオブジェクトマッピングの使用](#CHAP_Target.Timestream.ObjectMapping)
+ [のターゲットとして Amazon Timestream を使用する場合の制限 AWS Database Migration Service](#CHAP_Target.Timestream.Limitations)

## のターゲットとして Amazon Timestream を使用するための前提条件 AWS Database Migration Service
<a name="CHAP_Target.Timestream.Prerequisites"></a>

Amazon Timestream を のターゲットとして設定する前に AWS DMS、必ず IAM ロールを作成してください。このロールは AWS DMS 、 が Amazon Timestream に移行するデータにアクセスできるようにする必要があります。Timestream への移行に使用するロールの最低限のアクセス許可は、次の IAM ポリシーに示されます。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowDescribeEndpoints",
      "Effect": "Allow",
      "Action": [
        "timestream:DescribeEndpoints"
      ],
      "Resource": "*"
    },
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "timestream:ListTables",
        "timestream:DescribeDatabase"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME"
    },
    {
      "Sid": "VisualEditor1",
      "Effect": "Allow",
      "Action": [
        "timestream:DeleteTable",
        "timestream:WriteRecords",
        "timestream:UpdateTable",
        "timestream:CreateTable"
      ],
      "Resource": "arn:aws:timestream:us-east-1:123456789012:database/DATABASE_NAME/table/TABLE_NAME"
    }
  ]
}
```

------

すべてのテーブルを移行する場合は、上の例の *TABLE\$1NAME* として `*` を使用します。

Timestream をターゲットとして使用する場合は、次の点に注意してください。
+ タイムスタンプが 1 年を超える履歴データを取り込む場合は、 AWS DMS を使用してデータをカンマ区切り値 (csv) 形式で Amazon S3 に書き込むことをお勧めします。次に、Timestream のバッチロードを使用してデータを Timestream に取り込みます。詳細については、「Amazon Timestream デベロッパーガイド」の「[Timestream でのバッチロードの使用](https://docs.aws.amazon.com/timestream/latest/developerguide/batch-load.html)」を参照してください。[https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html)
+ 1 年未満のデータをフルロードで移行する場合は、Timestream テーブルのメモリストア保持期間を最も古いタイムスタンプ以上に設定することをお勧めします。次に、移行が完了したら、テーブルのメモリストア保持期間を編集して希望の値に変更します。例えば、データの最も古いタイムスタンプが 2 か月前である場合、このデータを移行するには、次の操作を行います。
  + Timestream ターゲットテーブルのメモリストア保持期間を 2 か月に設定します。
  + を使用してデータ移行を開始します AWS DMS。
  + データ移行が完了したら、ターゲット Timestream テーブルの保持期間を希望の値に変更します。

   以下のページの情報を使用して、移行前にメモリストアのコストを見積もることをお勧めします。
  + [Amazon Timestream の料金](https://aws.amazon.com/timestream/pricing)
  + [AWS 料金計算ツール](https://calculator.aws/#/addService) 
+ CDC データ移行では、取り込まれたデータがメモリストア保持期間の範囲内に収まるように、ターゲットテーブルのメモリストア保持期間を設定することをお勧めします。詳細については、「Amazon Timestream デベロッパーガイド」の「[書き込みのベストプラクティス](https://docs.aws.amazon.com/timestream/latest/developerguide/data-ingest.html)」を参照してください。[https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html)

## マルチスレッド全ロードタスク設定
<a name="CHAP_Target.Timestream.FLTaskSettings"></a>

データ転送速度を向上させるために、 は、以下のタスク設定で Timestream ターゲットエンドポイントへのマルチスレッド全ロード移行タスク AWS DMS をサポートします。
+ `MaxFullLoadSubTasks` - このオプションを使用して、並列ロードするソーステーブルの最大数を指定します。DMS は、専用のサブタスクを使用して、対応する Amazon Timestream ターゲットテーブルに各テーブルをロードします。デフォルトは 8、最大値は 49 です。
+ `ParallelLoadThreads` – このオプションを使用して、 AWS DMS が各テーブルを Amazon Timestream ターゲットテーブルにロードするために使用するスレッドの数を指定します。Timestream ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。
+ `ParallelLoadBufferSize` – このオプションを使用して、Amazon Timestream ターゲットにデータをロードするために並列ロードスレッドで使用する、バッファ内に保存するレコードの最大数を指定します。デフォルト値は 50 です。最大値は 1000 です。この設定は `ParallelLoadThreads` で使用します。`ParallelLoadBufferSize` は、複数のスレッドがある場合にのみ有効です。
+ `ParallelLoadQueuesPerThread` - このオプションを使用して、各同時スレッドがキューからデータレコードを取り出し、ターゲットのバッチロードを生成するためにアクセスするキューの数を指定します。デフォルトは 1 です。ただし、さまざまなペイロードサイズの Amazon Timestream ターゲットの場合、有効な範囲は 1 スレッドあたり 5～512 キューです。

## マルチスレッド CDC ロードタスクの設定
<a name="CHAP_Target.Timestream.CDCTaskSettings"></a>

CDC パフォーマンスを向上させるために、 は次のタスク設定 AWS DMS をサポートしています。
+ `ParallelApplyThreads` – CDC ロード中に AWS DMS がデータレコードを Timestream ターゲットエンドポイントにプッシュするために使用する同時スレッドの数を指定します。デフォルト値は 0、最大値は 32 です。
+ `ParallelApplyBufferSize` – 同時スレッドが CDC ロード中に Timestream ターゲットエンドポイントにプッシュするために、各バッファキューに保存するレコードの最大数を指定します。デフォルト値は 100 で、最大値は 1,000 です。このオプションは、`ParallelApplyThreads` で複数のスレッドを指定する場合に使用します。
+ `ParallelApplyQueuesPerThread` – 各スレッドがキューからデータレコードを取り出し、CDC 中に Timestream エンドポイントのバッチロードを生成するためにアクセスするキューの数を指定します。デフォルト値は 1、最大値は 512 です。

## のターゲットとして Timestream を使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Target.Timestream.ConnectionAttrib"></a>

エンドポイント設定を使用して、追加の接続属性を使用する場合と同じように、Timestream ターゲットデータベースを設定できます。 AWS DMS コンソールを使用するか、`--timestream-settings '{"EndpointSetting": "value", ...}'`JSON 構文で の `create-endpoint` コマンドを使用して[AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)、ターゲットエンドポイントを作成するときに設定を指定します。

次の表は、ターゲットとしての Timestream で使用できるエンドポイント設定を示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Target.Timestream.html)

## Amazon Timestream ターゲットエンドポイントの作成と変更
<a name="CHAP_Target.Timestream.CreateModifyEndpoint"></a>

IAM ロールを作成し、アクセス許可の最小セットを確立したら、 AWS DMS コンソールを使用するか、JSON 構文で の `create-endpoint` コマンドを使用して [AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/dms/index.html)Amazon Timestream `--timestream-settings '{"EndpointSetting": "value", ...}'` ターゲットエンドポイントを作成できます。

以下の例は、 AWS CLIを使用して Timestream ターゲットエンドポイントを作成および変更する方法を示しています。

**Timestream ターゲットエンドポイントの作成コマンド**

```
aws dms create-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "DatabaseName":"db_name",
    "MagneticDuration": 3,
    "CdcInsertsAndUpdates": true,
    "EnableMagneticStoreWrites": true,
}
```

**Timestream ターゲットエンドポイントの変更コマンド**

```
aws dms modify-endpoint —endpoint-identifier timestream-target-demo
--endpoint-type target —engine-name timestream
--service-access-role-arn arn:aws:iam::123456789012:role/my-role
--timestream-settings
{
    "MemoryDuration": 20,
    "MagneticDuration": 3,
}
```

## データを Timestream トピックに移行するためのオブジェクトマッピングの使用
<a name="CHAP_Target.Timestream.ObjectMapping"></a>

AWS DMS はテーブルマッピングルールを使用して、ソースからターゲットの Timestream トピックにデータをマッピングします。ターゲットトピックにデータをマッピングするために、オブジェクトマッピングと呼ばれるテーブルマッピングルールのタイプを使用します。オブジェクトマッピングを使用して、ソースのデータレコードをどのように Timestream トピックに発行されたデータレコードにマッピングするかを定義します。

Timestream トピックには、パーティションキー以外にプリセット構造はありません。

**注記**  
オブジェクトマッピングは必ずしも使用する必要はありません。通常のテーブルマッピングは、さまざまな変換に使用できます。ただし、パーティションキータイプは次のデフォルト動作に従います。  
プライマリキーはフルロードのパーティションキーとして使用されます。
並行適用タスク設定を使用しない場合は、`schema.table` が CDC のパーティションキーとして使用されます。
並列適用タスク設定を使用する場合、プライマリキーは CDC のパーティションキーとして使用されます。

オブジェクトマッピングルールを作成するには、`object-mapping` として `rule-type` を指定します。このルールが、使用したいオブジェクトマッピングのタイプを指定します。ルールの構造は次のとおりです。

```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "id",
            "rule-name": "name",
            "rule-action": "valid object-mapping rule action",
            "object-locator": {
                "schema-name": "case-sensitive schema name",
                "table-name": ""
            }
        }
    ]
}
```



```
{
    "rules": [
        {
            "rule-type": "object-mapping",
            "rule-id": "1",
            "rule-name": "timestream-map",
            "rule-action": "map-record-to-record",
            "target-table-name": "tablename",
            "object-locator": {
                "schema-name": "",
                "table-name": ""
            },
            "mapping-parameters": {
                "timestream-dimensions": [
                    "column_name1",
                     "column_name2"
                ],
                "timestream-timestamp-name": "time_column_name",
                "timestream-multi-measure-name": "column_name1or2",
                "timestream-hash-measure-name":  true or false,
                "timestream-memory-duration": x,
                "timestream-magnetic-duration": y
            }
        }
    ]
}
```

AWS DMS は現在、 `rule-action`パラメータの唯一の有効な値`map-record-to-document`として `map-record-to-record`と をサポートしています。`map-record-to-record` と の`map-record-to-document`値は、`exclude-columns`属性リストの一部として除外されていないレコードに対してデフォルトで AWS DMS 何を行うかを指定します。これらの値は、どのような方法でも属性マッピングに影響しません。

リレーショナルデータベースから Timestream トピックに移行する場合は `map-record-to-record` を使用します。このルールタイプでは、Timestream トピックのパーティションキーとしてリレーショナルデータベースの `taskResourceId.schemaName.tableName` 値を使用し、ソースデータベース内の各列の属性を作成します。を使用する場合`map-record-to-record`、`exclude-columns`属性リストにリストされていないソーステーブルの任意の列に対して、 はターゲットトピックに対応する属性 AWS DMS を作成します。この対応する属性は、そのソース列が属性マッピングで使用されているかどうかにかかわらず作成されます。

`map-record-to-record` を理解するための 1 つの方法は、実際の動作を確認することです。この例では、次の構造とデータを含むリレーショナルデータベースのテーブルの行から始めると想定してください。


| FirstName | LastName | StoreId | HomeAddress | HomePhone | WorkAddress | WorkPhone | DateofBirth | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Randy | Marsh | 5 | 221B Baker Street | 1234567890 | 31 Spooner Street, Quahog  | 9876543210 | 02/29/1988 | 

この情報を `Test` という名前のスキーマから Timestream トピックに移行するには、データをターゲットトピックにマッピングするルールを作成します。以下のルールはマッピングを示しています。

```
{
    "rules": [
        {
            "rule-type": "selection",
            "rule-id": "1",
            "rule-name": "1",
            "rule-action": "include",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "%"
            }
        },
        {
            "rule-type": "object-mapping",
            "rule-id": "2",
            "rule-name": "DefaultMapToTimestream",
            "rule-action": "map-record-to-record",
            "object-locator": {
                "schema-name": "Test",
                "table-name": "Customers"
            }
        }
    ]
}
```

Timestream トピックとパーティションキー (この例では `taskResourceId.schemaName.tableName`) を指定した場合、Timestream ターゲットトピックのサンプルデータを使用した結果のレコード形式は次のとおりです。

```
  {
     "FirstName": "Randy",
     "LastName": "Marsh",
     "StoreId":  "5",
     "HomeAddress": "221B Baker Street",
     "HomePhone": "1234567890",
     "WorkAddress": "31 Spooner Street, Quahog",
     "WorkPhone": "9876543210",
     "DateOfBirth": "02/29/1988"
  }
```

## のターゲットとして Amazon Timestream を使用する場合の制限 AWS Database Migration Service
<a name="CHAP_Target.Timestream.Limitations"></a>

Amazon Timestream をターゲットとして使用する場合は、以下の制限が適用されます。
+ **ディメンションとタイムスタンプ:** Timestream はソースデータ内のディメンションとタイムスタンプを複合プライマリキーのように使用します。また、これらの値を更新することを許可しません。つまり、ソースデータベース内のレコードのタイムスタンプまたはディメンションを変更すると、Timestream データベースは新しいレコードを作成しようとします。したがって、レコードのディメンションまたはタイムスタンプを別の既存のレコードのディメンションまたはタイムスタンプと一致するように変更すると、 は新しいレコードを作成したり、以前の対応するレコードを更新したりする代わりに、他のレコードの値 AWS DMS を更新します。
+ **DDL コマンド:** の現在のリリースでは、 `CREATE TABLE`および `DROP TABLE` DDL コマンド AWS DMS のみがサポートされています。
+ **レコードの制限:** Timestream には、レコードサイズやメジャーサイズなど、レコードに関する制限があります。詳細については、「Amazon Timestream デベロッパーガイド」の「[クォータ](https://docs.aws.amazon.com/timestream/latest/developerguide/what-is-timestream.html)」を参照してください。[https://docs.aws.amazon.com/](https://docs.aws.amazon.com/)
+ **レコードと NULL 値の削除:** Timestream はレコードの削除をサポートしていません。ソースから削除されたレコードの移行をサポートするために、 は Timestream ターゲットデータベースのレコード内の対応するフィールド AWS DMS をクリアします。 は、対応するターゲットレコードのフィールドの値を、数値フィールドの場合は **0**、テキストフィールドの場合は **null**、ブール型フィールドの場合は **false** AWS DMS に変更します。
+ ターゲットとしての Timestream は、リレーショナルデータベース (RDBMS) 以外のソースをサポートしていません。
+ AWS DMS は、次のリージョンのターゲットとして Timestream のみをサポートします。
  + 米国東部 (バージニア北部)
  + 米国東部 (オハイオ)
  + 米国西部 (オレゴン)
  + 欧州 (アイルランド)
  + 欧州 (フランクフルト)
  + アジアパシフィック (シドニー)
  + アジアパシフィック (東京)
+ ターゲットとしての Timestream は、`TargetTablePrepMode` を `TRUNCATE_BEFORE_LOAD` に設定することをサポートしていません。この設定で `DROP_AND_CREATE` を使用しないことをお勧めします。