チュートリアル:SQL Server データベースを使用したエッジでのデータの格納Tutorial: Store data at the edge with SQL Server databases

Azure IoT Edge を実行している Linux デバイスにデータを格納するための SQL Server モジュールをデプロイします。Deploy a SQL Server module to store data on a Linux device running Azure IoT Edge.

Azure IoT Edge と SQL Server を使用し、エッジでデータを格納してクエリを実行します。Use Azure IoT Edge and SQL Server to store and query data at the edge. Azure IoT Edge には、デバイスがオフラインになった場合にメッセージをキャッシュして、接続が再確立されるとそれらのメッセージを転送するという基本のストレージ機能があります。Azure IoT Edge has basic storage capabilities to cache messages if a device goes offline, and then forward them when the connection is reestablished. しかし、ローカルでデータのクエリを実行する機能など、より高度なストレージ機能が必要になる場合があります。However, you may want more advanced storage capabilities, like being able to query data locally. お使いの IoT Edge デバイスは、IoT Hub への接続を維持する必要なく、ローカルなデータベースを使用してより複雑なコンピューティングを実行できます。Your IoT Edge devices can use local databases to perform more complex computing without having to maintain a connection to IoT Hub.

この記事では、SQL Server データベースを IoT Edge デバイスにデプロイするための手順を説明します。This article provides instructions for deploying a SQL Server database to an IoT Edge device. IoT Edge デバイスで実行される Azure Functions は受信データを構造化してデータベースに送信します。Azure Functions, running on the IoT Edge device, structures the incoming data then sends it to the database. この記事の手順は、MySQL、PostgreSQL などのコンテナーで動作するその他のデータベースにも適用できます。The steps in this article can also be applied to other databases that work in containers, like MySQL or PostgreSQL.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • Visual Studio Code を使用して、Azure 関数を作成するUse Visual Studio Code to create an Azure Function
  • SQL データベースを IoT Edge デバイスに配置するDeploy a SQL database to your IoT Edge device
  • Visual Studio Code を使用してモジュールを作成し、それらを IoT Edge デバイスに配置するUse Visual Studio Code to build modules and deploy them to your IoT Edge device
  • 生成されたデータを表示するView generated data

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

前提条件Prerequisites

このチュートリアルを開始する前に、前のチュートリアルを完了して、Linux コンテナー開発用の開発環境を設定しておく必要があります。Linux のデバイス用の IoT Edge モジュールを開発するBefore beginning this tutorial, you should have gone through the previous tutorial to set up your development environment for Linux container development: Develop IoT Edge modules for Linux devices. このチュートリアルを完了すると、次の前提条件が満たされます。By completing that tutorial, you should have the following prerequisites in place:

このチュートリアルでは、Azure Functions モジュールを使用して SQL Server にデータを送信します。This tutorial uses an Azure Functions module to send data to the SQL Server. Azure Functions を使用して IoT Edge モジュールを開発するには、開発用マシンに次の追加の前提条件をインストールします。To develop an IoT Edge module with Azure Functions, install the following additional prerequisites on your development machine:

関数プロジェクトを作成するCreate a function project

データベースにデータを送信するには、データを正しく構造化してテーブルに格納できるモジュールが必要です。To send data into a database, you need a module that can structure the data properly and then stores it in a table.

新しいプロジェクトを作成するCreate a new project

次の手順では、Visual Studio Code と Azure IoT Tools を使用して、IoT Edge 関数を作成する方法を説明します。The following steps show you how to create an IoT Edge function using Visual Studio Code and the Azure IoT Tools.

  1. Visual Studio Code を開きます。Open Visual Studio Code.

  2. [表示] > [コマンド パレット] を選択して、VS Code コマンド パレットを開きます。Open the VS Code command palette by selecting View > Command palette.

  3. コマンド パレットで、Azure IoT Edge: New IoT Edge solution コマンドを入力して実行します。In the command palette, type and run the command Azure IoT Edge: New IoT Edge solution. コマンド パレットで、次の情報を指定してソリューションを作成します。In the command palette, provide the following information to create your solution:

    フィールドField Value
    フォルダーの選択Select folder VS Code によってソリューション ファイルが作成される、開発マシン上の場所を選択します。Choose the location on your development machine for VS Code to create the solution files.
    Provide a solution name (ソリューション名の指定)Provide a solution name SqlSolution のように、ソリューションのわかりやすい名前を入力するか、既定値をそのまま使用します。Enter a descriptive name for your solution, like SqlSolution, or accept the default.
    Select module template (モジュール テンプレートの選択)Select module template [Azure Functions - C#] を選択します。Choose Azure Functions - C#.
    Provide a module name (モジュール名の指定)Provide a module name モジュールに sqlFunction という名前を付けます。Name your module sqlFunction.
    Provide Docker image repository for the module (モジュールの Docker イメージ リポジトリの指定)Provide Docker image repository for the module イメージ リポジトリには、コンテナー レジストリの名前とコンテナー イメージの名前が含まれます。An image repository includes the name of your container registry and the name of your container image. コンテナー イメージは、前の手順で事前設定されます。Your container image is prepopulated from the last step. localhost:5000 を、Azure コンテナー レジストリのログイン サーバーの値に置き換えます。Replace localhost:5000 with the login server value from your Azure container registry. Azure portal で、コンテナー レジストリの概要ページからログイン サーバーを取得できます。You can retrieve the login server from the Overview page of your container registry in the Azure portal.

    文字列は最終的に、<レジストリ名>.azurecr.io/sqlfunction のようになります。The final string looks like <registry name>.azurecr.io/sqlfunction.

    VS Code ウィンドウによって、ご自身の IoT Edge ソリューション ワークスペースが読み込まれます。The VS Code window loads your IoT Edge solution workspace.

レジストリ資格情報を追加するAdd your registry credentials

コンテナー レジストリの資格情報は、環境ファイルに格納され、IoT Edge ランタイムと共有されます。The environment file stores the credentials for your container registry and shares them with the IoT Edge runtime. ランタイムでご自身のプライベート イメージを IoT Edge デバイスにプルするとき、ランタイムではこれらの資格情報が必要になります。The runtime needs these credentials to pull your private images onto the IoT Edge device.

  1. VS Code エクスプローラーで、.env ファイルを開きます。In the VS Code explorer, open the .env file.
  2. ご自身の Azure コンテナー レジストリからコピーしたユーザー名パスワードの値を使用して、フィールドを更新します。Update the fields with the username and password values that you copied from your Azure container registry.
  3. このファイルを保存します。Save this file.

ターゲット アーキテクチャを選択するSelect your target architecture

現在、Visual Studio Code では、Linux AMD64 および Linux ARM32v7 デバイス用の C モジュールを開発できます。Currently, Visual Studio Code can develop C modules for Linux AMD64 and Linux ARM32v7 devices. ソリューションごとにターゲットとするアーキテクチャを選択する必要があります。これは、アーキテクチャの種類によって、コンテナーのビルド方法と実行方法が異なるためです。You need to select which architecture you're targeting with each solution, because the container is built and run differently for each architecture type. 既定値は Linux AMD64 です。The default is Linux AMD64.

  1. コマンド パレットを開き、次を検索します: 「Azure IoT Edge: Set Default Target Platform for Edge Solution (Azure IoT Edge: Edge ソリューションの既定のターゲット プラットフォームの設定) 」。または、ウィンドウの下部にあるサイド バーで、ショートカット アイコンを選択します。Open the command palette and search for Azure IoT Edge: Set Default Target Platform for Edge Solution, or select the shortcut icon in the side bar at the bottom of the window.

  2. コマンド パレットで、オプションの一覧からターゲット アーキテクチャを選択します。In the command palette, select the target architecture from the list of options. このチュートリアルでは、Ubuntu 仮想マシンを IoT Edge デバイスとして使用するため、既定値の amd64 のままにします。For this tutorial, we're using an Ubuntu virtual machine as the IoT Edge device, so will keep the default amd64.

カスタム コードでモジュールを更新するUpdate the module with custom code

  1. VS Code エクスプローラーで、 [モジュール] > [sqlFunction] > [sqlFunction.cs] の順に開きます。In the VS Code explorer, open modules > sqlFunction > sqlFunction.cs.

  2. ファイルの内容全体を次のコードに置き換えます。Replace the entire contents of the file with the following code:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Client;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Extensions.EdgeHub;
    using Microsoft.Azure.WebJobs.Host;
    using Microsoft.Extensions.Logging;
    using Newtonsoft.Json;
    using Sql = System.Data.SqlClient;
    
    namespace Functions.Samples
    {
        public static class sqlFunction
        {
            [FunctionName("sqlFunction")]
            public static async Task FilterMessageAndSendMessage(
                [EdgeHubTrigger("input1")] Message messageReceived,
                [EdgeHub(OutputName = "output1")] IAsyncCollector<Message> output,
                ILogger logger)
            {
                const int temperatureThreshold = 20;
                byte[] messageBytes = messageReceived.GetBytes();
                var messageString = System.Text.Encoding.UTF8.GetString(messageBytes);
    
                if (!string.IsNullOrEmpty(messageString))
                {
                    logger.LogInformation("Info: Received one non-empty message");
                    // Get the body of the message and deserialize it.
                    var messageBody = JsonConvert.DeserializeObject<MessageBody>(messageString);
    
                    //Store the data in SQL db
                    const string str = "<sql connection string>";
                    using (Sql.SqlConnection conn = new Sql.SqlConnection(str))
                    {
                        conn.Open();
                        var insertMachineTemperature = "INSERT INTO MeasurementsDB.dbo.TemperatureMeasurements VALUES (CONVERT(DATETIME2,'" + messageBody.timeCreated + "', 127), 'machine', " + messageBody.machine.temperature + ");";
                        var insertAmbientTemperature = "INSERT INTO MeasurementsDB.dbo.TemperatureMeasurements VALUES (CONVERT(DATETIME2,'" + messageBody.timeCreated + "', 127), 'ambient', " + messageBody.ambient.temperature + ");"; 
                        using (Sql.SqlCommand cmd = new Sql.SqlCommand(insertMachineTemperature + "\n" + insertAmbientTemperature, conn))
                        {
                            //Execute the command and log the # rows affected.
                            var rows = await cmd.ExecuteNonQueryAsync();
                            logger.LogInformation($"{rows} rows were updated");
                        }
                    }
    
                    if (messageBody != null && messageBody.machine.temperature > temperatureThreshold)
                    {
                        // Send the message to the output as the temperature value is greater than the threashold.
                        using (var filteredMessage = new Message(messageBytes))
                        {
                             // Copy the properties of the original message into the new Message object.
                             foreach (KeyValuePair<string, string> prop in messageReceived.Properties)
                             {filteredMessage.Properties.Add(prop.Key, prop.Value);}
                             // Add a new property to the message to indicate it is an alert.
                             filteredMessage.Properties.Add("MessageType", "Alert");
                             // Send the message.       
                             await output.AddAsync(filteredMessage);
                             logger.LogInformation("Info: Received and transferred a message with temperature above the threshold");
                        }
                    }
                }
            }
        }
        //Define the expected schema for the body of incoming messages.
        class MessageBody
        {
            public Machine machine {get; set;}
            public Ambient ambient {get; set;}
            public string timeCreated {get; set;}
        }
        class Machine
        {
            public double temperature {get; set;}
            public double pressure {get; set;}         
        }
        class Ambient
        {
            public double temperature {get; set;}
            public int humidity {get; set;}         
        }
    }
    
  3. 行 35 で、文字列 <sql connection string> を次の文字列に置き換えます。In line 35, replace the string <sql connection string> with the following string. Data Source プロパティは SQL Server コンテナーを参照します。これはまだ存在しませんが、次のセクションで SQL という名前で作成します。The Data Source property references the SQL Server container, which doesn't exist yet but you will create it with the name SQL in the next section.

    Data Source=tcp:sql,1433;Initial Catalog=MeasurementsDB;User Id=SA;Password=Strong!Passw0rd;TrustServerCertificate=False;Connection Timeout=30;
    
  4. sqlFunction.cs ファイルを保存します。Save the sqlFunction.cs file.

  5. sqlFunction.csproj ファイルを開きます。Open the sqlFunction.csproj file.

  6. パッケージ参照のグループを見つけ、SqlClient をインクルードするための新しいものを追加します。Find the group of package references, and add a new one to include SqlClient.

    <PackageReference Include="System.Data.SqlClient" Version="4.5.1"/>
    
  7. sqlFunction.csproj ファイルを保存します。Save the sqlFunction.csproj file.

SQL Server コンテナーの追加Add the SQL Server container

配置マニフェストでは、IoT Edge ランタイムによって IoT Edge デバイスにインストールされるモジュールを宣言します。A Deployment manifest declares which modules the IoT Edge runtime will install on your IoT Edge device. 前のセクションではカスタム関数モジュールを作成するコードを追加しましたが、SQL Server モジュールは既に構築済みであり、Azure Marketplace で入手できます。You provided the code to make a customized Function module in the previous section, but the SQL Server module is already built and available in the Azure Marketplace. IoT Edge ランタイムがそれを含み、デバイス上で構成するよう指定する必要があります。You just need to tell the IoT Edge runtime to include it, then configure it on your device.

  1. Visual Studio Code で、 [表示] > [コマンド パレット] を選択してコマンド パレットを開きます。In Visual Studio Code, open the command palette by selecting View > Command palette.

  2. コマンド パレットで、Azure IoT Edge: Add IoT Edge module コマンドを入力して実行します。In the command palette, type and run the command Azure IoT Edge: Add IoT Edge module. コマンド パレットで、次の情報を入力して新しいモジュールを追加します。In the command palette, provide the following information to add a new module:

    フィールドField Value
    Select deployment template file (配置テンプレート ファイルの選択)Select deployment template file コマンド パレットで、現在のソリューション フォルダー内の deployment.template.json ファイルが強調表示されます。The command palette highlights the deployment.template.json file in your current solution folder. そのファイルを選択します。Select that file.
    Select module template (モジュール テンプレートの選択)Select module template [Module from Azure Marketplace](Azure Marketplace のモジュール) を選択します。Select Module from Azure Marketplace.
  3. Azure IoT Edge モジュール マーケットプレースで、SQL Server モジュールを検索して選択します。In the Azure IoT Edge module marketplace, search for and select SQL Server Module.

  4. モジュール名を sql (すべて小文字) に変更します。Change the module name to sql, all lowercase. この名前は、sqlFunction.cs ファイル内の接続文字列で宣言されているコンテナー名と一致します。This name matches the container name declared in the connection string in the sqlFunction.cs file.

  5. [インポート] を選択して、モジュールを自分のソリューションに追加します。Select Import to add the module to your solution.

  6. ソリューション フォルダー内の deployment.template.json ファイルを開きます。In your solution folder, open the deployment.template.json file.

  7. modules セクションを探します。Find the modules section. 3 つのモジュールが見つかります。You should see three modules. モジュール SimulatedTemperatureSensor は、既定で新しいソリューションに含まれ、他のモジュールで使用するテスト データを提供します。The module SimulatedTemperatureSensor is included by default in new solutions, and provides test data to use with your other modules. モジュール sqlFunction は、最初に作成して新しいコードで更新したモジュールです。The module sqlFunction is the module that you initially created and updated with new code. 最後のモジュール sql は、Azure Marketplace からインポートしたモジュールです。Finally, the module sql was imported from the Azure Marketplace.

    ヒント

    SQL Server モジュールでは、配置マニフェストの環境変数に既定のパスワードが付いています。The SQL Server module comes with a default password set in the environment variables of the deployment manifest. 運用環境で SQL Server コンテナーを作成するときに、既定のシステム管理者パスワードを変更する必要があります。Any time that you create a SQL Server container in a production environment, you should change the default system administrator password.

  8. deployment.template.json ファイルを閉じます。Close the deployment.template.json file.

IoT Edge ソリューションのビルドBuild your IoT Edge solution

これまでのセクションでは、1 つのモジュールと共にソリューションを作成して、別のモジュールを配置マニフェスト テンプレートに追加しました。In the previous sections, you created a solution with one module, and then added another to the deployment manifest template. SQL Server モジュールは Microsoft によって公式にホストされていますが、自分でコードを Functions モジュールにコンテナー化する必要があります。The SQL Server module is hosted publicly by Microsoft, but you need to containerize the code in the Functions module. このセクションでは、ソリューションを構築し、sqlFunction モジュールのコンテナー イメージを作成して、そのイメージをコンテナー レジストリにプッシュします。In this section, you build the solution, create container images for the sqlFunction module, and push the image to your container registry.

  1. Visual Studio Code で、 [表示] > [ターミナル] の順に選択して、統合ターミナルを開きます。In Visual Studio Code, open the integrated terminal by selecting View > Terminal.

  2. Visual Studio Code でコンテナー レジストリにサインインします。これで、イメージをレジストリにプッシュできます。Sign in to your container registry in Visual Studio Code so that you can push your images to your registry. .env ファイルに追加したのと同じ Azure Container Registry (ACR) 資格情報を使用します。Use the same Azure Container Registry (ACR) credentials that you added to the .env file. 統合ターミナルで次のコマンドを入力します。Enter the following command in the integrated terminal:

    docker login -u <ACR username> -p <ACR password> <ACR login server>
    

    --password-stdin パラメーターの使用を推奨するセキュリティ警告が表示される場合があります。You might see a security warning recommending the use of the --password-stdin parameter. このパラメーターの使用について、ここでは説明していませんが、このベスト プラクティスに従うことをお勧めします。While its use is outside the scope of this article, we recommend following this best practice. 詳細については、docker login コマンドのリファレンスを参照してください。For more information, see the docker login command reference.

  3. VS Code エクスプローラーで、deployment.template.json ファイルを右クリックし、 [Build and Push IoT Edge solution](IoT Edge ソリューションのビルドとプッシュ) を選択します。In the VS Code explorer, right-click the deployment.template.json file and select Build and Push IoT Edge solution.

ソリューションのビルドを指示すると、最初に Visual Studio Code によって配置テンプレートの情報が読み取られて、config という名前の新しいフォルダーに deployment.json ファイルが生成されます。次に、docker builddocker push の 2 つのコマンドが統合ターミナルで実行されます。When you tell Visual Studio Code to build your solution, it first takes the information in the deployment template and generates a deployment.json file in a new folder named config. Then, it runs two commands in the integrated terminal: docker build and docker push. これらの 2 つのコマンドによって、コードがビルドされ、モジュールがコンテナー化されたうえで、ソリューションを初期化したときに指定したコンテナー レジストリにコードがプッシュされます。These two commands build your code, containerize the module, and then push the code to the container registry that you specified when you initialized the solution.

sqlFunction モジュールがコンテナー レジストリに正常にプッシュされたことを確認できます。You can verify that the sqlFunction module was successfully pushed to your container registry. Azure ポータルで、自分のコンテナー レジストリに移動します。In the Azure portal, navigate to your container registry. [リポジトリ] を選択し、sqlFunction を検索します。Select repositories and search for sqlFunction. 他の 2 つのモジュール SimulatedTemperatureSensor と sql は、既に Microsoft レジストリ内でそれらのリポジトリがポイントされているため、コンテナーのレジストリにプッシュされません。The other two modules, SimulatedTemperatureSensor and sql, won't be pushed to your container registry because you're already pointing to their repositories in the Microsoft registries.

デバイスへのソリューションの配置Deploy the solution to a device

IoT ハブを通じてデバイスにモジュールを設定できますが、Visual Studio Code を通じて IoT ハブとデバイスにアクセスすることもできます。You can set modules on a device through the IoT Hub, but you can also access your IoT Hub and devices through Visual Studio Code. このセクションでは、IoT ハブへのアクセスを設定してから、VS Code を使用してソリューションを IoT Edge デバイスに配置します。In this section, you set up access to your IoT Hub then use VS Code to deploy your solution to your IoT Edge device.

  1. VS Code エクスプローラーで、 [Azure IoT Hub Devices](Azure IoT Hub デバイス) セクションを展開します。In the VS Code explorer, expand the Azure IoT Hub Devices section.

  2. 配置でターゲットにするデバイスを右クリックし、 [Create deployment for single device](単一デバイスのデプロイの作成) を選択します。Right-click on the device that you want to target with your deployment and select Create deployment for single device.

  3. エクスプローラーで、ソリューション内の config フォルダーに移動して、deployment.amd64 を選択します。In the file explorer, navigate to the config folder inside your solution and choose deployment.amd64. [Select Edge Deployment Manifest](Edge 配置マニフェストの選択) をクリックします。Click Select Edge deployment manifest.

    deployment.template.json ファイルを配置マニフェストとして使用しないでください。Do not use the deployment.template.json file as a deployment manifest.

デプロイが成功すると、確認メッセージが VS Code の出力に表示されます。If the deployment is successful, a confirmation message is printed in the VS Code output.

VS Code の Azure IoT Hub Devices セクションのデバイスの状態を更新します。Refresh the status of your device in the Azure IoT Hub Devices section of VS Code. 新しいモジュールが一覧表示されます。コンテナーがインストールされ、開始されてから数分間実行されると、レポートが開始されます。The new modules are listed and will start to report as running over the next few minutes as the containers are installed and started. デバイス上ですべてのモジュールが実行されているのを確認することもできます。You can also check to see that all the modules are up and running on your device. IoT Edge デバイスで、次のコマンドを実行してモジュールの状態を表示します。On your IoT Edge device, run the following command to see the status of the modules.

iotedge list

SQL データベースの作成Create the SQL database

配置マニフェストをデバイスに適用すると、3 つのモジュールが実行されます。When you apply the deployment manifest to your device, you get three modules running. SimulatedTemperatureSensor モジュールによって、シミュレートされた環境データが生成されます。The SimulatedTemperatureSensor module generates simulated environment data. sqlFunction モジュールによってデータが取得され、データベース用にその書式が設定されます。The sqlFunction module takes the data and formats it for a database. このセクションでは、温度データを格納するように SQL データベースを設定する手順を説明します。This section guides you through setting up the SQL database to store the temperature data.

IoT Edge デバイスで次のコマンドを実行します。Run the following commands on your IoT Edge device. これらのコマンドによって、デバイス上で実行されている sql モジュールに接続され、送信された温度データを保持するデータベースとテーブルが作成されます。These commands connect to the sql module running on your device and create a database and table to hold the temperature data being sent to it.

  1. IoT Edge デバイス上のコマンドライン ツールで、データベースに接続します。In a command-line tool on your IoT Edge device, connect to your database.

    sudo docker exec -it sql bash
    
  2. SQL コマンド ツールを開きます。Open the SQL command tool.

    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'Strong!Passw0rd'
    
  3. データベースを作成します。Create your database:

    CREATE DATABASE MeasurementsDB
    ON
    (NAME = MeasurementsDB, FILENAME = '/var/opt/mssql/measurementsdb.mdf')
    GO
    
  4. テーブルを定義します。Define your table.

    CREATE TABLE MeasurementsDB.dbo.TemperatureMeasurements (measurementTime DATETIME2, location NVARCHAR(50), temperature FLOAT)
    GO
    

SQL Server が複数の IoT Edge デバイスにデプロイされるよう自動的に設定するように SQL Server ドッカー ファイルをカスタマイズします。You can customize your SQL Server docker file to automatically set up your SQL Server to be deployed on multiple IoT Edge devices. 詳しくは、Microsoft SQL Server コンテナーのデモ プロジェクトに関する記事を参照してください。For more information, see the Microsoft SQL Server container demo project.

ローカル データの表示View the local data

テーブルが作成されると、IoT Edge デバイス上にあるローカル SQL Server 2017 データベースへのデータの格納が、sqlFunction モジュールによって開始されます。Once your table is created, the sqlFunction module starts storing data in a local SQL Server 2017 database on your IoT Edge device.

SQL コマンド ツール内から次のコマンドを実行して、書式設定されたテーブル データを表示します。From inside the SQL command tool, run the following command to view your formatted table data:

SELECT * FROM MeasurementsDB.dbo.TemperatureMeasurements
GO

ローカル データベースのコンテンツを表示する

リソースのクリーンアップClean up resources

次の推奨記事に進む場合は、作成したリソースおよび構成を維持して、再利用することができます。If you plan to continue to the next recommended article, you can keep the resources and configurations that you created and reuse them. また、同じ IoT Edge デバイスをテスト デバイスとして使用し続けることもできます。You can also keep using the same IoT Edge device as a test device.

それ以外の場合は、課金されないようにするために、ローカル構成と、この記事で作成した Azure リソースを削除してもかまいません。Otherwise, you can delete the local configurations and the Azure resources that you created in this article to avoid charges.

Azure リソースを削除するDelete Azure resources

Azure のリソースとリソース グループは、削除すると元に戻すことができません。Deleting Azure resources and resource groups is irreversible. 間違ったリソース グループやリソースをうっかり削除しないようにしてください。Make sure that you don't accidentally delete the wrong resource group or resources. IoT Hub を、保持したいリソースが含まれている既存のリソース グループ内に作成した場合は、リソース グループを削除するのではなく、IoT Hub リソースだけを削除してください。If you created the IoT hub inside an existing resource group that has resources that you want to keep, delete only the IoT hub resource itself, instead of deleting the resource group.

リソースを削除するには、次の手順に従います。To delete the resources:

  1. Azure portal にサインインし、 [リソース グループ] を選択します。Sign in to the Azure portal and select Resource groups.

  2. IoT Edge のテスト リソースを含んだリソース グループの名前を選択します。Select the name of the resource group that contains your IoT Edge test resources.

  3. リソース グループに含まれるリソースの一覧を確認します。Review the list of resources contained in your resource group. それらすべてを削除する場合は、 [リソース グループの削除] を選択します。If you want to delete all of them, you can select Delete resource group. 一部だけを削除する場合は、削除する各リソースをクリックして個別に削除してください。If you want to delete only some of them, you can click into each resource to delete them individually.

次の手順Next steps

このチュートリアルでは、IoT Edge デバイスで生成された生データをフィルター処理するコードを含む、Azure Functions モジュールを作成しました。In this tutorial, you created an Azure Functions module that contains code to filter raw data generated by your IoT Edge device. 独自のモジュールをビルドする準備ができたら、Visual Studio Code 用の Azure IoT Edge で Azure 関数を開発する方法の詳細をご覧ください。When you're ready to build your own modules, you can learn more about how to Develop Azure Functions with Azure IoT Edge for Visual Studio Code.

エッジで別の格納方法を試す場合は、IoT Edge 上の Azure Blob Storage を使用する方法に関する記事を参照してください。If you want to try another storage method at the edge, read about how to use Azure Blob Storage on IoT Edge.