

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

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

を使用して AWS DMS 、Amazon OpenSearch Service (OpenSearch Service) にデータを移行できます。OpenSearch Service は、OpenSearch Service クラスターのデプロイ、運用、スケーリングが簡単に実行できるマネージドサービスです。

OpenSearch Service では、インデックスとドキュメントを操作します。*インデックス*はドキュメントのコレクションであり、*ドキュメント*はスカラー値、配列、およびその他のオブジェクトを含む JSON オブジェクトです。 は JSON ベースのクエリ言語 OpenSearch を提供するため、インデックス内のデータをクエリして対応するドキュメントを取得できます。

 AWS DMS が OpenSearch Service のターゲットエンドポイントのインデックスを作成すると、ソースエンドポイントからテーブルごとに 1 つのインデックスが作成されます。OpenSearch Service インデックスの作成コストは、いくつかの要因によって異なります。これらは、作成されたインデックスの数、これらのインデックス内のデータの合計量、および が各ドキュメントに OpenSearch 保存する少量のメタデータです。

移行の範囲に適したコンピューティングリソースとストレージリソースを使用して OpenSearch サービスクラスターを設定します。使用するレプリケーションタスクに応じて、次の要素を考慮することをお勧めします。
+ 全データロードの場合、移行するデータの合計量、さらに転送の速度を考慮します。
+ 継続的な変更のレプリケートの場合、更新頻度、エンドツーエンドのレイテンシーの要件を考慮します。

また、OpenSearch クラスターでインデックスを設定し、ドキュメントの数に細心の注意を払います。

**マルチスレッド全ロードタスク設定**

転送速度を向上させるために、 は OpenSearch Service ターゲットクラスターへのマルチスレッド全ロード AWS DMS をサポートします。 は、以下を含むタスク設定でこのマルチスレッド AWS DMS をサポートします。
+ `MaxFullLoadSubTasks` - このオプションを使用して、並列ロードするソーステーブルの最大数を指定します。DMS は、専用のサブタスクを使用して、対応する OpenSearch Service ターゲットインデックスに各テーブルをロードします。デフォルトは 8、最大値は 49 です。
+ `ParallelLoadThreads` – このオプションを使用して、 AWS DMS が各テーブルを OpenSearch Service ターゲットインデックスにロードするために使用するスレッドの数を指定します。OpenSearch Service ターゲットの最大値は 32 です。この上限を増やすよう依頼できます。
**注記**  
`ParallelLoadThreads` をデフォルト値 (0) から変更しない場合、 AWS DMS は一度に 1 つのレコードを転送します。この方法の場合、OpenSearch Service クラスターに過度の負荷がかかります。このオプションを 1 以上に設定していることを確認します。
+ `ParallelLoadBufferSize` – 並列ロードスレッドが OpenSearch Service ターゲットにデータをロードするために使用するバッファに保存するレコードの最大数を指定するには、このオプションを使用します。デフォルト値は 50 です。最大値は 1000 です。この設定は `ParallelLoadThreads` で使用します。`ParallelLoadBufferSize` は、複数のスレッドがある場合にのみ有効です。

マルチスレッドを使用して DMS が OpenSearch Service クラスターをロードする方法の詳細については、 AWS ブログ記事[「移行のために AWS Database Migration Service Amazon OpenSearch Service をスケールする](https://aws.amazon.com/blogs/database/scale-amazon-elasticsearch-service-for-aws-database-migration-service-migrations/)」を参照してください。

**マルチスレッド CDC ロードタスクの設定**

タスク設定を使用して `PutRecords` API コールの動作を変更するなど、OpenSearch Service ターゲットクラスターの変更データキャプチャ (CDC) のパフォーマンスを向上できます。これを行うには、`ParallelApply*` タスク設定を使用して、同時スレッドの数、スレッドあたりのキュー数、バッファに格納するレコード数を指定します。例えば、CDC ロードを実行し、32 本のスレッドを並列に適用するとします。また、スレッドあたり 64 個のキューにアクセスして、バッファあたり 50 個のレコードを保存する必要があります。
**注記**  
CDC から Amazon OpenSearch Service ターゲットエンドポイントへの`ParallelApply*`タスク設定の使用のサポートは、 AWS DMS バージョン 3.4.0 以降で利用できます。

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

`ParallelApply*` タスク設定を使用する場合、`partition-key-type` のデフォルトは `schema-name.table-name` ではなくテーブルの `primary-key` です。

## リレーショナルデータベースから OpenSearch Service インデックスへの移行
<a name="CHAP_Target.Elasticsearch.RDBMS2Elasticsearch"></a>

AWS DMS は、OpenSearch Service のスカラーデータ型へのデータの移行をサポートしています。Oracle や MySQL などのリレーショナルデータベースから OpenSearch Service に移行する場合は、データを格納する方法を再編成が必要となる場合があります。

AWS DMS は、次の OpenSearch Service スカラーデータ型をサポートしています。
+ ブール値 
+ 日付
+ 浮動小数点数
+ Int
+ String

AWS DMS は、Date 型のデータを String 型に変換します。これらの日付を解釈するカスタムマッピングを指定できます。

AWS DMS は LOB データ型の移行をサポートしていません。

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

のターゲットとして OpenSearch Service データベースを使用する前に AWS DMS、 AWS Identity and Access Management 必ず (IAM) ロールを作成してください。このロールは、 がターゲットエンドポイントの OpenSearch Service インデックス AWS DMS にアクセスできるようにします。アクセス許可の最小設定は、次の IAM ポリシーで示します。

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

****  

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

------

OpenSearch Service への移行に使用するロールには、次のアクセス権限が必要です。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "es:ESHttpDelete",
        "es:ESHttpGet",
        "es:ESHttpHead",
        "es:ESHttpPost",
        "es:ESHttpPut"
      ],
      "Resource": "*"
    }
  ]
}
```

------

前の例では、 `{{region}}`を AWS リージョン識別子、 {{`account-id`}} を AWS アカウント ID、 を Amazon OpenSearch Service ドメインの名前`{{domain-name}}`に置き換えます。例: `arn:aws:es:us-west-2:123456789012:domain/my-es-domain`。

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

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

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


| 属性名 | 有効値 | デフォルト値と説明 | 
| --- | --- | --- | 
| `FullLoadErrorPercentage`  | 0 より大きく、100 より小さい正の整数。 | 10 – 全ロードタスクの場合、この属性によって、タスクが失敗するまでに許容されるエラーのしきい値が決まります。たとえば、ソースエンドポイントに 1,500 行あり、このパラメータが 10 に設定されているとします。ターゲットエンドポイントへの書き込み時に が 150 個を超えるエラー (行数の 10%) AWS DMS を検出した場合、タスクは失敗します。 | 
|  `ErrorRetryDuration`  | 0 より大きい正の整数。 | 300 – ターゲットエンドポイントでエラーが発生した場合、 はこの数秒間 AWS DMS 再試行します。再試行しない場合、タスクは失敗します｡ | 
| `UseNewMappingType` | true、または false | `false`、ただし opensearch v2.x を使用するには、`true` に設定する必要があります。 | 

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

Amazon OpenSearch Service をターゲットとして使用する場合、次の制限が適用されます。
+ OpenSearch Service は、動的マッピング (自動推測) を使用して、移行されたデータに使用するデータ型を決定します。
+ OpenSearch サービスは、各ドキュメントを一意の ID で保存します。以下は ID の例です。

  ```
  "_id": "D359F8B537F1888BC71FE20B3D79EAE6674BE7ACA9B645B0279C7015F6FF19FD"
  ```

  各ドキュメント ID は 64 バイト長であるため、ストレージ要件と予想されます。たとえば、 AWS DMS ソースから 100,000 行を移行する場合、結果の OpenSearch Service インデックスにはさらに 6,400,000 バイトのストレージが必要です。
+ OpenSearch Service では、プライマリキー属性を更新できません。この制限は、ターゲットで不要なデータが発生する可能性があるため、変更データキャプチャ (CDC) で継続的なレプリケーションを使用する場合に重要です。CDC モードでは、プライマリキーは 32 バイト長の SHA256 値にマップされます。この値はユーザーが判読できる 64 バイト文字列に変換され、OpenSearch サービスのドキュメント ID として使用されます。
+ が移行できない項目 AWS DMS を検出した場合、Amazon CloudWatch Logs にエラーメッセージを書き込みます。この動作は、例外テーブルにエラーを書き込む他の AWS DMS ターゲットエンドポイントの動作とは異なります。
+ AWS DMS は、マスターユーザーとパスワードできめ細かなアクセスコントロールが有効になっている Amazon ES クラスターへの接続をサポートしていません。
+ AWS DMS は OpenSearch Service サーバーレスをサポートしていません。
+ OpenSearch サービスは、既存のインデックスへのデータの書き込みをサポートしていません。
+ レプリケーションタスクの `TargetTablePrepMode:TRUNCATE_BEFORE_LOAD` 設定は、OpenSearch ターゲットエンドポイントでの使用には対応していません。
+ を使用して Amazon Elasticsearch にデータを移行する場合 AWS DMS、ソースデータにはプライマリキーまたは一意の識別子列が必要です。ソースデータにプライマリキーまたは一意の識別子がない場合は、define-primary-key の変換ルールを使用して定義する必要があります。

## Amazon OpenSearch Service のターゲットデータ型
<a name="CHAP_Target.Elasticsearch.DataTypes"></a>

が異種データベースからデータを AWS DMS 移行すると、サービスはソースデータベースのデータ型をデータ型と呼ばれる中間 AWS DMS データ型にマッピングします。その後、サービスは中間データ型をターゲットデータ型にマッピングします。次の表は、OpenSearch Service で各 AWS DMS データ型とマッピングされるデータ型を示しています。


| AWS DMS データ型 | OpenSearch Service のデータ型 | 
| --- | --- | 
| ブール値 | boolean | 
| 日付 | string | 
| 時間 | date | 
| タイムスタンプ | date | 
| INT4 | integer | 
| Real4 | float | 
| UINT4 | integer | 

 AWS DMS データ型の詳細については、「」を参照してください[AWS Database Migration Service のデータ型](CHAP_Reference.DataTypes.md)。