Настройка модулей и подключений IoT Edge

Важно!

Azure SQL Edge больше не поддерживает платформу ARM64.

В части 2 (из 3) этого руководства по прогнозированию примеси железной руды в SQL Azure для пограничных вычислений вы настроите следующие модули IoT Edge:

  • SQL Azure для пограничных вычислений
  • Модуль генератора данных IoT Edge

Указание учетных данных реестра контейнеров

Необходимо указать учетные данные контейнера для образов модуля, на которых размещены образы модулей. Эти учетные данные можно найти в реестре контейнеров, созданном в группе ресурсов. Перейдите к разделу Ключи доступа. Запишите следующие поля:

  • Имя реестра
  • сервер входа;
  • Имя пользователя
  • Пароль

Теперь укажите учетные данные контейнера в модуле IoT Edge.

  1. Перейдите в центр Интернета вещей, созданный в группе ресурсов.

  2. В разделе IoT Edge в разделе Автоматический Управление устройствами выберите Идентификатор устройства. В этом руководстве используется идентификатор IronOrePredictionDevice.

  3. Выберите раздел Выбор модулей.

  4. В разделе Учетные данные реестра контейнеров введите следующие значения:

    Поле Значение
    Имя Имя реестра
    Адрес сервер входа;
    Имя пользователя Имя пользователя
    Пароль Пароль

Создание, отправка и развертывание модуля генератора данных

  1. Клонируйте файлы проекта на компьютер.

  2. Откройте файл IronOre_Silica_Predict.sln в Visual Studio 2019.

  3. Обновите сведения о реестре контейнеров в файле deployment.template.json.

    "registryCredentials": {
         "RegistryName": {
             "username": "",
             "password": "",
             "address": ""
         }
    }
    
  4. Обновите файл modules.json, чтобы указать целевой реестр контейнеров (или репозиторий для модуля).

    "image": {
         "repository":"samplerepo.azurecr.io/ironoresilicapercent",
         "tag":
    }
    
  5. Выполните проект в режиме отладки или выпуска, чтобы убедиться в отсутствии проблем.

  6. Отправьте проект в реестр контейнеров, щелкнув правой кнопкой мыши имя проекта и выбрав Создать и отправить модули IoT Edge.

  7. Разверните модуль генератора данных в качестве модуля IoT Edge на устройстве Edge.

Развертывание модуля SQL Azure для пограничных вычислений

  1. Разверните модуль Azure SQL Edge, выбрав + Добавить, а затем — Модуль Marketplace.

  2. На панели IoT Edge Модуль Marketplace найдите Azure SQL Edge и выберите Azure SQL Разработчик Edge.

  3. Выберите только что добавленный модуль Azure SQL Edge в разделе IoT Edge Модули, чтобы настроить модуль Azure SQL Edge. Дополнительные сведения о параметрах конфигурации см. в статье Развертывание SQL Azure для пограничных вычислений.

  4. Добавьте переменную среды MSSQL_PACKAGE в развертывание модуля SQL Azure для пограничных вычислений и укажите URL-адрес SAS DACPAC-файла базы данных, созданного на шаге 8 в первой части этого учебника.

  5. Выбор обновления

  6. На странице Установка модулей на устройстве выберите Далее: маршруты >.

  7. В области "Маршруты" на странице Настройка модулей на устройстве: укажите маршруты для связи модуля с центром 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")
    
  8. На странице Set modules on device (Установка модулей на устройстве ) выберите Next: Review + create (Далее: проверка и создание). >

  9. На странице Настройка модулей на устройстве выберите Создать.

Создайте и запустите задание потоковой передачи T-SQL в SQL Azure для пограничных вычислений.

  1. Откройте Azure Data Studio.

  2. На вкладке Приветствие запустите новое подключение со следующими сведениями:

    Поле Значение
    Тип подключения Microsoft SQL Server
    Сервер Общедоступный IP-адрес, упомянутый в виртуальной машине, созданной для этой демо-версии
    Имя пользователя sa
    Пароль Надежный пароль, который использовался при создании экземпляра SQL Azure для пограничных вычислений.
    База данных По умолчанию
    Группа серверов По умолчанию
    Имя (необязательно) Укажите необязательное имя
  3. Выберите Подключиться.

  4. На вкладке меню Файл откройте новую записную книжку или используйте сочетание клавиш CTRL+N.

  5. В новом окне запроса выполните приведенный ниже скрипт, чтобы создать задание потоковой передачи T-SQL. Перед выполнением скрипта обязательно измените следующие переменные:

    • @SQL_SA_Password: значение, указанное MSSQL_SA_PASSWORD при развертывании модуля Azure SQL Edge.
    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 Azure для пограничных вычислений. Затем мы создали задание потоковой передачи, чтобы передать данные, созданные модулем создания данных, в SQL.

Дальнейшие действия