次の方法で共有


IoT Edge のモジュールと接続を設定する

重要

Azure SQL Edge では、ARM64 プラットフォームがサポートされなくなりました。

Azure SQL Edge で鉄鉱石の不純物を予測する、この 3 部構成チュートリアルの第 2 部では、IoT Edge の次のモジュールを設定します。

  • Azure SQL Edge
  • データ ジェネレーター IoT Edge モジュール

コンテナー レジストリの資格情報の指定

モジュール イメージをホストするコンテナー レジストリに対する資格情報を指定する必要があります。 これらの資格情報は、リソース グループに作成されているコンテナー レジストリ内にあります。 [アクセス キー] セクションに移動します。 次のフィールドをメモします。

  • レジストリ名
  • ログイン サーバー
  • ユーザー名
  • Password

ここで、IoT Edge モジュールにコンテナーの資格情報を指定します。

  1. リソース グループに作成された IoT ハブに移動します。

  2. [IoT Edge] セクションの [デバイスの自動管理][デバイス ID] を選択します。 このチュートリアルでは、ID は IronOrePredictionDevice です。

  3. [モジュールの設定] セクションを選択します。

  4. [コンテナー レジストリの資格情報] で、次の値を入力します。

    フィールド
    名前 レジストリ名
    Address ログイン サーバー
    [ユーザー名] ユーザー名
    Password Password

データ ジェネレーター モジュールのビルド、プッシュ、およびデプロイ

  1. プロジェクト ファイルをお使いのマシンにクローンします。

  2. Visual Studio 2019 を使用して、ファイル IronOre_Silica_Predict.sln を開きます

  3. deployment.template.json 内のコンテナー レジストリの詳細を更新します

    "registryCredentials": {
         "RegistryName": {
             "username": "",
             "password": "",
             "address": ""
         }
    }
    
  4. modules.json ファイルを更新して、ターゲット コンテナー レジストリ (またはモジュールのリポジトリ) を指定します

    "image": {
         "repository":"samplerepo.azurecr.io/ironoresilicapercent",
         "tag":
    }
    
  5. デバッグ モードまたはリリース モードでプロジェクトを実行し、プロジェクトが問題なく実行できることを確認します

  6. プロジェクト名を右クリックし、 [Build and Push IoT Edge Modules]\(IoT Edge モジュールをビルドしてプッシュする\) を選択して、プロジェクトをコンテナー レジストリにプッシュします。

  7. データ ジェネレーター モジュールを IoT Edge モジュールとしてエッジ デバイスにデプロイします。

Azure SQL Edge モジュールのデプロイ

  1. [+ 追加][IoT Edge モジュール] の順に選択して、Azure SQL Edge モジュールをデプロイします。

  2. [IoT Edge モジュールの追加] ページで構成オプションを設定して Azure SQL Edge モジュールをデプロイします。 構成オプションの詳細については、「Azure SQL Edge のデプロイ」を参照してください。

  3. Azure SQL Edge モジュールのデプロイに MSSQL_PACKAGE 環境変数を追加して、このチュートリアルのパート 1 の手順 8 で作成したデータベース DACPAC ファイルの SAS URL を指定します。

  4. 更新プログラムを選択する

  5. [デバイスのモジュールを設定してください] ページで [次へ: ルート] > を選択します。

  6. [デバイスのモジュールを設定してください] ページのルート ペインで、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")
    
  7. [デバイスのモジュールを設定してください] ページで、[次へ: 確認および作成] > を選択します

  8. [デバイスのモジュールを設定してください] ページで [作成] を選択します

Azure SQL Edge で T-SQL ストリーミング ジョブを作成して開始します。

  1. Azure Data Studio を開きます。

  2. [ようこそ] タブで、次の詳細情報を使用して新しい接続を開始します。

    フィールド
    接続の種類 Microsoft SQL Server
    サーバー このデモのために作成された VM で示されているパブリック IP アドレス
    ユーザー名 sa
    Password Azure SQL Edge インスタンスの作成時に使用された強力なパスワード
    データベース Default
    [サーバー グループ] Default
    Name (名前) (省略可能) 必要に応じて名前を付けます。
  3. [接続] を選択します。

  4. [ファイル] メニュー タブで新しいノートブックを開くか、キーボード ショートカット Ctrl + N を使用します。

  5. [新しいクエリ] ウィンドウで、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';
    
  6. 次のクエリを使用して、データ生成モジュールからデータベースにデータがストリーム配信されていることを確認します。

    SELECT TOP 10 *
    FROM dbo.IronOreMeasurements
    ORDER BY timestamp DESC;
    

このチュートリアルでは、データ ジェネレーター モジュールと SQL Edge モジュールをデプロイしました。 その後、データ生成モジュールによって生成されたデータを SQL にストリーム配信するストリーミング ジョブを作成しました。

次のステップ