

# スキーマ管理
<a name="schema-management"></a>

AWS での Cloud Migration Factory ソリューションでは、完全に拡張可能なメタデータリポジトリが提供されるため、自動化、監査、ステータス追跡のためのデータを単一のツールに保存できます。リポジトリには、最も頻繁に使用されるデータのキャプチャと使用を開始できるように、デプロイ時にデフォルトのエンティティ (ウェーブ、アプリケーション、サーバー、データベース) と属性セットが用意されています。ここから、必要に応じてスキーマをカスタマイズできます。

Cognito 管理者グループのユーザーのみが、スキーマを管理する権限を持ちます。ユーザーを管理者または他のグループのメンバーにする方法については、「[ユーザー管理](permission-management.md)」を参照してください。。

**[管理]** を選択しデフォルトエンティティタブの **[属性]** を選択します。以下のタブはエンティティの管理に役立ちます。

 **属性** — 属性を追加、編集、削除できます。

 **情報パネル** — 情報パネルのヘルプコンテンツを編集できます。これはエンティティ画面の右側の [移行管理] セクションに表示されます。

 **スキーマ設定** — 現在、このタブではエンティティのわかりやすい名前を変更することしかできません。これはユーザーインターフェイスに表示される名前です。定義されていない場合、ユーザーインターフェイスはエンティティのプログラム上の名前を使用します。

独自のビジネス固有のエンティティを CMF にマッピングする必要がある場合は、カスタムアセットを作成することもできます。エンティティ名の行の末尾にある **[\+]** タブを押して、新しいカスタムアセットを追加できます。

## 新しいカスタムアセットを追加する
<a name="adding-a-new-custom-asset"></a>

**注記**  
カスタムアセットは、ウェーブプランニングマネージャー (WPM) モジュールの機能です。これらを使用するには、CMF をデプロイするときに WPM を有効にする必要があります。

特定ビジネスケースに対応するエンティティをインポートする場合は、CMF に新しいカスタムアセット (スキーマ) を追加することもできます。エンティティタブの末尾にある **[\+]** 記号を使用して、新しいカスタムアセットを追加できます。

**[\+]** 記号を選択すると、新しいアセットを作成するために必要な最低限の情報を入力する新しいパネルが表示されます。

![新しいスキーマを作成する](http://docs.aws.amazon.com/ja_jp/solutions/latest/cloud-migration-factory-on-aws/images/create-new-schema.png)


新しいアセットを作成したら、アセット固有の属性を追加できます。詳細については、「[属性の追加/編集](#addingediting-an-attribute)」セクションを参照してください。

## 属性の追加/編集
<a name="addingediting-an-attribute"></a>

属性は、AWS での Cloud Migration Factory ソリューションの **[属性]** 管理者セクション経由で動的に変更できます。属性が追加、編集、または削除されると、変更を行う管理者に更新がリアルタイムで適用されます。同じインスタンスに現在ログインしている他のユーザーは、管理者が変更を保存してから 1 分以内にセッションが自動的に更新されます。

一部の属性はシステム属性として定義されます。つまり、この属性は AWS での Cloud Migration Factory のコア機能の鍵となるため、管理者が修正できるのは一部のプロパティだけです。システム属性であるすべての属性は、**[属性を修正]** 画面に表示される警告付きで表示されます。

システム定義属性の場合、編集できるのは以下のみです。
+ 情報パネル
+ 詳細オプション
  + 属性のグループ化と配置
  + 入力の検証

システム定義属性のその他すべてのプロパティは読み取り専用です。

属性の追加

 **属性管理** 

![属性管理](http://docs.aws.amazon.com/ja_jp/solutions/latest/cloud-migration-factory-on-aws/images/attribute-management.png)


新しい属性は、属性を追加したいエンティティの属性タブで **[追加]** ボタンを選択することにより追加することができます。上の例では、**[追加]** を選択することで、データベースエンティティに新しい属性が追加されています。

**[属性を修正]** ダイアログで、以下の必須プロパティを指定する必要があります。

 **プログラム名** — DynamoDB テーブルの項目に対する属性のデータを保存するために使用されるキーです。Migration Factory API を使用する場合や自動化スクリプトでも参照されます。

 **表示名** — このラベルは、ウェブインターフェイスのデータ入力フィールドに対して表示されます。

 **タイプ** — このドロップダウンリストでは、ユーザーが属性に対して保存できるデータのタイプを定義します。以下のオプションが利用できます。


| タイプ | Usage | 
| --- | --- | 
| String | ユーザーは 1 行のテキストを入力できます。キャリッジリターンは許可されません。 | 
| 複数値文字列 | **文字列**と似ていますが、唯一の違いは、ユーザーがフィールド内の別々の行に複数の値を入力できることです。これらの値は配列/リストとして格納されます。 | 
| パスワード | デフォルトで画面に表示されないデータを安全に入力する方法をユーザーに提供します。 この属性タイプを使用する場合、データは暗号化されて保存されず、API ペイロードに表示されるときはクリアテキストで表示されるため、機密データの保存には使用しないでください。パスワードやシークレットはすべて、以下を利用する Migration Factory 認証情報マネージャー (本書で説明) に保存する必要があります。これは、AWS Secrets Manager を使用して、認証情報を安全に保存し、認証情報へのアクセスを可能にします。  | 
| 日付 | ユーザーが日付を選択するための日付選択ツール付きのフィールドを提供します。また、必要な日付を手動で入力することもできます。 | 
| Checkbox (チェックボックス) | 標準チェックボックスが提供されます。チェックするとキー値に「`true」が保存され、チェックされていないと「`false」になるか、キーがレコードに存在しなくなります。 | 
| TextArea | **文字列**タイプとは異なり、**TextAreas** では複数行のテキストを保存できます。基本的なテキスト文字のみをサポートします。 | 
| タグ | ユーザーはキーと値のペアのリストを保存できます。 | 
| リスト | ユーザーが選択できる定義済みオプションのリストを提供します。これらのオプションは、属性の [値リスト] プロパティのスキーマ属性定義で定義されます。 | 
| Relationship | この属性タイプでは、任意の 2 つのエンティティまたはレコード間のリレーションシップを保存できます。リレーションシップ属性を定義するときは、リレーションシップの対象となるエンティティを選択し、次に項目を関連付けるために使用するキー値を選択し、関連項目からユーザーに表示する属性を選択します。<br />ユーザーには、エンティティに基づいたドロップダウンリストに、そのリレーションシップで使用できる値が表示されます。<br />各リレーションシップフィールドの下には、関連アイテムの概要を表示するクイックリンクがあります。 | 
| JSON | JSON データを保存して編集できる JSON エディタフィールドがあります。これは、スクリプトの入出力パラメータや、タスクの自動化に必要なその他のデータを保存したり、その他の用途に使用したりできます。 | 

新しい属性を追加する場合、ポリシーを通じて新しい属性へのアクセス権をユーザーに付与する必要があります。属性へのアクセス権を付与する方法の詳細については、「[アクセス許可の管理](permission-management.md)」セクションを参照してください。

### 情報パネル
<a name="info-panel"></a>

属性の使用方法に関するコンテキストヘルプとガイダンスを指定する機能を提供します。指定すると、UI の属性のラベルの右側に **[情報]** リンクが表示されます。このリンクをクリックすると、ユーザーには画面の右側にあるこのセクションで指定された **[ヘルプコンテンツ]** と **[ヘルプリンク]** が提供されます。

情報パネルセクションには、次の 2 つのデータビューがあります。コンテンツを定義できる **[編集]** ビューと、属性への更新が保存された時点でユーザーに表示されるクイックプレビューが表示される **プレビュー**ビューです。

**[ヘルプタイトル]** は、プレーンテキスト値のみをサポートします。**[ヘルプコンテンツ]** は、テキストの書式設定を可能にする HTML タグのサブセットをサポートします。たとえば、テキストの周囲に開始タグ <b> と終了タグ </b> を追加すると、囲まれたテキストが太字になります (つまり、<b>ネットワークインターフェイス ID</b>) は**ネットワークインターフェイス ID** となります。サポートされているプレフィックスは次のとおりです。


| タグ | Usage | UI の例 | 
| --- | --- | --- | 
| <p></p> | 段落を定義します。 | <p>私の最初の段落</p><br /><p>私の第二段落</p> | 
| <a> | ハイパーリンクを定義します。 | <a href="https://aws.amazon.com/">Visit AWS\!</a> | 
| <h3>, <h4> and <h5> | Defines headings h3 to h5 | <h3>My heading 3</h3> | 
| <span> | テキストのセクションを定義し、テキストの色、サイズ、フォントなどの追加フォーマットを適用できるようにします。 | <span style="color:blue">blue</span> | 
| <div> | ドキュメントのブロックを定義し、テキストの色、サイズ、フォントなどの追加フォーマットを適用できるようにします。 | <div style="color:blue"><br /><h3>This is a blue heading </h3><br /><p>This is some blue text in a div.</p><br /></div> | 
| <ul> \+ <li> | 順序付けのない箇条書きリストを定義します。 | <ul><br /><li>リホスト</li><br /><li>リプラットフォーム</li><br /><li>廃止</li><br /></ul> | 
| <ol>、<li> | 順序付き/番号付きリストを定義します。 | <ol><br /><li>リホスト</li><br /><li>リプラットフォーム</li><br /><li>廃止</li><br /></ol> | 
| <code> | コードを含むテキストのブロックまたはセクションを定義します。 | <code>background-color</code> | 
| <pre> | フォーマット済みのテキストのブロックを定義し、改行、タブ、スペースをすべて出力します。 | <pre><br />My preformatted text.<br />これは固定幅フォントで表示され、入力と同時に表示されます。<<これらのスペースは表示されます。<br /></pre> | 
| <dl>、<dt> および <dd> | 説明リストを定義します。 | <dl><br /><dt>リホスト</dt><br /><dd>リフトアンドシフト移行</dd><br /><dt>廃止</dt><br /><dd>インスタンスまたはサービスを使用停止します</dd><br /></dl> | 
| <hr> | ページ全体の横方向のルールを定義して、トピックまたはセクションの切り替えを表示します。 | <hr> | 
| <br> | テキスト内の改行を定義します。エディタのキャリッジリターンは保存時にに置き換えられるため、これらはサポートされていますが、必須ではありません。 | <br> | 
| <i> および <em> | 定義された*イタリック体*で囲まれたテキストまたは代替のローカライズ形式。 | <i>これはイタリック体です</i>または<em>これもイタリック体です</em> | 
| <b> および <strong> | **太字**フォントで囲まれたテキストを定義します。 | <b>太字です</b>または<strong>これは違います</strong> | 

ヘルプを提供するための別の選択肢は、外部のコンテンツやガイダンスへのリンクです。属性のコンテキストヘルプに外部リンクを追加するには、**[新規 URL を追加]** をクリックして、**[ラベル]** と URLを入力します。必要に応じて、同じ属性タイプに複数のリンクを追加できます。

### 詳細オプション
<a name="advanced-options"></a>

#### 属性のグループ化と配置
<a name="attribute-grouping-positioning"></a>

このセクションでは、管理者は属性を追加/編集 UI 上のどこに配置するかを設定できます。また、ユーザーが関連する属性を簡単に見つけられるよう、属性をグループ化できます。

 **[UI グループ]** は、属性を表示するグループの名前を定義するテキスト値です。UI グループ値が同じ属性はすべて同じグループに配置され、UI グループ が指定されていない属性は **[詳細]** というタイトルのフォーム上部のデフォルトグループに配置されます。。[UI グループ] を指定すると、ユーザーインターフェイスで、ここに表示されているテキストがグループのタイトルとして表示されます。

このセクションの 2 つ目のプロパティは **[グループ内の順序]** です。これは、任意の正数または負数に設定できます。指定すると、この値を基にした最低値から最高値までのソートに基づいて属性が一覧表示されます。**[グループ内の順序]** が指定されていない属性については、優先度が低く、アルファベット順にソートされます。

#### 入力の検証
<a name="input-validation"></a>

このセクションで、管理者は、ユーザーが項目を保存する前に有効なデータを入力したことを確認する検証基準を定義できます。検証では、テキスト値の検索パターンを指定する一連の文字である正規表現または正規表現文字列を使用します。例えば、パターン **^(subnet-([a-z0-9]{17}))$\*** の場合、a～z (小文字) の文字と 0～9 の数字、そして文字の正確な数が **17** である **subnet -** というテキストを検索します。それ以外のものが見つかった場合は false を返し、検証が失敗したことを示します。このガイドでは、考えられる組み合わせやパターンをすべて網羅しているわけではありませんが、インターネット上には、ユースケースに最適なものを作成するのに役立つリソースが多数あります。手始めにいくつか例を紹介します。


| 正規表現パターン | Usage | 
| --- | --- | 
| ^(?\!\\s\*$).\+ | 値が設定されていることを確認します。 | 
| ^(subnet-([a-z0-9]{17})\*)$ | 値が有効なサブネット ID であることを確認します。<br />[テキスト **subnet** の後に文字と数字のみで構成される 17 文字が続きます] | 
| ^(ami-(([a-z0-9]{8,17})\+)$) | 値が有効な AMI ID サブネット ID であることを確認します。<br />[テキスト **amit** の後に文字と数字のみで構成される 8～17 文字が続きます] | 
| ^(sg-([a-z0-9]{17})\*)$ | 値が有効なセキュリティグループ ID 形式であることを確認します。<br />[テキスト **sg-** の後に文字と数字のみで構成される 17 文字が続きます] | 
| ^(([a-zA-Z0-9]\|[a-zA-Z0-9]** [a-zA-Z0-9])\\.)**([A-Za-z0-9]\|[A-Za-z0-9][A-Za-z0-9\\-]\*[A-Za-z0-9])$ | サーバー名が有効で、英数字、ハイフン、ピリオドのみが含まれていることを確認します。 | 
| ^([1-9]\|[1-9][0-9]\|[1-9][0-9][0-9]\|[1-9][0-9][0-9][0-9]\|[1][0-6][0-3][0-8][0-4])$ | 必ず 1 から 1634 までの数字を入力するようにします。 | 
| ^(standard\|io1\|io2\|gp2\|gp3)$ | 入力された文字列が標準、io1、io2、gp2、または gp3 のいずれかに一致することを確認します。 | 

正規表現検索パターンを作成したら、フィールドの下にユーザーに表示される特定のエラーメッセージを指定してください。この値を**検証ヘルプメッセージ**プロパティに入力します。

これら 2 つのプロパティを設定すると、同じ画面の **[検証シミュレーター]** お下で、検索パターンが期待どおりに機能していることと、エラーメッセージが正しく表示されることをテストできます。**[テスト検証]** フィールドにテストテキストを入力するだけで、パターンが正しく一致していることを確認できます。

#### サンプルデータ
<a name="example-data"></a>

サンプルデータセクションでは、管理者は属性に必要なデータ形式の例をユーザーに表示できます。これは、フォームのアップロード時に必要なデータ形式として、ユーザーインターフェイスまたは API を通じて直接指定できます。

**[インテークフォームのサンプルデータ]** に表示されているサンプルデータは、**[移行管理] > [インポート]** の下で **[ダウンロード]、テンプレートインテークフォーム**関数を使用しているときに、その属性が含まれるすべてのインテークテンプレートにプロパティが出力されます。

ユーザーインターフェイスのサンプルデータと API サンプルデータは属性に保存されますが、現在ウェブインターフェイスには公開されていません。これらは統合やスクリプトで使用できます。