Azure Resource Manager テンプレートを使用した IoT ハブの作成 (.NET)Create an IoT hub using Azure Resource Manager template (.NET)

Azure リソース マネージャーを使って、Azure IoT ハブをプログラムを使用して作成、管理できます。You can use Azure Resource Manager to create and manage Azure IoT hubs programmatically. このチュートリアルでは、Azure Resource Manager テンプレートを使用して C# プログラムから IoT Hub を作成する方法を説明します。This tutorial shows you how to use an Azure Resource Manager template to create an IoT hub from a C# program.


Azure には、リソースの作成と操作に関して、2 種類のデプロイ モデルがあります。Azure Resource Manager とクラシックですAzure has two different deployment models for creating and working with resources: Azure Resource Manager and classic. この記事では、Azure Resource Manager デプロイ モデルの使用について説明します。This article covers using the Azure Resource Manager deployment model.


この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

このチュートリアルを完了するには、以下が必要です。To complete this tutorial, you need the following:

  • 見ることができます。Visual Studio.
  • アクティブな Azure アカウントアカウントがない場合、Azure 試用版にサインアップして、最大 10 件の無料 Mobile Apps を入手できます。An active Azure account.
    アカウントがない場合は、 無料アカウント を数分で作成することができます。If you don't have an account, you can create a free account in just a couple of minutes.
  • Azure Resource Manager テンプレート ファイルを格納できる Azure Storage アカウントAn Azure Storage account where you can store your Azure Resource Manager template files.
  • Azure PowerShell 1.0 以降。Azure PowerShell 1.0 or later.

Azure Resource Manager の要求を認証するための準備Prepare to authenticate Azure Resource Manager requests

Azure Resource Manager と Azure Active Directory (AD) を使用して、リソース上で実行するすべての操作を認証する必要があります。You must authenticate all the operations that you perform on resources using the Azure Resource Manager with Azure Active Directory (AD). これを構成するうえで、PowerShell または Azure CLI を使用するのが最も簡単な方法です。The easiest way to configure this is to use PowerShell or Azure CLI.

先に進む前に Azure PowerShell コマンドレットをインストールしてください。Install the Azure PowerShell cmdlets before you continue.

次のステップでは、PowerShell を使用して AD アプリケーション用のパスワード認証を設定する方法を説明します。The following steps show how to set up password authentication for an AD application using PowerShell. これらのコマンドは標準的な PowerShell セッションで実行できます。You can run these commands in a standard PowerShell session.

  1. 次のコマンドを使用して Azure サブスクリプションにサインインします。Sign in to your Azure subscription using the following command:

  2. 複数の Azure サブスクリプションがある場合は、Azure にサインインすると、資格情報に関連付けられているすべての Azure サブスクリプションへのアクセスが許可されます。If you have multiple Azure subscriptions, signing in to Azure grants you access to all the Azure subscriptions associated with your credentials. 次のコマンドで、使用できる Azure サブスクリプションの一覧を表示します。Use the following command to list the Azure subscriptions available for you to use:


    次のコマンドで、使用するサブスクリプションを選択して、IoT Hub を管理するためのコマンドを実行します。Use the following command to select subscription that you want to use to run the commands to manage your IoT hub. 前のコマンドの出力から、サブスクリプション名または ID のいずれかを使用できます。You can use either the subscription name or ID from the output of the previous command:

    Select-AzSubscription `
        -SubscriptionName "{your subscription name}"
  3. TenantIdSubscriptionId を書き留めておきます。Make a note of your TenantId and SubscriptionId. この情報は後で必要になります。You need them later.

  4. 次のコマンドを使用して新しい Azure Active Directory アプリケーションを作成します。プレース ホルダーを以下のとおりに置き換えます。Create a new Azure Active Directory application using the following command, replacing the place holders:

    • {Display name}: MySampleApp など、アプリケーションの表示名。{Display name}: a display name for your application such as MySampleApp

    • {Home page URL}: http://mysampleapp/home など、お使いのアプリのホーム ページの URL。{Home page URL}: the URL of the home page of your app such as http://mysampleapp/home. この URL は実際のアプリケーションを示している必要はありません。This URL does not need to point to a real application.

    • {Application identifier}: http://mysampleapp などの一意の識別子。{Application identifier}: A unique identifier such as http://mysampleapp. この URL は実際のアプリケーションを示している必要はありません。This URL does not need to point to a real application.

    • {Password}: 自分のアプリで認証に使用するパスワード。{Password}: A password that you use to authenticate with your app.

      $SecurePassword=ConvertTo-SecureString {password} –asplaintext –force
      New-AzADApplication -DisplayName {Display name} -HomePage {Home page URL} -IdentifierUris {Application identifier} -Password $SecurePassword
  5. 作成したアプリケーションの ApplicationId を書き留めておきます。Make a note of the ApplicationId of the application you created. この情報は後で必要になります。You need this later.

  6. 次のコマンドを使用して新しいサービス プリンシパルを作成します。 {MyApplicationId} を前の手順で書き留めた ApplicationId と置き換えます。Create a new service principal using the following command, replacing {MyApplicationId} with the ApplicationId from the previous step:

    New-AzADServicePrincipal -ApplicationId {MyApplicationId}
  7. 次のコマンドを使用してロール割り当てを設定します。 {MyApplicationId} を自分の ApplicationId と置き換えます。Set up a role assignment using the following command, replacing {MyApplicationId} with your ApplicationId.

    New-AzRoleAssignment -RoleDefinitionName Owner -ServicePrincipalName {MyApplicationId}

これで、カスタム C# アプリケーションから認証できるようにする Azure AD アプリケーションの作成が完了しました。You have now finished creating the Azure AD application that enables you to authenticate from your custom C# application. このチュートリアルでは後で次の値が必要になります。You need the following values later in this tutorial:

  • TenantIdTenantId
  • SubscriptionIdSubscriptionId
  • ApplicationIdApplicationId
  • パスワードPassword

Visual Studio プロジェクトの準備Prepare your Visual Studio project

  1. Visual Studio で、 [Console App (.NET Framework)] プロジェクト テンプレートを使用し、Visual C# Windows クラシック デスクトップ プロジェクトを作成します。In Visual Studio, create a Visual C# Windows Classic Desktop project using the Console App (.NET Framework) project template. プロジェクトに CreateIoTHubという名前を付けます。Name the project CreateIoTHub.

  2. ソリューション エクスプローラーで、プロジェクトを右クリックし、 [NuGet パッケージの管理] をクリックします。In Solution Explorer, right-click on your project and then click Manage NuGet Packages.

  3. NuGet パッケージ マネージャーで [プレリリースを含める] をオンにし、 [参照] ページで Microsoft.Azure.Management.ResourceManager を検索します。In NuGet Package Manager, check Include prerelease, and on the Browse page search for Microsoft.Azure.Management.ResourceManager. パッケージを選択して [インストール] をクリックし、 [変更の確認] で、 [OK][同意する] の順にクリックしてライセンス条項に同意します。Select the package, click Install, in Review Changes click OK, then click I Accept to accept the licenses.

  4. NuGet パッケージ マネージャーで、Microsoft.IdentityModel.Clients.ActiveDirectory を検索します。In NuGet Package Manager, search for Microsoft.IdentityModel.Clients.ActiveDirectory. [インストール] をクリックし、 [変更の確認] で、 [OK][同意する] の順にクリックしてライセンス条項に同意します。Click Install, in Review Changes click OK, then click I Accept to accept the license.

  5. Program.cs で、既存の using ステートメントを以下のコードに置き換えます。In Program.cs, replace the existing using statements with the following code:

    using System;
    using Microsoft.Azure.Management.ResourceManager;
    using Microsoft.Azure.Management.ResourceManager.Models;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using Microsoft.Rest;
  6. Program.cs で、次の静的変数を追加して、プレースホルダーの値を置き換えます。In Program.cs, add the following static variables replacing the placeholder values. このチュートリアルの前の手順で ApplicationIdSubscriptionIdTenantId、およびパスワードを書き留めています。You made a note of ApplicationId, SubscriptionId, TenantId, and Password earlier in this tutorial. Azure Storage アカウント名は、Azure Resource Manager テンプレート ファイルの保存先となる Azure Storage アカウントの名前です。Your Azure Storage account name is the name of the Azure Storage account where you store your Azure Resource Manager template files. リソース グループ名は、IoT Hub を作成するときに使用するリソース グループの名前です。Resource group name is the name of the resource group you use when you create the IoT hub. 名前は既存のリソース グループまたは新しいリソース グループになります。The name can be a pre-existing or new resource group. デプロイ名は、デプロイの名前です (Deployment_01 など)。Deployment name is a name for the deployment, such as Deployment_01.

    static string applicationId = "{Your ApplicationId}";
    static string subscriptionId = "{Your SubscriptionId}";
    static string tenantId = "{Your TenantId}";
    static string password = "{Your application Password}";
    static string storageAddress = "https://{Your storage account name}";
    static string rgName = "{Resource group name}";
    static string deploymentName = "{Deployment name}";

Azure Resource Manager トークンの取得Obtain an Azure Resource Manager token

Azure Active Directory では、Azure リソース マネージャーを使用してリソース上で実行するすべてのタスクを認証する必要があります。Azure Active Directory must authenticate all the tasks that you perform on resources using the Azure Resource Manager. ここに示す例では、パスワード認証が使用されます。その他の手法については、Azure Resource Manager の要求の認証に関する記事を参照してください。The example shown here uses password authentication, for other approaches see Authenticating Azure Resource Manager requests.

  1. Program.cs の Main メソッドに次のコードを追加し、アプリケーション ID とパスワードを利用して Azure AD からトークンを取得します。Add the following code to the Main method in Program.cs to retrieve a token from Azure AD using the application id and password.

    var authContext = new AuthenticationContext(string.Format  
      ("{0}", tenantId));
    var credential = new ClientCredential(applicationId, password);
    AuthenticationResult token = authContext.AcquireTokenAsync
      ("", credential).Result;
    if (token == null)
      Console.WriteLine("Failed to obtain the token");
  2. Main メソッドの終わりに次のコードを追加し、トークンを使用する ResourceManagementClient オブジェクトを作成します。Create a ResourceManagementClient object that uses the token by adding the following code to the end of the Main method:

    var creds = new TokenCredentials(token.AccessToken);
    var client = new ResourceManagementClient(creds);
    client.SubscriptionId = subscriptionId;
  3. 使用するリソース グループを作成するか、その参照を取得します。Create, or obtain a reference to, the resource group you are using:

    var rgResponse = client.ResourceGroups.CreateOrUpdate(rgName,
        new ResourceGroup("East US"));
    if (rgResponse.Properties.ProvisioningState != "Succeeded")
      Console.WriteLine("Problem creating resource group");

テンプレートを送信して IoT Hub を作成するSubmit a template to create an IoT hub

JSON テンプレートとパラメーター ファイルを使用して、リソース グループに IoT Hub を作成します。Use a JSON template and parameter file to create an IoT hub in your resource group. Azure Resource Manager テンプレートを使用して、既存の IoT Hub に変更を加えることもできます。You can also use an Azure Resource Manager template to make changes to an existing IoT hub.

  1. ソリューション エクスプローラーで、目的のプロジェクトを右クリックし、 [追加][新しい項目] の順にクリックします。In Solution Explorer, right-click on your project, click Add, and then click New Item. template.json という JSON ファイルをプロジェクトに追加します。Add a JSON file called template.json to your project.

  2. 標準 IoT Hub を米国東部リージョンに追加するには、template.json の内容を次のリソース定義に置き換えます。To add a standard IoT hub to the East US region, replace the contents of template.json with the following resource definition. IoT Hub をサポートするリージョンの最新の一覧については、「Azure の状態」を参照してください。For the current list of regions that support IoT Hub see Azure Status:

      "$schema": "",
      "contentVersion": "",
      "parameters": {
        "hubName": {
          "type": "string"
      "resources": [
        "apiVersion": "2016-02-03",
        "type": "Microsoft.Devices/IotHubs",
        "name": "[parameters('hubName')]",
        "location": "East US",
        "sku": {
          "name": "S1",
          "tier": "Standard",
          "capacity": 1
        "properties": {
          "location": "East US"
      "outputs": {
        "hubKeys": {
          "value": "[listKeys(resourceId('Microsoft.Devices/IotHubs', parameters('hubName')), '2016-02-03')]",
          "type": "object"
  3. ソリューション エクスプローラーで、目的のプロジェクトを右クリックし、 [追加][新しい項目] の順にクリックします。In Solution Explorer, right-click on your project, click Add, and then click New Item. parameters.json という JSON ファイルをプロジェクトに追加します。Add a JSON file called parameters.json to your project.

  4. parameters.json の内容を次のパラメーター情報に置き換えて、新しい IoT Hub の名前を、たとえば {自分のイニシャル}mynewiothub に設定します。Replace the contents of parameters.json with the following parameter information that sets a name for the new IoT hub such as {your initials}mynewiothub. IoT ハブ名はグローバルに一意である必要があるため、自分の名前やイニシャルを含めます。The IoT hub name must be globally unique so it should include your name or initials:

      "$schema": "",
      "contentVersion": "",
      "parameters": {
        "hubName": { "value": "mynewiothub" }


    IoT ハブは DNS エンドポイントとして公開されるため、名前を付ける際に機密情報や個人を特定できる情報を入力しないように注意してください。Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

  5. サーバー エクスプローラーから Azure サブスクリプションに接続し、Azure Storage アカウントで templates というコンテナーを作成します。In Server Explorer, connect to your Azure subscription, and in your Azure Storage account create a container called templates. [プロパティ] ウィンドウで、 [templates] コンテナーの [パブリック読み取りアクセス] 権限を [BLOB] に設定します。In the Properties panel, set the Public Read Access permissions for the templates container to Blob.

  6. サーバー エクスプローラー[templates] コンテナーを右クリックし、 [BLOB コンテナーの表示] をクリックします。In Server Explorer, right-click on the templates container and then click View Blob Container. [BLOB のアップロード] ボタンをクリックして parameters.jsontemplates.json の 2 つのファイルを選択し、 [開く] をクリックして、 [templates] コンテナーに JSON ファイルをアップロードします。Click the Upload Blob button, select the two files, parameters.json and templates.json, and then click Open to upload the JSON files to the templates container. JSON データを含んだ BLOB の URL は次のとおりです。The URLs of the blobs containing the JSON data are:

    https://{Your storage account name}
    https://{Your storage account name}
  7. 次のメソッドを Program.cs に追加します。Add the following method to Program.cs:

    static void CreateIoTHub(ResourceManagementClient client)
  8. テンプレート ファイルとパラメーター ファイルを Azure Resource Manager に送信するために、次のコードを CreateIoTHub メソッドに追加します。Add the following code to the CreateIoTHub method to submit the template and parameter files to the Azure Resource Manager:

    var createResponse = client.Deployments.CreateOrUpdate(
        new Deployment()
          Properties = new DeploymentProperties
            Mode = DeploymentMode.Incremental,
            TemplateLink = new TemplateLink
              Uri = storageAddress + "/templates/template.json"
            ParametersLink = new ParametersLink
              Uri = storageAddress + "/templates/parameters.json"
  9. 次のコードを CreateIoTHub メソッドに追加します。これは新しい IoT Hub のステータスとキーを表示するコードです。Add the following code to the CreateIoTHub method that displays the status and the keys for the new IoT hub:

    string state = createResponse.Properties.ProvisioningState;
    Console.WriteLine("Deployment state: {0}", state);
    if (state != "Succeeded")
      Console.WriteLine("Failed to create iothub");

アプリケーションの完了と実行Complete and run the application

CreateIoTHub メソッドの呼び出しを追加したうえでアプリケーションをビルドし、実行すれば、アプリケーションは完成です。You can now complete the application by calling the CreateIoTHub method before you build and run it.

  1. 次のコードを Main メソッドの末尾に追加します。Add the following code to the end of the Main method:

  2. [ビルド][ソリューションのビルド] の順にクリックします。Click Build and then Build Solution. すべてのエラーを修正します。Correct any errors.

  3. [デバッグ][デバッグの開始] の順にクリックし、アプリケーションを実行します。Click Debug and then Start Debugging to run the application. デプロイメントが実行されるまでに数分かかる場合があります。It may take several minutes for the deployment to run.

  4. アプリケーションが新しい IoT ハブを追加したことを確認するには、Azure portal にアクセスしてリソースの一覧を表示します。To verify your application added the new IoT hub, visit the Azure portal and view your list of resources. または、Get-AzResource PowerShell コマンドレットを使用します。Alternatively, use the Get-AzResource PowerShell cmdlet.


このサンプル アプリケーションでは、課金の対象とする S1 Standard IoT Hub を追加します。This example application adds an S1 Standard IoT Hub for which you are billed. 完了したら、Azure portal または Remove-AzResource PowerShell コマンドレットを使用してその IoT ハブを削除できます。You can delete the IoT hub through the Azure portal or by using the Remove-AzResource PowerShell cmdlet when you are finished.

次のステップNext steps

ここでは、C# プログラムと Azure Resource Manager テンプレートを使用して IoT Hub をデプロイしました。次の手順に進んでください。Now you have deployed an IoT hub using an Azure Resource Manager template with a C# program, you may want to explore further:

IoT Hub の開発に関する詳細については、以下の記事をご覧ください。To learn more about developing for IoT Hub, see the following articles:

IoT Hub の機能を詳しく調べるには、次のリンクを使用してください。To further explore the capabilities of IoT Hub, see: