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 オブジェクトです。 は 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 をスケールする」を参照してください。

マルチスレッド 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 インデックスへの移行

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

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

  • ブール値

  • Date

  • 浮動小数点数

  • Int

  • String

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

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

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

のターゲットとして 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

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

次の表は、ターゲットとして 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

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 のターゲットデータ型

が異種データベースからデータを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 のデータ型