## General Setup
location="<your-resource-region>"
resourcegroup="<your-resource-group-name>"
## Azure Digital Twins Setup
# Instance name can contain letters, numbers, and hyphens. It must start and end with a letter or number, and be between 4 and 62 characters long.
dtname="<name-for-your-digital-twins-instance>"
# Connection name can contain letters, numbers, and hyphens. It must contain at least one letter, and be between 3 and 50 characters long.
connectionname="<name-for-your-data-history-connection>"
## Event Hub Setup
# Namespace can contain letters, numbers, and hyphens. It must start with a letter, end with a letter or number, and be between 6 and 50 characters long.
eventhubnamespace="<name-for-your-event-hub-namespace>"
# Event hub name can contain only letters, numbers, periods, hyphens and underscores. It must start and end with a letter or number.
eventhub="<name-for-your-event-hub>"
## Azure Data Explorer Setup
# Cluster name can contain only lowercase alphanumeric characters. It must start with a letter, and be between 4 and 22 characters long.
clustername="<name-for-your-cluster>"
# Database name can contain only alphanumeric, spaces, dash and dot characters, and be up to 260 characters in length.
databasename="<name-for-your-database>"
# Enter a name for the table where relationship create and delete events will be stored.
relationshiplifecycletablename="<name-for-your-relationship-lifecycle-events-table>"
# Enter a name for the table where twin create and delete events will be stored.
twinlifecycletablename="<name-for-your-twin-lifecycle-events-table>"
# Optionally, enter a custom name for the table where twin property updates will be stored. If not provided, the table will be named AdtPropertyEvents.
twinpropertytablename="<name-for-your-twin-property-events-table>"
マネージド ID を使用して Azure Digital Twins インスタンスを作成する
Azure Digital Twins インスタンスが既にある場合は、そのシステム割り当てマネージド ID を有効にしてあることを確認します。
Azure Digital Twins インスタンスがない場合は、マネージド ID を使用してインスタンスを作成するに関する記事の手順に従って、システム割り当てマネージド ID を持つ Azure Digital Twins インスタンスを初めて作成します。
次に、そのインスタンスについて "Azure Digital Twins データ所有者" ロールを持っていることを確認します。 手順については、「ユーザーのアクセス許可を設定する」を参照してください。
次に、Kusto クラスターを作成します。 次のコマンドの実行には 5 から 10 分かかり、Developer レベルに E2a v4 クラスターが作成されます。 この種類のクラスターは、エンジンとデータ管理クラスター用に 1 つのノードを持ち、開発とテストのシナリオに適しています。 Azure Data Explorer でのレベルと、運用ワークロードに適したオプションを選択する方法について詳しくは、「Azure Data Explorer クラスターに適したコンピューティング SKU を選択する」と「Azure Data Explorer の価格」をご覧ください。
上記のコマンドを実行するときに、自分に代わってデータ履歴接続を設定するために必要なアクセス許可を割り当てることができます (必要なアクセス許可を既に割り当ててある場合は、これらのプロンプトをスキップできます)。 これらのアクセス許可は、Azure Digital Twins インスタンスのマネージド ID に付与されます。 最低限必要なロールは次のとおりです。
[アクセス許可] ページで、すべてのチェック ボックスをオンにして、Event Hubs と Azure Data Explorer リソースに接続するためのアクセス許可を Azure Digital Twins インスタンスに付与します。 既にそれ以上のアクセス許可が付与されている場合は、このステップを省略できます。
[次へ] を選択します。
[確認および作成] ページでリソースの詳細を確認し、[接続の作成] を選びます。
接続の作成が完了すると、Azure Digital Twins インスタンスの [Data history]\(データ履歴\) ページに戻り、作成したデータ履歴接続の詳細が表示されます。
データ履歴接続を設定した後は、必要に応じて、Event Hubs と Azure Data Explorer リソースへのアクセス用に Azure Digital Twins インスタンスに付与したロールを削除してかまいません。 これ以降、データ履歴を使うためにインスタンスに必要な唯一のロールは、Event Hubs リソースに対する "Azure Event Hubs データ送信者" (または、"Azure Event Hubs データ所有者" のように、これらのアクセス許可を含むそれより高いロール) だけです。
注意
接続が設定されると、Azure Data Explorer クラスターの既定の設定では、インジェストの待ち時間が約 10 分以下になります。 ストリーミング インジェスト (待ち時間が 10 秒未満) または インジェスト バッチ処理ポリシーを有効にすることで、この待ち時間を短縮できます。 Azure Data Explorer のインジェストの待ち時間について詳しくは、「エンドツーエンドのインジェスト待機時間」をご覧ください。
データ履歴リソースへのネットワーク アクセスを制限する
データ履歴 (Azure Digital Twins インスタンス、イベント ハブ、または Azure Data エクスプローラー クラスター) に関連するリソースへのネットワーク アクセスを制限する場合は、データ履歴接続を設定した後でこれらの制限を設定する必要があります。 これには、ネットワーク アクセスを減らすための他の手段の中でも、リソースのローカル アクセスの無効化が含まれます。
データ履歴リソースが相互に通信できるようにするには、システム割り当てマネージド ID を使用するように Azure Data エクスプローラー データベースのデータ接続も変更する必要があります。
システム割り当てマネージド ID を使用するように、Azure Data エクスプローラー データベースのデータ接続を更新します。 Azure portal でこれを行うには、Azure Data エクスプローラー クラスターに移動し、メニューの [データベース] を使用してデータ履歴データベースに移動します。 データベース メニューで、[データ接続] を選択します。 データ履歴接続のテーブル エントリに、[マネージド ID の割り当て] オプションが表示されます。ここで、[システム割り当て] を選択できます。
これで、Azure Digital Twins インスタンス、イベント ハブ、または Azure Data エクスプローラー クラスターのアクセス設定を変更することで、ローカル承認を無効にしたり、目的のリソースに対するその他のネットワーク制限を設定したりできます。
接続のセットアップのトラブルシューティング
データ履歴接続を設定するときに発生する可能性がある一般的なエラーとその解決方法を次に示します。
Azure Data エクスプローラー クラスターに対してパブリック ネットワーク アクセスが無効になっている場合は、サービスがデータ履歴接続を作成できなかったというエラーが発生し、"リソースは内部サーバー エラーのため ACT できませんでした" というメッセージが表示されます。Azure Data エクスプローラー クラスターでパブリック ネットワーク アクセスが無効になっている場合、Azure Digital Twins はテーブルやその他の必要な成果物を構成できないため、データ履歴のセットアップは失敗します。
(CLI ユーザー)"Could not create Azure Digital Twins instance connection. (Azure Digital Twins インスタンス接続を作成できませんでした。) というエラーが発生した場合。 データベースにテーブルおよびマッピング ルールを作成できません。 Azure Data Explorer のアクセス許可を確認し、az login を実行して資格情報を更新してください" というエラーが発生する場合は、Azure Data Explorer クラスターのアクセス許可で自分自身を AllDatabasesAdmin として追加することにより、エラーを解決します。
(Cloud Shell ユーザー)Cloud Shell を使用していて、"MSI への接続に失敗しました。 Please make sure MSI is configured correctly. (MSI が正しく構成されていることを確認してください。)" というエラーが発生する場合は、代わりにローカルな Azure CLI インストールを使ってコマンドを実行してみてください。
サンプルのツイン グラフで検証する
データ履歴接続が設定されたので、デジタル ツインからのデータを使ってテストすることができます。
グラフの更新をアクティブに受信しているツインが Azure Digital Twins インスタンスに既にある場合 (ツイン プロパティの更新や、要素を作成または削除してグラフの構造を変更した場合の更新を含む)、このセクションをスキップし、独自のリソースを使用して結果を視覚化できます。
Azure Digital Twins Data Simulator を使って、このシナリオ用のサンプル グラフを設定できます。 Azure Digital Twins データ シミュレーターは、Azure Digital Twins インスタンスにツインとリレーションシップを作成し、プロパティの更新をツインに継続的にプッシュします。
サンプルのグラフを作成する
Azure Digital Twins Data Simulator を使って、サンプルのツイン グラフをプロビジョニングし、プロパティの更新データをプッシュすることができます。 ここで作成するツイン グラフでは、乳製品会社の低温殺菌処理がモデル化されています。
次のクエリを使用して、サンプルのオスロ酪農工場内のすべての塩機械ツインの流出をグラフ化します。 この Kusto クエリでは、Azure Digital Twins プラグインを使って対象のツインを選び、それらのツインを Azure Data Explorer のデータ履歴の時系列に結合してから、結果をグラフにします。 プレースホルダーはインスタンスの <ADT-instance-host-name> ホスト名に、 <table-name> プレースホルダーはツイン プロパティ イベント テーブルの名前に置き換えてください。
let ADTendpoint = "https://<ADT-instance-host-name>";
let ADTquery = ```SELECT SALT_MACHINE.$dtId as tid
FROM DIGITALTWINS FACTORY
JOIN SALT_MACHINE RELATED FACTORY.contains
WHERE FACTORY.$dtId = 'OsloFactory'
AND IS_OF_MODEL(SALT_MACHINE , 'dtmi:assetGen:SaltMachine;1')```;
evaluate azure_digital_twins_query_request(ADTendpoint, ADTquery)
| extend Id = tostring(tid)
| join kind=inner (<table-name>) on Id
| extend val_double = todouble(Value)
| where Key == "OutFlow"
| render timechart with (ycolumns = val_double)
結果には、経時的な流出数の変化が示されます。
接続のトラブルシューティング
Azure Data エクスプローラーにデータが表示されない場合、ヒストライゼーション データ フローが正しく機能しません。 この問題を調査するには、Azure portal で Event Hubs 名前空間を表示します。この名前空間に対するメッセージの送受信フローを示すグラフが表示されます。 これにより、Azure Digital Twins からの受信メッセージのフローと Azure Data エクスプローラーへの送信メッセージの両方を確認して、フローのどの部分が機能していないかを特定できます。