AWS Database Migration Service のターゲットとしての Amazon OpenSearch Service クラスターの使用 - AWS データベース移行サービス

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

AWS Database Migration Service のターゲットとしての Amazon OpenSearch Service クラスターの使用

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

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

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

移行の範囲に適したコンピューティングリソースとストレージリソースを使用して OpenSearch サービスクラスターを設定します。使用するレプリケーションタスクに応じて、次の要素を考慮することをお勧めします。

  • フルデータロードの場合、移行するデータの合計量と転送の速度を考慮します。

  • 継続的に変更をレプリケートする場合、更新頻度、エンドツーエンドのレイテンシーの要件を考慮します。

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

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

転送速度を向上するため、AWS DMS は、OpenSearch Service ターゲットクラスターへのマルチスレッドのフルロードをサポートしています。AWS DMS は、次を含むタスク設定でこのマルチスレッドをサポートします。

  • MaxFullLoadSubTasks – 並列ロードするソーステーブルの最大数を指定するには、このオプションを使用します。DMS は、専用のサブタスクを使用して、対応する OpenSearch Service ターゲットインデックスに各テーブルをロードします。デフォルトは 8、最大値は 49 です。

  • ParallelLoadThreads – AWS DMS が各テーブルを OpenSearch Service ターゲットインデックスにロードするために使用するスレッドの数を指定するには、このオプションを使用します。OpenSearch Service ターゲットの最大値は 32 です。この上限を引き上げるように要請できます。

    注記

    ParallelLoadThreads をデフォルト値 (0) から変更しない場合、AWS DMS は一度に単一のレコードを転送します。この方法の場合、OpenSearch Service クラスターに過度の負荷がかかります。このオプションを 1 以上に設定していることを確認します。

  • ParallelLoadBufferSize – 並列ロードスレッドが OpenSearch Service ターゲットにデータをロードするために使用するバッファに保存するレコードの最大数を指定するには、このオプションを使用します。デフォルト値は 50。最大値は 1,000 です。この設定は ParallelLoadThreads で使用します。ParallelLoadBufferSize は、複数のスレッドがある場合にのみ有効です。

DMS がマルチスレッドを使用して OpenSearch Service クラスターをロードする方法の詳細については、AWS ブログ記事「Scale Amazon OpenSearch 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 – データレコードを OpenSearch Service ターゲットエンドポイントにプッシュするために CDC ロード中に AWS DMS が使用する同時スレッドの数を指定します。デフォルト値はゼロ (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 インデックスへの移行

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

AWS DMS は、次の OpenSearch Service スカラーデータ型をサポートしています。

  • Boolean

  • Date

  • Float

  • Int

  • String

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

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

Amazon OpenSearch Service を AWS Database Migration Service のターゲットとして使用するための前提条件

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "es:ESHttpDelete", "es:ESHttpGet", "es:ESHttpHead", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }

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

OpenSearch Service を AWS DMS のターゲットとして使用する場合のエンドポイントの設定

追加の接続属性の使用と同様、エンドポイントの設定を使用して、ターゲットの OpenSearch Service データベースを設定できます。ターゲットエンドポイントを作成する際に、AWS DMS コンソールを使用するか、AWS CLI--elasticsearch-settings '{"EndpointSetting": "value", ...}' の JSON 構文を指定して create-endpoint コマンドを使用して設定を指定します。

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

属性名 有効値 デフォルト値と説明

FullLoadErrorPercentage

0 より大きく、100 より小さい正の整数。

10 – フルロードタスクの場合、この属性はタスクが失敗する前に許容されるエラーのしきい値を決定する。例えば、ソースエンドポイントに 1,500 行あり、このパラメータが 10 に設定されているとする場合、ターゲットエンドポイントに書き込み時に AWS DMS で 150 を超えるエラー (行数の 10%) が発生した場合、そのタスクは失敗する。

ErrorRetryDuration

0 より大きい正の整数。

300 – ターゲットエンドポイントでエラーが発生した場合、AWS DMS はこの秒数で再試行する。再試行しない場合、タスクは失敗する。

Amazon OpenSearch Service を AWS Database Migration Service のターゲットとして使用する場合の制限

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 サービスは、既存のインデックスへのデータの書き込みをサポートしていません。

Amazon OpenSearch Service のターゲットデータ型

異種データベースからデータを移行する場合、AWS DMS サービスはソースデータベースのデータ型を、AWS DMS データ型と呼ばれる中間のデータ型にマップします。その後このサービスは、中間データ型をターゲットデータ型にマップします。次の表は、AWS DMS の各データ型とマップ先の OpenSearch Service のデータ型を説明しています。

AWS DMS のデータ型 OpenSearch Service のデータ型

Boolean

boolean

Date

string

Time

date

Timestamp

date

INT4

integer

Real4

float

UINT4

integer

AWS DMS のデータ型の詳細については、「AWS Database Migration Service のデータ型」を参照してください。