Azure Resource Manager şablonunu (.NET) kullanarak IoT hub'ı oluşturma

Azure IoT hub'Azure Resource Manager program aracılığıyla oluşturmak ve yönetmek için Azure Resource Manager'ı kullanabilirsiniz. Bu öğreticide, C# programından Azure Resource Manager bir IoT hub'ı oluşturmak için bir Azure Resource Manager şablonu nasıl kullanabileceğiniz açıktır.

Not

Azure'da kaynak oluşturmak ve kaynaklarla çalışmak için iki farklı dağıtım modeli vardır: Azure Resource Manager ve klasik. Bu makale, dağıtım Azure Resource Manager kullanmayı kapsar.

Not

Bu makale Azure Az PowerShell modülünü kullanacak şekilde güncelleştirilmiştir. Az PowerShell modülü, Azure ile etkileşim kurmak için önerilen PowerShell modülüdür. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Bu öğreticiyi tamamlamak için aşağıdakiler gerekir:

Azure Resource Manager isteklerinin kimliğini doğrulamak için hazırlanma

Azure Active Directory (AD) ile Azure Resource Manager kullanarak kaynaklarda gerçekleştirdiğiniz tüm işlemlerin kimlik doğrulamasını yapmanız gerekir. Bunu yapılandırmanın en kolay yolu PowerShell veya Azure CLı kullanmaktır.

Devam etmeden önce Azure PowerShell cmdlet 'lerini yükleyebilirsiniz.

Aşağıdaki adımlarda, PowerShell kullanarak bir AD uygulaması için parola kimlik doğrulamasının nasıl ayarlanacağı gösterilmektedir. Bu komutları, standart bir PowerShell oturumunda çalıştırabilirsiniz.

  1. Aşağıdaki komutu kullanarak Azure aboneliğinizde oturum açın:

    Connect-AzAccount
    
  2. Birden çok Azure aboneliğiniz varsa Azure 'da oturum açmak, kimlik bilgilerinizle ilişkili tüm Azure aboneliklerine erişmenizi sağlar. Kullanabileceğiniz Azure aboneliklerini listelemek için aşağıdaki komutu kullanın:

    Get-AzSubscription
    

    IoT Hub 'ınızı yönetmek üzere komutları çalıştırmak için kullanmak istediğiniz aboneliği seçmek için aşağıdaki komutu kullanın. Önceki komutun çıkışında yer alan abonelik adını veya kimliği kullanabilirsiniz:

    Select-AzSubscription `
        -SubscriptionName "{your subscription name}"
    
  3. Tenantıd ve SubscriptionID'nizi bir yere getirin. Bunlara daha sonra ihtiyacınız olacak.

  4. Yer tutucuları değiştirerek aşağıdaki komutu kullanarak yeni bir Azure Active Directory uygulaması oluşturun:

    • {Display Name}: uygulamanız Için MySampleApp gibi bir görünen ad

    • {Giriş sayfası URL 'si}: uygulamanızın ana sayfasının http: / /MySampleApp/Home gibi URL 'si. Bu URL 'nin gerçek bir uygulamayı göstermesi gerekmez.

    • {Uygulama tanımlayıcısı}: Http: / /MySampleApp gibi benzersiz bir tanımlayıcı. Bu URL 'nin gerçek bir uygulamayı göstermesi gerekmez.

    • {Password}: Uygulamanızda kimlik doğrulaması için kullandığınız bir parola.

      $SecurePassword=ConvertTo-SecureString {password} –asplaintext –force
      New-AzADApplication -DisplayName {Display name} -HomePage {Home page URL} -IdentifierUris {Application identifier} -Password $SecurePassword
      
  5. Oluşturduğunuz uygulamanın ApplicationId 'sini bir yere getirin. Buna daha sonra ihtiyacınız vardır.

  6. Aşağıdaki komutu kullanarak yeni bir hizmet sorumlusu oluşturun ve {MyApplicationId} öğesini önceki adımdaki ApplicationId ile değiştirin:

    New-AzADServicePrincipal -ApplicationId {MyApplicationId}
    
  7. {MyApplicationId} öğesini ApplicationId'lerinizle değiştirerek aşağıdaki komutu kullanarak bir rol ataması ayarlayın.

    New-AzRoleAssignment -RoleDefinitionName Owner -ServicePrincipalName {MyApplicationId}
    

Artık özel C# uygulamanızdan kimlik doğrulaması yapmanızı sağlayan Azure AD uygulamasını oluşturmayı tamamladınız. Bu öğreticide daha sonra aşağıdaki değerlere ihtiyacınız vardır:

  • TenantId
  • SubscriptionId
  • ApplicationID
  • Parola

Visual Studio projenizi hazırlama

  1. Bu Visual Studio Konsol Uygulaması (Windows) proje şablonunu kullanarak bir Visual C# .NET Framework Klasik Masaüstü projesi oluşturun. Projeye CreateIoTHub adını girin.

  2. Bu Çözüm Gezgini projenize sağ tıklayın ve ardından Paketleri Yönet'NuGet tıklayın.

  3. Bu NuGet Paket Yöneticisi Ön sürümü dahil edin'i kontrol edin ve Gözat sayfasında Microsoft.Azure.Management.ResourceManager ifadesini arayın. Paketi seçin, Yükle'ye tıklayın, Değişiklikleri Gözden Geçir'de Tamam'a tıklayın ve ardından lisansları kabul etmek için Kabul Ediyorum'a tıklayın.

  4. Bu NuGet Paket Yöneticisi Microsoft.IdentityModel.Clients.ActiveDirectory için aramanızı sağlar. Yükle'ye tıklayın, Değişiklikleri Gözden Geçir'de Tamam'a tıklayın ve ardından lisansı kabul etmek için Kabul Ediyorum'a tıklayın.

  5. Program.cs'de, mevcut using deyimlerini aşağıdaki kodla değiştirin:

    using System;
    using Microsoft.Azure.Management.ResourceManager;
    using Microsoft.Azure.Management.ResourceManager.Models;
    using Microsoft.IdentityModel.Clients.ActiveDirectory;
    using Microsoft.Rest;
    
  6. Program.cs'de yer tutucu değerlerini değiştirerek aşağıdaki statik değişkenleri ekleyin. Bu öğreticinin önceki adımlarında ApplicationId, SubscriptionId, TenantId ve Password not edin. Azure Depolama hesabı adınız, azure Depolama şablon dosyalarınızı depolay Azure Resource Manager adıdır. Kaynak grubu adı, IoT hub'ı oluşturma adımlarını kullanarak kaynak grubunun adıdır. Ad önceden var olan veya yeni bir kaynak grubu olabilir. Dağıtım adı, dağıtımın adıdır, örneğin: 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}.blob.core.windows.net";
    static string rgName = "{Resource group name}";
    static string deploymentName = "{Deployment name}";
    

Azure Resource Manager belirteci edinme

Azure Active Directory, Azure Resource Manager kullanarak kaynaklarda gerçekleştirdiğiniz tüm görevlerin kimlik doğrulamasından geçmesini sağlamalıdır. Burada gösterilen örnek, parola kimlik doğrulamasını kullanır, diğer yaklaşımlar için bkz. kimlik doğrulama Azure Resource Manager istekleri.

  1. Uygulama kimliği ve parola kullanarak Azure AD 'den bir belirteç almak için program. cs ' deki Main yöntemine aşağıdaki kodu ekleyin.

    var authContext = new AuthenticationContext(string.Format  
      ("https://login.microsoftonline.com/{0}", tenantId));
    var credential = new ClientCredential(applicationId, password);
    AuthenticationResult token = authContext.AcquireTokenAsync
      ("https://management.core.windows.net/", credential).Result;
    
    if (token == null)
    {
      Console.WriteLine("Failed to obtain the token");
      return;
    }
    
  2. Aşağıdaki kodu Main yönteminin sonuna ekleyerek belirteci kullanan bir ResourceManagementClient nesnesi oluşturun:

    var creds = new TokenCredentials(token.AccessToken);
    var client = new ResourceManagementClient(creds);
    client.SubscriptionId = subscriptionId;
    
  3. Kullanmakta olduğunuz kaynak grubu için bir başvuru oluşturun veya bir başvuru alın:

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

IoT hub'ı oluşturmak için şablon gönderme

Kaynak grubunuz içinde bir IoT hub'ı oluşturmak için JSON şablonu ve parametre dosyası kullanın. Mevcut bir IoT hub'Azure Resource Manager değişiklik yapmak için bir şablon da kullanabilirsiniz.

  1. Bu Çözüm Gezgini projenize sağ tıklayın, Ekle'ye ve ardından Yeni Öğe'ye tıklayın. Projenizetemplate.js adlı bir JSON dosyası ekleyin.

  2. Doğu ABD bölgesinde standart bir IoT hub'ı eklemek içintemplate.js içeriğini aşağıdaki kaynak tanımıyla değiştirin. Bu hizmeti destekleyen bölgelerin geçerli listesi için IoT Hub Bkz. Azure Durumu:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "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. Bu Çözüm Gezgini projenize sağ tıklayın, Ekle'ye ve ardından Yeni Öğe'ye tıklayın. Projenizeparameters.js adlı bir JSON dosyası ekleyin.

  4. üzerindeparameters.js yeni IoT hub'ı için {baş harfleriniz}mynewiothub gibi bir ad ayarleyen aşağıdaki parametre bilgileriyle değiştirin. IoT hub'ı adı genel olarak benzersiz olmalıdır, bu nedenle adınız veya baş harflerinizi içermesi gerekir:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "hubName": { "value": "mynewiothub" }
      }
    }
    

    Önemli

    IoT Hub 'ı bir DNS uç noktası olarak herkese açık olacağı için, bu dosyayı adlandırdığınızda hassas veya kişisel olarak tanımlanabilir bilgiler girmemeye özen gösterin.

  5. Bu Sunucu Gezgini Azure aboneliğinize bağlanın ve Azure Depolama adlı bir kapsayıcı oluşturun. Özellikler panelinde, şablonlar kapsayıcısı için Genel Okuma Erişimi izinlerini Blob olarak ayarlayın.

  6. Bu Sunucu Gezgini şablonlar kapsayıcısı'ne sağ tıklayın ve ardından Blob Kapsayıcıyı Görüntüle'ye tıklayın. Upload Blob düğmesine tıklayın, üzerindeparameters.jsve templates.jsiki dosyayı seçin ve ardından Aç'a tıklayarak JSON dosyalarını templates kapsayıcıya yükleyin. JSON verilerini içeren blobların URL'leri:

    https://{Your storage account name}.blob.core.windows.net/templates/parameters.json
    https://{Your storage account name}.blob.core.windows.net/templates/template.json
    
  7. Aşağıdaki yöntemi Program.cs'ye ekleyin:

    static void CreateIoTHub(ResourceManagementClient client)
    {
    
    }
    
  8. Şablon ve parametre dosyalarını aşağıdaki kodu CreateIoTHub yöntemine ek olarak Azure Resource Manager:

    var createResponse = client.Deployments.CreateOrUpdate(
        rgName,
        deploymentName,
        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 yöntemine yeni IoT hub'larının durumunu ve anahtarlarını gösteren aşağıdaki kodu ekleyin:

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

Uygulamayı tamamlama ve çalıştırma

Artık derlemeden ve çalıştırmadan önce CreateIoTHub yöntemini çağırarak uygulamayı tamamabilirsiniz.

  1. Aşağıdaki kodu Main yönteminin sonuna ekleyin:

    CreateIoTHub(client);
    Console.ReadLine();
    
  2. Derleme'ye ve ardından Çözümü Derleme'ye tıklayın. Hataları düzeltin.

  3. Uygulamayı çalıştırmak için Hata Ayıkla'ya ve ardından Hata Ayıklamayı Başlat'a tıklayın. Dağıtımın çalışması birkaç dakika sürebilir.

  4. Uygulamanın yeni IoT hub'ını ekleyeni doğrulamak için Azure portal ve kaynak listenizi görüntülemeyi ziyaret edin. Alternatif olarak, Get-AzResource PowerShell cmdlet'ini kullanın.

Not

Bu örnek uygulama, faturalandır IoT Hub bir S1 Standart Uygulama ekler. Bitirdikten sonra IoT hub'Azure portal veya Remove-AzResource PowerShell cmdlet'ini kullanarak silebilirsiniz.

Sonraki adımlar

Artık C# programıyla bir Azure Resource Manager şablonu kullanarak bir IoT hub'ı dağıttınız, daha fazla araştırma yapmak istiyor olabilir:

Bir IoT Hub geliştirme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın:

Uygulama yönetiminin özelliklerini daha fazla IoT Hub bkz: