IoT Edge のモジュールと接続を設定する
重要
Azure SQL Edge の提供は、2025 年 9 月 30 日に終了する予定です。 詳細な情報と移行オプションについては、提供終了に関する通知を参照してください。
Note
Azure SQL Edge では、ARM64 プラットフォームがサポートされなくなりました。
Azure SQL Edge で鉄鉱石の不純物を予測する、この 3 部構成チュートリアルの第 2 部では、IoT Edge の次のモジュールを設定します。
- Azure SQL Edge
- データ ジェネレーター IoT Edge モジュール
コンテナー レジストリの資格情報の指定
モジュール イメージをホストするコンテナー レジストリに対する資格情報を指定する必要があります。 これらの資格情報は、リソース グループに作成されているコンテナー レジストリ内にあります。 [アクセス キー] セクションに移動します。 次のフィールドをメモします。
- レジストリ名
- ログイン サーバー
- ユーザー名
- Password
ここで、IoT Edge モジュールにコンテナーの資格情報を指定します。
リソース グループに作成された IoT ハブに移動します。
[IoT Edge] セクションの [デバイスの自動管理] で [デバイス ID] を選択します。 このチュートリアルでは、ID は
IronOrePredictionDevice
です。[モジュールの設定] セクションを選択します。
[コンテナー レジストリの資格情報] で、次の値を入力します。
フィールド 値 名前 レジストリ名 Address ログイン サーバー [ユーザー名] ユーザー名 Password Password
データ ジェネレーター モジュールのビルド、プッシュ、およびデプロイ
プロジェクト ファイルをお使いのマシンにクローンします。
Visual Studio 2019 を使用して、ファイル IronOre_Silica_Predict.sln を開きます
deployment.template.json 内のコンテナー レジストリの詳細を更新します
"registryCredentials": { "RegistryName": { "username": "", "password": "", "address": "" } }
modules.json ファイルを更新して、ターゲット コンテナー レジストリ (またはモジュールのリポジトリ) を指定します
"image": { "repository":"samplerepo.azurecr.io/ironoresilicapercent", "tag": }
デバッグ モードまたはリリース モードでプロジェクトを実行し、プロジェクトが問題なく実行できることを確認します
プロジェクト名を右クリックし、 [Build and Push IoT Edge Modules]\(IoT Edge モジュールをビルドしてプッシュする\) を選択して、プロジェクトをコンテナー レジストリにプッシュします。
データ ジェネレーター モジュールを IoT Edge モジュールとしてエッジ デバイスにデプロイします。
Azure SQL Edge モジュールのデプロイ
[+ 追加]、[IoT Edge モジュール] の順に選択して、Azure SQL Edge モジュールをデプロイします。
[IoT Edge モジュールの追加] ページで構成オプションを設定して Azure SQL Edge モジュールをデプロイします。 構成オプションの詳細については、「Azure SQL Edge のデプロイ」を参照してください。
Azure SQL Edge モジュールのデプロイに
MSSQL_PACKAGE
環境変数を追加して、このチュートリアルのパート 1 の手順 8 で作成したデータベース DACPAC ファイルの SAS URL を指定します。更新プログラムを選択する
[デバイスのモジュールを設定してください] ページで [次へ: ルート] > を選択します。
[デバイスのモジュールを設定してください] ページのルート ペインで、IoT Edge ハブ通信へのモジュールのルートを次のように指定します。 以下のルート定義でモジュール名を忘れずに更新してください。
FROM /messages/modules/<your_data_generator_module>/outputs/IronOreMeasures INTO BrokeredEndpoint("/modules/<your_azure_sql_edge_module>/inputs/IronOreMeasures")
次に例を示します。
FROM /messages/modules/ASEDataGenerator/outputs/IronOreMeasures INTO BrokeredEndpoint("/modules/AzureSQLEdge/inputs/IronOreMeasures")
[デバイスのモジュールを設定してください] ページで、[次へ: 確認および作成] > を選択します
[デバイスのモジュールを設定してください] ページで [作成] を選択します
Azure SQL Edge で T-SQL ストリーミング ジョブを作成して開始します。
Azure Data Studio を開きます。
[ようこそ] タブで、次の詳細情報を使用して新しい接続を開始します。
フィールド 値 接続の種類 Microsoft SQL Server サーバー このデモのために作成された VM で示されているパブリック IP アドレス ユーザー名 sa Password Azure SQL Edge インスタンスの作成時に使用された強力なパスワード データベース Default [サーバー グループ] Default Name (名前) (省略可能) 必要に応じて名前を付けます。 [接続] を選択します。
[ファイル] メニュー タブで新しいノートブックを開くか、キーボード ショートカット Ctrl + N を使用します。
[新しいクエリ] ウィンドウで、T-SQL ストリーミング ジョブを作成する次のスクリプトを実行します。 スクリプトを実行する前に、次の変数を変更してください。
@SQL_SA_Password
: Azure SQL Edge モジュールのデプロイ時に指定したMSSQL_SA_PASSWORD
値。
USE IronOreSilicaPrediction; GO DECLARE @SQL_SA_Password VARCHAR(200) = '<SQL_SA_Password>'; DECLARE @query VARCHAR(MAX); /* Create objects required for streaming */ CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'MyStr0ng3stP@ssw0rd'; IF NOT EXISTS ( SELECT name FROM sys.external_file_formats WHERE name = 'JSONFormat' ) BEGIN CREATE EXTERNAL FILE FORMAT [JSONFormat] WITH (FORMAT_TYPE = JSON) END IF NOT EXISTS ( SELECT name FROM sys.external_data_sources WHERE name = 'EdgeHub' ) BEGIN CREATE EXTERNAL DATA SOURCE [EdgeHub] WITH (LOCATION = N'edgehub://') END IF NOT EXISTS ( SELECT name FROM sys.external_streams WHERE name = 'IronOreInput' ) BEGIN CREATE EXTERNAL STREAM IronOreInput WITH ( DATA_SOURCE = EdgeHub, FILE_FORMAT = JSONFormat, LOCATION = N'IronOreMeasures' ) END IF NOT EXISTS ( SELECT name FROM sys.database_scoped_credentials WHERE name = 'SQLCredential' ) BEGIN SET @query = 'CREATE DATABASE SCOPED CREDENTIAL SQLCredential WITH IDENTITY = ''sa'', SECRET = ''' + @SQL_SA_Password + '''' EXECUTE (@query) END IF NOT EXISTS ( SELECT name FROM sys.external_data_sources WHERE name = 'LocalSQLOutput' ) BEGIN CREATE EXTERNAL DATA SOURCE LocalSQLOutput WITH ( LOCATION = 'sqlserver://tcp:.,1433', CREDENTIAL = SQLCredential ) END IF NOT EXISTS ( SELECT name FROM sys.external_streams WHERE name = 'IronOreOutput' ) BEGIN CREATE EXTERNAL STREAM IronOreOutput WITH ( DATA_SOURCE = LocalSQLOutput, LOCATION = N'IronOreSilicaPrediction.dbo.IronOreMeasurements' ) END EXEC sys.sp_create_streaming_job @name = N'IronOreData', @statement = N'Select * INTO IronOreOutput from IronOreInput'; EXEC sys.sp_start_streaming_job @name = N'IronOreData';
次のクエリを使用して、データ生成モジュールからデータベースにデータがストリーム配信されていることを確認します。
SELECT TOP 10 * FROM dbo.IronOreMeasurements ORDER BY timestamp DESC;
このチュートリアルでは、データ ジェネレーター モジュールと SQL Edge モジュールをデプロイしました。 その後、データ生成モジュールによって生成されたデータを SQL にストリーム配信するストリーミング ジョブを作成しました。