翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
DMS Schema Conversion の選択ルール
DMS Schema Conversion は、データベーススキーマをあるエンジンから別のエンジンに変換します。選択ルールを使用して、評価、変換、エクスポートなどのオペレーション中に DMS Schema Conversion が動作するデータベースオブジェクトを制御します。選択ルールは、 SelectionRulesパラメータを (または AWS CLI --selection-rulesで) 渡す JSON オブジェクトです。選択ルールがない場合、オペレーションは何も操作しません。ルールを使用すると、1 つのオブジェクト、スキーマ全体、データベース全体 (Microsoft SQL Server および SAP ASE (Sybase ASE) ソースの場合)、またはパターンに一致するオブジェクトのグループにオペレーションをスコープできます。
注記
AWS マネジメントコンソールを使用すると、DMS Schema Conversion は移行プロジェクト UI の選択に基づいて選択ルールを自動的に構築します。DMS Schema Conversion API または AWS CLI を使用する場合にのみ、選択ルールを直接記述する必要があります。
移行プロジェクトのソース側とターゲット側の両方で同じルールシェイプを使用します。オブジェクトロケーターの server-nameフィールドは、ルールがソースデータプロバイダーをターゲットにするか、ターゲットデータプロバイダーをターゲットにするかを指定します。1 つの移行プロジェクトでは通常、評価と変換にはソースルール、SQL エクスポートにはターゲットルールの 2 種類のルールが使用されます。
選択ルールの形式
選択ルールドキュメントは、単一のrules配列を持つ JSON オブジェクトです。配列内の各エントリは 1 つのルールであり、すべてのルールには次のフィールドがすべて含まれている必要があります。
| パラメータ | 値 | 説明 |
|---|---|---|
rule-type |
selection |
ルールのタイプを識別する値。すべての選択ルールで、これを に設定しますselection。必須パラメータ。 |
rule-id |
数値 (整数)。 | ルールの一意の数値識別子。必須パラメータ。 |
rule-name |
英数字値。 | ルールを特定する一意な名前。必須パラメータ。 |
rule-action |
explicit, include, または exclude |
オブジェクトロケーターの解釈方法を決定する値。「ルールのアクション」を参照してください。必須パラメータ。 |
object-locator |
エンジン固有のロケーターキーを含む JSON オブジェクト。 | ルールが適用されるデータベースオブジェクトを識別するオブジェクト。「オブジェクトロケーター階層」を参照してください。必須パラメータ。 |
次の最小限の例は、ソースサーバー上の 1 つのスキーマを対象としています。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
注記
AWS CLI を使用する場合は、次の方法で選択ルールを渡すことができます。これは、任意の文字列パラメータで動作する標準の AWS CLI 機能です。
-
インライン:
--selection-rules '{"rules":[...]}'(JSON 二重引用符のエスケープを避けるために一重引用符を使用) -
相対パス:
--selection-rules file://example-rules.json -
絶対パス:
--selection-rules file:///tmp/example-rules.json
内のすべてのフィールド値は空でない文字列object-locatorである必要があります。空の文字列 ( など"schema-name": "") は、 エラーで拒否されます。
注記
このdatabase-nameキーは、Microsoft SQL Server および SAP ASE (Sybase ASE) ソースでのみ有効です。他のソースエンジンのロケーターdatabase-nameへの送信は、サポートされていないキーとして拒否されます。
ルールの記述
オブジェクトロケーター階層
は、エンジン固有のキーの階層を介して 1 つ以上のデータベースオブジェクトobject-locatorを識別します。各キーはスコープを絞り込み、スコープを広げるために低レベルのキーを省略します。階層はソースエンジンによって異なります。
-
Microsoft SQL Server と SAP ASE (Sybase ASE) —
server-name→database-name→schema-name→オブジェクトレベルのキー (例:table-name)。これらのエンジンは、サーバーとスキーマの間に追加のdatabase-nameレベルがあります。 -
他のすべてのエンジン (Oracle、IBM Db2 for z/OS、およびすべてのターゲットエンジン: PostgreSQL、Aurora PostgreSQL、MySQL、Aurora MySQL、IBM Db2 LUW) —
server-name→schema-name→オブジェクトレベルのキー。これらのエンジンにはdatabase-nameレベルがありません。スキーマは の直下の上位コンテナですserver-name。
次の の例では、特定の Microsoft SQL Server テーブルを 1 つ選択します。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
スコープをスキーマ全体に拡大するには、リーフレベルのキーを省略します。その後、このルールは、テーブル、ビュー、プロシージャ、関数、シーケンス、ソースエンジンが公開するその他のオブジェクトなど、そのスキーマ内のすべてのアドレス可能なオブジェクトタイプに適用されます。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name" } } ] }
使用できるロケーターキーは、ソースエンジンまたはターゲットエンジンによって異なります。エンジンごとの完全なキーリファレンスについては、「」を参照してくださいデータベース別のオブジェクトロケーターキー。
ソースルールとターゲットルール
明示的なrule-typeフィールドは、ルールを「ソース」または「ターゲット」としてマークしません。の server-name値で区別を完全に制御しますobject-locator。 がソースデータプロバイダーserver-nameと一致する場合、ルールはソースメタデータツリーをターゲットとし、 がターゲットデータプロバイダーと一致する場合、ルールはターゲットメタデータツリーをターゲットとします。
server-name では、次のいずれかを使用できます。
-
データプロバイダーで設定されたサーバー名の値。これは通常、ホスト名または IP アドレスですが、同じマシンに解決される別の DNS 名または IP ではなく、データプロバイダーに保存されている値と正確に一致する必要があります。
-
データプロバイダーのリソース ID — ARN の最後のセグメント (たとえば、ARN が の場合
arn:aws:dms:us-east-1:111122223333:data-provider:EXAMPLEABCDEFGHIJKLMNOPQRS、リソース ID は )EXAMPLEABCDEFGHIJKLMNOPQRS。
ルールのアクション
rule-action フィールドを使用して、DMS Schema Conversion がオブジェクトロケーター内の値を解釈する方法を指定します。ワイルドカードは、 includeおよび でのみ使用できますexclude。
値 |
行動 |
どのような場合に使用するか |
|---|---|---|
|
名前がパターンに一致するすべてのオブジェクトを選択します。(0 文字以上の |
を使用して、オブジェクトのグループを共有命名パターンと照合します。 |
|
前述の |
を使用して、より広範な から例外を抽出します |
|
名前付きオブジェクトを正確に選択します。 |
アクションを実行するすべてのオブジェクトの正確な名前がわかっている場合に使用します。 |
注記
一部のオペレーションは"explicit"ルールのみを受け入れ、 "include"または をサポートしていません"exclude"。特定のオペレーションの AWS API リファレンスをチェックして、サポートされているルールアクションを確認します。
オブジェクトロケーターリファレンス
データベース別のオブジェクトロケーターキー
次のタブは、サポートされている各データベースのロケーターキーを示しています。
エンジン別のカテゴリ名
選択ルールのcategory-name値は、個々のオブジェクトではなくオブジェクトクラス全体を対象としています。カテゴリ名はエンジン固有で、大文字と小文字が区別されます。オペレーションが受け入れるかどうかcategory-nameはオペレーションによって異なります。使用しているオペレーションの AWS API リファレンスを確認してください。以下のタブは、ソースエンジンとターゲットエンジンの両方を対象としています。
重要
あるエンジンから別のエンジン用に設定されたプロジェクトにカテゴリ名を送信すると、エラーが返されます。
選択ルールの例
次の例は、一般的な移行シナリオの選択ルールを記述する方法を示しています。各例では、 StartMetadataModelConversionや などの DMS Schema Conversion API オペレーションに渡す--selection-rulesパラメータ値を使用しますStartMetadataModelAssessment。
Microsoft SQL Server ソースから変換する特定のテーブルを 1 つ選択します。Microsoft SQL Server ではdatabase-name、 に加えて が必要ですschema-name。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "schema_name", "table-name": "table_name" } } ] }
オブジェクトレベルのキーを省略して、Oracle スキーマ内のすべてのオブジェクトを選択します。Oracle にはdatabase-nameレベルがありません。スキーマは の最上位コンテナですserver-name。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } } ] }
Oracle ビューは、 table-name で を使用して対処されます"table-type": "view"。個別のview-nameキーはありません。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "view_name", "table-type": "view" } } ] }
IBM Db2 for z/OS ソースから特定のストアドプロシージャを 1 つ選択します。IBM Db2 for z/OS は を使用しprocedure-name、database-nameレベルなしで から server-name に直接移行schema-nameします。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "procedure-name": "procedure_name" } } ] }
を のワイルドカード%として使用して、SAP ASE (Sybase ASE) スキーマのすべての手順を選択しますprocedure-name。SAP ASE (Sybase ASE) には database-nameserver-name~ が必要ですschema-name。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "%" } } ] }
プレフィックスで複数のテーブル%を一致させるには、 を使用します。この例では、名前が で始まるすべてのテーブルを選択しますFact_。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "table-name": "Fact_%" } } ] }
Oracle スキーマにすべてのオブジェクトを含め、名前が で始まるテーブルを除外しますTMP_。ルールはrule-id順番に評価されます。一致すると excludeが優先されます。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "schema-name": "schema_name" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "schema-name": "schema_name", "table-name": "TMP_%" } } ] }
1 つのドキュメントで複数のexplicitルールを使用して、特定のプロシージャセットを名前で選択します。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_A" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_B" } }, { "rule-type": "selection", "rule-id": "3", "rule-name": "rule_name", "rule-action": "explicit", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_C" } } ] }
include ルールを使用して、名前が で始まるすべてのプロシージャを照合しPROC_、次にそのセットPROC_TESTから削除する exclude ルールを使用します。exclude ルールは includeルールに従う必要があります。スタンドアロンexcludeは効果がありません。
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "rule_name", "rule-action": "include", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_%" } }, { "rule-type": "selection", "rule-id": "2", "rule-name": "rule_name", "rule-action": "exclude", "object-locator": { "server-name": "source_server", "database-name": "database_name", "schema-name": "dbo", "procedure-name": "PROC_TEST" } } ] }