Azure ioT hub'larını Azure Resource Manager şablonu kullanarak el ile geçirme

IoT hub'ını yeni bir bölgeye, yeni katmana veya yeni bir yapılandırmaya geçirmek için Azure portal, Azure Resource Manager şablonlarını ve Azure IoT Hub hizmet SDK'larını kullanın.

Bu makaledeki adımlar, aşağıdakileri yapmak istiyorsanız yararlıdır:

Hub'ı geçirmek için, özgün hub'a yönetici erişimi olan bir aboneliğe ihtiyacınız vardır. Yeni hub'ı yeni bir kaynak grubuna ve bölgeye, özgün hub ile aynı aboneliğe, hatta yeni bir aboneliğe yerleştirebilirsiniz. Hub adının genel olarak benzersiz olması gerektiğinden aynı adı kullanamazsınız.

Otomatik ve el ile geçiş adımlarını karşılaştırma

Bu makalenin sonucu, Azure CLI kullanarak ancak farklı bir işlemle IoT hub'ını otomatik olarak geçirme işlemine benzer. Başlamadan önce, senaryonuz için hangi işlemin doğru olduğuna karar verin.

  • El ile işlem (bu makale):

    • Cihaz kayıt defterinizi, yönlendirme ve uç nokta bilgilerinizi geçirir. Yeni IoT hub'ında diğer yapılandırma ayrıntılarını el ile yeniden oluşturmanız gerekir.
    • Çok sayıda cihazı (örneğin, 100.000'den fazla) geçirmek için daha hızlıdır.
    • Cihaz kayıt defterini aktarmak için bir Azure Depolama hesabı kullanır.
    • ARM şablonu çıkışından yönlendirme ve dosya yükleme uç noktalarının bağlantı dizelerini temizler ve bunları el ile yeniden eklemeniz gerekir.
  • Azure CLI işlemi:

    • Cihaz kayıt defterinizi, yönlendirme ve uç nokta bilgilerinizi ve IoT Edge dağıtımları veya otomatik cihaz yönetimi yapılandırmaları gibi diğer yapılandırma ayrıntılarını geçirir.
    • Az sayıda cihazı (örneğin, 10.000'e kadar) geçirmek daha kolaydır.
    • Azure Depolama hesabı gerektirmez.
    • Yönlendirme ve dosya yükleme uç noktaları için bağlantı dizelerini toplar ve bunları ARM şablonu çıkışına ekler.

Dikkat edilmesi gereken noktalar

IoT hub'ına geçiş yapmadan önce göz önünde bulundurmanız gereken birkaç şey vardır.

  • Özgün konumda bulunan tüm özelliklerin yeni konumda da kullanılabilir olduğundan emin olun. Bazı hizmetler önizleme aşamasındadır ve tüm özellikler her yerde kullanılamaz.

  • Geçirilen sürümü oluşturmadan ve doğrulamadan önce özgün kaynakları kaldırmayın. Hub'ı kaldırdıktan sonra sonsuza kadar kaybolur ve hub'ın doğru çoğaltılmış olduğundan emin olmak için ayarları veya verileri denetlemek için kurtarmanın hiçbir yolu yoktur.

  • Özgün IoT hub'ına ilişkin veriler geçirilmez. Bu veriler cihaz iletilerini, buluttan cihaza (C2D) komutları ve zamanlamalar ve geçmiş gibi işle ilgili bilgileri içerir. Ölçümler ve günlük sonuçları da geçirilmez.

  • Geçiş için kapalı kalma süresini zamanlamanız gerekir. Cihazların yeni hub'a kopyalanması zaman alır. İçeri/Dışarı Aktarma yöntemini kullanıyorsanız karşılaştırma testi, 500.000 cihazın taşınmasının yaklaşık iki saat, bir milyon cihazı taşımanın ise dört saat sürebileceğini ortaya çıkarmıştır.

  • Cihazları kapatmadan veya değiştirmeden yeni hub'a kopyalayabilirsiniz.

    • Cihazlar başlangıçta DPS kullanılarak sağlandıysa, kayıtlarını yeni IoT hub'ına işaret eden şekilde güncelleştirin. Ardından, her cihazda depolanan bağlantı bilgilerini güncelleştirmek için cihazları yeniden sağlayın.

    • Aksi takdirde, cihazları taşımak için içeri/dışarı aktarma yöntemini kullanmanız ve ardından yeni hub'ı kullanmak için cihazların değiştirilmesi gerekir. Örneğin, cihazınızı ikizi istenen özelliklerden IoT Hub ana bilgisayar adını kullanacak şekilde ayarlayabilirsiniz. Cihaz bu IoT Hub ana bilgisayar adını alır, eski hub'dan cihazın bağlantısını kesin ve yenisine yeniden bağlayın.

  • Yeni kaynaklarla kullanabilmek için tüm sertifikaları güncelleştirmeniz gerekir. Ayrıca, büyük olasılıkla hub bir DNS tablosunda tanımlanmıştır ve bu DNS bilgilerini güncelleştirmeniz gerekir.

Yöntem

Bu, IoT hub'ını geçirmek için önerdiğimiz genel yöntemdir.

  1. Hub'ı ve ayarlarını bir Resource Manager şablonuna aktarın.

  2. Şablonda adın tüm oluşumlarını ve geçirilen hub'ın konumunu güncelleştirme gibi gerekli değişiklikleri yapın. İleti yönlendirme uç noktaları için kullanılan şablondaki tüm kaynaklar için, bu kaynağın şablonundaki anahtarı güncelleştirin.

  3. Şablonu yeni konumdaki yeni bir kaynak grubuna aktarın. Bu adım yeni IoT hub'ını oluşturur.

  4. Gerektiğinde hata ayıklayın.

  5. Şablona aktarılmış olmayan her şeyi ekleyin.

    Örneğin, tüketici grupları şablona aktarılamaz. Tüketici gruplarını şablona el ile eklemeniz veya hub oluşturulduktan sonra Azure portal kullanmanız gerekir.

  6. Cihazları özgün hub'dan yeni hub'a kopyalayın. Bu işlem IoT hub'ına kayıtlı cihazları yönetme bölümünde ele alınmıştır.

İleti yönlendirmeyi işleme

Hub'ınız ileti yönlendirme kullanıyorsa, hub için şablonu dışarı aktarmak yönlendirme yapılandırmasını içerir, ancak kaynakları içermez. IoT hub'ını yeni bir bölgeye geçiriyorsanız, yönlendirme kaynaklarını yeni konuma da taşımayı veya yerinde bırakmayı ve "olduğu gibi" kullanmaya devam etmeyi seçmeniz gerekir. İletileri farklı bir bölgedeki uç nokta kaynaklarına yönlendirmeden küçük bir performans isabeti olabilir.

Hub ileti yönlendirme kullanıyorsa iki seçeneğiniz vardır.

  • Yönlendirme uç noktaları için kullanılan kaynakları yeni konuma taşıyın.

    1. Yeni kaynakları kendiniz Azure portal el ile veya Resource Manager şablonları kullanarak oluşturun.

    2. Genel olarak benzersiz adlar gerektirdiğinden, yeni konumda oluşturduğunuzda tüm kaynakları yeniden adlandırın.

    3. Yeni hub'ı oluşturmadan önce yeni hub şablonundaki kaynak adlarını ve kaynak anahtarlarını güncelleştirin. Yeni hub oluşturulduğunda kaynaklar mevcut olmalıdır.

  • Yönlendirme uç noktaları için kullanılan kaynakları taşımayın. Bunları "yerinde" kullanın.

    1. Şablonu düzenlediğiniz adımda, yeni hub'ı oluşturmadan önce her yönlendirme kaynağının anahtarlarını almanız ve bunları şablona yerleştirmeniz gerekir.

    2. Hub hala özgün yönlendirme kaynaklarına başvurur ve iletileri yapılandırıldığı gibi bunlara yönlendirir. Hub ve yönlendirme uç noktası kaynakları aynı konumda olmadığından küçük bir performansa sahip olursunuz.

Hub'ı başka bir bölgeye geçirmeye hazırlanma

Bu bölümde hub'ı geçirmek için özel yönergeler sağlanmaktadır.

Özgün hub'ı kaynak şablonuna aktarma

  1. Azure Portal oturum açın.

  2. Taşımak istediğiniz IoT hub'ına gidin.

  3. Hub'ın özellikler ve ayarlar listesinden Şablonu dışarı aktar'ı seçin.

    IoT hub'ına yönelik şablonu dışarı aktarma komutunu gösteren ekran görüntüsü.

  4. Şablonu indirmek için İndir'i seçin. Dosyayı yeniden bulabileceğiniz bir yere kaydedin.

    IoT hub'ına yönelik şablonu indirme komutunu gösteren ekran görüntüsü.

Şablonu görüntüleme

Zip dosyasında bulunan indirilen şablona gidin. Zip dosyasını ayıklayın ve adlı template.jsondosyayı bulun.

Aşağıdaki örnek, yönlendirme yapılandırması olmayan genel bir hub içindir. Westus bölgesinde ContosoHub adlı bir S1 katman hub'ıdır (1 birimli):

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "IotHubs_ContosoHub_connectionString": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
        "IotHubs_ContosoHub_name": {
            "defaultValue": "ContosoHub",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Devices/IotHubs",
            "apiVersion": "2021-07-01",
            "name": "[parameters('IotHubs_ContosoHub_name')]",
            "location": "westus",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "capacity": 1
            },
            "identity": {
                "type": "None"
            },
            "properties": {
                "ipFilterRules": [],
                "eventHubEndpoints": {
                    "events": {
                        "retentionTimeInDays": 1,
                        "partitionCount": 4
                    }
                },
                "routing": {
                    "endpoints": {
                        "serviceBusQueues": [],
                        "serviceBusTopics": [],
                        "eventHubs": [],
                        "storageContainers": []
                    },
                    "routes": [],
                    "fallbackRoute": {
                        "name": "$fallback",
                        "source": "DeviceMessages",
                        "condition": "true",
                        "endpointNames": [
                            "events"
                        ],
                        "isEnabled": true
                    }
                },
                "storageEndpoints": {
                    "$default": {
                        "sasTtlAsIso8601": "PT1H",
                        "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
                        "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
                    }
                },
                "messagingEndpoints": {
                    "fileNotifications": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "enableFileUploadNotifications": false,
                "cloudToDevice": {
                    "maxDeliveryCount": 10,
                    "defaultTtlAsIso8601": "PT1H",
                    "feedback": {
                        "lockDurationAsIso8601": "PT1M",
                        "ttlAsIso8601": "PT1H",
                        "maxDeliveryCount": 10
                    }
                },
                "features": "None",
                "disableLocalAuth": false,
                "allowedFqdnList": []
            }
        }
    ]
}

Şablonu düzenleme

Şablonu kullanarak yeni bölgede yeni hub'ı oluşturmadan önce bazı değişiklikler yapmanız gerekir. Şablonu düzenlemek için Visual Studio Code veya metin düzenleyicisi kullanın.

Hub adını ve konumunu düzenleme

  1. Üst kısımdaki kapsayıcı adı parametresi bölümünü kaldırın. ContosoHub'ın ilişkili bir kapsayıcısı yoktur.

    "parameters": {
      ...
        "IotHubs_ContosoHub_containerName": {
            "type": "SecureString"
        },
      ...
    },
    
  2. storageEndpoints özelliğini kaldırın.

    "properties": {
      ...
        "storageEndpoints": {
        "$default": {
            "sasTtlAsIso8601": "PT1H",
            "connectionString": "[parameters('IotHubs_ContosoHub_connectionString')]",
            "containerName": "[parameters('IotHubs_ContosoHub_containerName')]"
        }
      },
      ...
    
    
  3. Hub'ı yeni bir bölgeye taşıyorsanız kaynaklar altındaki konum özelliğini değiştirin.

    "location": "westus",
    

Yönlendirme uç noktası kaynaklarını güncelleştirme

Yönlendirme yapılandırılmış bir hub için Resource Manager şablonunu dışarı aktardığınızda, bu kaynakların anahtarlarının dışarı aktarılan şablonda sağlanmamış olduğunu görürsünüz. Yerleşimleri yıldız işaretiyle gösterilir. Yeni hub şablonunu içeri aktarıp hub'ı oluşturmadan önce portalda bu kaynaklara gidip anahtarları alarak bunları doldurmanız gerekir.

Yönlendirme kaynaklarını da taşıdıysanız, her uç noktanın adını, kimliğini ve kaynak grubunu da güncelleştirin.

  1. Yönlendirme kaynaklarından herhangi biri için gereken anahtarları alın ve şablona yerleştirin. Anahtarları Azure portal kaynaktan alabilirsiniz.

    • Örneğin, iletileri bir depolama kapsayıcısına yönlendiriyorsanız portalda depolama hesabını bulun. Ayarlar bölümünde Erişim anahtarları'nı seçin ve anahtarlardan birini kopyalayın. Şablonu ilk dışarı aktardığınızda anahtar şöyle görünür:

      "connectionString": "DefaultEndpointsProtocol=https;
      AccountName=fabrikamstorage1234;AccountKey=****",
      "containerName": "fabrikamresults",
      

      Depolama hesabının hesap anahtarını aldıktan sonra, yıldız işareti yerine yan tümcesindeki şablona AccountKey=**** yerleştirin.

    • Hizmet veri yolu kuyrukları için SharedAccessKeyName ile eşleşen Paylaşılan Erişim Anahtarını alın. Anahtar ve SharedAccessKeyName json dosyasındakiler şunlardır:

      "connectionString": "Endpoint=sb://fabrikamsbnamespace1234.servicebus.windows.net:5671/;
      SharedAccessKeyName=iothubroutes_FabrikamResources;
      SharedAccessKey=****;
      EntityPath=fabrikamsbqueue1234",
      
    • Aynı durum Service Bus Konuları ve Event Hubs bağlantıları için de geçerlidir.

Şablonu yükleyerek yeni hub'ı oluşturma

Düzenlenen şablonu kullanarak yeni hub'ı oluşturun. Taşınacak yönlendirme kaynaklarınız varsa, kaynaklar yeni konumda ayarlanmalıdır ve şablondaki başvurular eşleşecek şekilde güncelleştirilmelidir. Yönlendirme kaynaklarını taşımıyorsanız, bunlar güncelleştirilmiş anahtarlarla birlikte şablonda olmalıdır.

  1. Azure Portal oturum açın.

  2. Kaynak oluştur’u seçin.

  3. Arama kutusunda şablon dağıtımını (özel şablonlar kullanarak dağıtma) arayın ve seçin. Şablon dağıtımı ekranında Oluştur'u seçin.

  4. Özel dağıtım sayfasında düzenleyicide Kendi şablonunuzu derleyin'i seçerek şablonunuzu bir dosyadan karşıya yükleyebilirsiniz.

    Kendi şablonunuzu oluşturmaya yönelik komutu gösteren ekran görüntüsü.

  5. Dosya yükle'yi seçin.

    Şablon dosyasını karşıya yükleme komutunu gösteren ekran görüntüsü.

  6. Düzenlediğiniz yeni şablona göz atın ve şablonu seçin, ardından Aç'ı seçin. Şablonunuzu düzenleme penceresine yükler. Kaydet’i seçin.

    Şablonun yüklenmesini gösteren ekran görüntüsü.

  7. Özel dağıtım sayfasında aşağıdaki alanları doldurun.

    Abonelik: Kullanılacak abonelik.

    Kaynak grubu: Mevcut bir kaynak grubunu seçin veya yeni bir kaynak grubu oluşturun.

    Bölge: Mevcut bir kaynak grubunu seçtiyseniz, kaynak grubunun konumuyla eşleşmeniz için bölge doldurulur. Yeni bir kaynak grubu oluşturduysanız, bu grubun konumudur.

    Bağlantı dizesi: Hub'ınızın bağlantı dizesini doldurun.

    Hub adı: Yeni hub'a bir ad verin.

    Özel dağıtım sayfasını gösteren ekran görüntüsü

  8. Gözden geçir + oluştur düğmesini seçin.

  9. Oluştur düğmesini seçin. Portal, şablonunuzu doğrular ve yeni hub'ınızı dağıtır. Yönlendirme yapılandırma verileriniz varsa, bu veriler yeni hub'a dahil edilir ancak önceki konumdaki kaynaklara işaret eder.

    Son özel dağıtım sayfasını gösteren ekran görüntüsü

IoT hub'ına kayıtlı cihazları yönetme

Artık yeni hub'ınızı çalıştırdığınıza göre, özgün hub'dan yenisine tüm cihazları kopyalamanız gerekir.

Cihazları kopyalamanın birden çok yolu vardır. Cihazları sağlamak için başlangıçta Cihaz Sağlama Hizmeti'ni (DPS) kullandınız veya sağlamadınız. Bunu yaptıysanız, bu işlem zor değildir. Bunu yapmadıysanız, bu işlem karmaşık olabilir.

Cihazlarınızı sağlamak için DPS kullanmadıysanız sonraki bölümü atlayabilir ve cihazları yeni hub'a taşımak için İçeri/Dışarı Aktarmayı Kullan ile başlayabilirsiniz.

Yeni hub'daki cihazları yeniden sağlamak için DPS kullanma

Cihazları yeni konuma taşımak üzere DPS'yi kullanmak için bkz. Cihazları yeniden sağlama. İşiniz bittiğinde, cihazları Azure portal görüntüleyebilir ve yeni konumda olduklarını doğrulayabilirsiniz.

Azure portal kullanarak yeni hub'a gidin. Hub'ınızı seçin ve ardından IoT Cihazları'na tıklayın. Yeni hub'a yeniden sağlanan cihazları görürsünüz. Yeni hub'ın özelliklerini de görüntüleyebilirsiniz.

Yönlendirme uyguladıysanız, iletilerinizin kaynaklara doğru şekilde yönlendirildiğinden emin olun.

DPS'yi kullandıktan sonra değişiklikleri geri alma

Değişiklikleri geri almak istiyorsanız, cihazları yeni hub'dan eskisine yeniden sağlayın.

Artık hub'ınızı ve cihazlarını geçirmeyi tamamladınız. Temizleme'ye atlayabilirsiniz.

Cihazları yeni hub'a taşımak için içeri-dışarı aktarmayı kullanma

Uygulama .NET Core'u hedeflediğinden Windows veya Linux üzerinde çalıştırabilirsiniz. Örneği indirebilir, bağlantı dizelerinizi alabilir, çalıştırmak istediğiniz bitlerin bayraklarını ayarlayabilir ve çalıştırabilirsiniz. Kodu açmadan bunu yapabilirsiniz.

Örneği indirme

  1. Burada IoT C# örneklerini kullanın: C# için Azure IoT SDK'sı. Zip dosyasını indirin ve bilgisayarınıza açın.

  2. İlgili kod ./iothub/service/samples/how to guides/ImportExportDevicesSample biçimindedir. Uygulamayı çalıştırmak için kodu görüntülemeniz veya düzenlemeniz gerekmez.

  3. Uygulamayı çalıştırmak için üç bağlantı dizesi ve beş seçenek belirtin. Bu verileri komut satırı bağımsız değişkenleri olarak geçirirsiniz ya da ortam değişkenlerini kullanırsınız ya da ikisinin birleşimini kullanırsınız. seçenekleri komut satırı bağımsız değişkenleri ve bağlantı dizelerini ortam değişkenleri olarak geçireceğiz.

    Bunun nedeni, bağlantı dizelerinin uzun ve eşlenmemiş olması ve değişme olasılığı düşük olmasıdır, ancak seçenekleri değiştirmek ve uygulamayı birden çok kez çalıştırmak isteyebilirsiniz. Ortam değişkeninin değerini değiştirmek için komut penceresini ve Visual Studio veya Visual Studio Code (hangisi kullanıyorsanız) kapatmanız gerekir.

Seçenekler

Uygulamayı çalıştırırken belirttiğiniz beş seçenek şunlardır:

  • addDevices (bağımsız değişken 1) - Sizin için oluşturulan sanal cihazları eklemek istiyorsanız bu seçeneği True olarak ayarlayın. Bu cihazlar kaynak hub'a eklenir. Ayrıca, eklemek istediğiniz cihaz sayısını belirtmek için numToAdd (bağımsız değişken 2) değerini ayarlayın. Hub'a kaydedebileceğiniz en fazla cihaz sayısı bir milyondur. Bu seçeneğin amacı test amaçlıdır. Belirli sayıda cihaz oluşturabilir ve bunları başka bir hub'a kopyalayabilirsiniz.

  • copyDevices (bağımsız değişken 3) - Cihazları bir hub'dan diğerine kopyalamak için bu seçeneği True ayarlayın.

  • deleteSourceDevices (bağımsız değişken 4) - Kaynak hub'a True kayıtlı tüm cihazları silmek için bu seçeneği ayarlayın. Bunu çalıştırmadan önce tüm cihazların aktarıldığından emin olana kadar beklemenizi öneririz. Cihazları sildiğinizde geri alamazsınız.

  • deleteDestDevices (bağımsız değişken 5) - Hedef hub'a True kayıtlı tüm cihazları silmek için bu seçeneği ayarlayın. Cihazları birden çok kez kopyalamak istiyorsanız bunu yapmak isteyebilirsiniz.

Temel komut dotnet run komutudur ve .NET'e yerel csproj dosyasını derleyip çalıştırmasını söyler. Komut satırı bağımsız değişkenlerinizi çalıştırmadan önce sonuna eklersiniz.

Komut satırınız şu örneklere benzer olacaktır:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices

    // Add 1000 devices, don't copy them to the other hub, or delete them. 
    // The first argument is true, numToAdd is 50, and the other arguments are false.
    dotnet run true 1000 false false false 

    // Copy the devices you just added to the other hub; don't delete anything.
    // The first argument is false, numToAdd is 0, copy-devices is true, and the delete arguments are both false
    dotnet run false 0 true false false 

Bağlantı dizeleri için ortam değişkenlerini kullanma

  1. Örneği çalıştırmak için eski ve yeni IoT hub'larına ve geçici iş dosyaları için kullanabileceğiniz bir depolama hesabına bağlantı dizelerine ihtiyacınız vardır. Bunların değerlerini ortam değişkenlerinde depolayacağız.

  2. Bağlantı dizesi değerlerini almak için Azure portal oturum açın.

  3. Bağlantı dizelerini not defteri gibi bunları alabileceğiniz bir yere yerleştirin. Aşağıdakini kopyalarsanız, bağlantı dizelerini doğrudan bulundukları yere yapıştırabilirsiniz. Eşittir işaretinin çevresine boşluk eklemeyin veya değişken adını değiştirir. Ayrıca, bağlantı dizeleri etrafında çift tırnak işareti gerekmez. Depolama hesabı bağlantı dizesini tırnak içine alırsanız betik başarısız olur.

    Windows'da ortam değişkenlerini ayarlama:

    SET IOTHUB_CONN_STRING=<put connection string to original IoT hub here>
    SET DEST_IOTHUB_CONN_STRING=<put connection string to destination IoT hub here>
    SET STORAGE_ACCT_CONN_STRING=<put connection string to the storage account here>
    

    Linux'ta ortam değişkenlerini ayarlayın:

    export IOTHUB_CONN_STRING="<put connection string to original IoT hub here>"
    export DEST_IOTHUB_CONN_STRING="<put connection string to destination IoT hub here>"
    export STORAGE_ACCT_CONN_STRING="<put connection string to the storage account here>"
    
  4. IoT hub bağlantı dizeleri için portaldaki her hub'a gidin. Hub için Kaynaklar'da arama yapabilirsiniz. Kaynak Grubunu biliyorsanız Kaynak grupları'na gidebilir, kaynak grubunuzu seçebilir ve ardından bu kaynak grubundaki varlıklar listesinden hub'ı seçebilirsiniz.

  5. Hub için Ayarlar'dan Paylaşılan erişim ilkeleri'ni seçin, ardından iothubowner'ı seçin ve bağlantı dizelerinden birini kopyalayın. Hedef hub için de aynısını yapın. Bunları uygun SET komutlarına ekleyin.

  6. Depolama hesabı bağlantı dizesi için, depolama hesabını Kaynaklar'da veya Kaynak grubunun altında bulun ve açın.

  7. Ayarlar bölümünde Erişim anahtarları'nı seçin ve bağlantı dizelerinden birini kopyalayın. Uygun SET komutu için bağlantı dizesini metin dosyanıza yerleştirin.

Artık SET komutlarını içeren bir dosyada ortam değişkenleriniz var ve komut satırı bağımsız değişkenlerinizin ne olduğunu biliyorsunuz. Şimdi örneği çalıştıralım.

Örnek uygulamayı çalıştırma ve komut satırı bağımsız değişkenlerini kullanma

  1. Bir komut istemi penceresi açın. Windows'u command prompt seçin ve komut istemi penceresini almak için yazın.

  2. Ortam değişkenlerini ayarlayan komutları birer birer kopyalayıp komut istemi penceresine yapıştırın ve Enter tuşuna basın. İşiniz bittiğinde, ortam değişkenlerinizi ve bunların değerlerini görmek için komut istemi penceresine yazın SET . Bunları komut istemi penceresine kopyaladıktan sonra, yeni bir komut istemi penceresi açmadığınız sürece bunları yeniden kopyalamanız gerekmez.

  3. Komut istemi penceresinde, ./ImportExportDevicesSample (ImportExportDevicesSample.csproj dosyasının bulunduğu yer) konumuna gelene kadar dizinleri değiştirin. Ardından aşağıdakileri yazın ve komut satırı bağımsız değişkenlerinizi ekleyin.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    dotnet run arg1 arg2 arg3 arg4 arg5
    

    dotnet komutu uygulamayı derler ve çalıştırır. Uygulamayı çalıştırdığınızda seçenekleri geçirdiğiniz için, uygulamayı her çalıştırdığınızda bunların değerlerini değiştirebilirsiniz. Örneğin, bir kez çalıştırmak ve yeni cihazlar oluşturmak, sonra yeniden çalıştırmak ve bu cihazları yeni bir hub'a kopyalamak vb. isteyebilirsiniz. Tüm adımları aynı çalıştırmada da gerçekleştirebilirsiniz, ancak geçişi tamamladığınızdan emin olana kadar hiçbir cihazı silmemenizi öneririz. Aşağıda 1000 cihaz oluşturup bunları diğer hub'a kopyalayan bir örnek verilmiştir.

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    
    // Add 1000 devices, don't copy them to the other hub or delete them. 
    dotnet run true 1000 false false false 
    
    // Do not add any devices. Copy the ones you just created to the other hub; don't delete anything.
    dotnet run false 0 true false false 
    

    Cihazların başarıyla kopyalandığını doğruladıktan sonra, cihazları kaynak hub'dan şu şekilde kaldırabilirsiniz:

    // Format: dotnet run add-devices num-to-add copy-devices delete-source-devices delete-destination-devices
    // Delete the devices from the source hub.
    dotnet run false 0 false true false 
    

Visual Studio kullanarak örnek uygulamayı çalıştırma

  1. Uygulamayı Visual Studio'da çalıştırmak istiyorsanız, geçerli dizininizi azureiot.sln dosyasının bulunduğu klasörle değiştirin. Ardından, çözümü Visual Studio'da açmak için komut istemi penceresinde bu komutu çalıştırın. Bu değişkenlerin bilinmesi için bunu ortam değişkenlerini ayarladığınız komut penceresinde yapmanız gerekir.

    azureiot.sln
    
  2. ImportExportDevicesSample projesine sağ tıklayın ve Başlangıç projesi olarak ayarla'yı seçin.

  3. Beş seçenek için ImportExportDevicesSample klasöründe Program.cs dosyasının en üstündeki değişkenleri ayarlayın.

    // Add randomly created devices to the source hub.
    private static bool addDevices = true;
    //If you ask to add devices, this will be the number added.
    private static int numToAdd = 0; 
    // Copy the devices from the source hub to the destination hub.
    private static bool copyDevices = false;
    // Delete all of the devices from the source hub. (It uses the IoTHubConnectionString).
    private static bool deleteSourceDevices = false;
    // Delete all of the devices from the destination hub. (Uses the DestIotHubConnectionString).
    private static bool deleteDestDevices = false;
    
  4. Uygulamayı çalıştırmak için F5'i seçin. Çalıştırma tamamlandıktan sonra sonuçları görüntüleyebilirsiniz.

Sonuçları görüntüleme

Cihazları Azure portal görüntüleyebilir ve yeni konumda olduklarını doğrulayabilirsiniz.

  1. Azure portal kullanarak yeni hub'a gidin. Hub'ınızı seçin ve ardından IoT Cihazları'na tıklayın. Eski hub'dan yeni hub'a kopyaladığınız cihazları görürsünüz. Yeni hub'ın özelliklerini de görüntüleyebilirsiniz.

  2. Azure portal Azure depolama hesabına gidip kapsayıcıya ImportErrors.logbakarak devicefiles içeri/dışarı aktarma hatalarını denetleyin. Bu dosya boşsa (boyut 0 ise) hata yoktur. Aynı cihazı birden çok kez içeri aktarmaya çalışırsanız, cihazı ikinci kez reddeder ve günlük dosyasına bir hata iletisi ekler.

Değişiklikleri işleme

Bu noktada hub'ınızı yeni konuma kopyalamış ve cihazları yeni hub'a geçirmişsinizdir. Artık cihazların yeni hub ile çalışması için değişiklikler yapmanız gerekir.

Değişiklikleri işlemek için gerçekleştirmeniz gereken adımlar şunlardır:

  • IoT Hub ana bilgisayar adını IoT Hub ana bilgisayar adını yeni hub'a işaret edecek şekilde değiştirmek için her cihazı güncelleştirin. Bunu, cihazı ilk kez sağlarken kullandığınız yöntemi kullanarak yapmanız gerekir.

  • Eski hub'a başvuran tüm uygulamaları yeni hub'a işaret etmek için değiştirin.

  • İşiniz bittiğinde yeni hub çalışır durumda olmalıdır. Eski hub'ın etkin cihazı olmamalıdır ve bağlantısı kesilmiş durumda olmalıdır.

Değişiklikleri geri alma

Değişiklikleri geri almak isterseniz gerçekleştirmeniz gereken adımlar şunlardır:

  • IoT Hub Ana Bilgisayar Adını eski hub için IoT Hub Ana Bilgisayar Adını işaret edecek şekilde değiştirmek için her cihazı güncelleştirin. Bunu, cihazı ilk kez sağlarken kullandığınız yöntemi kullanarak yapmanız gerekir.

  • Yeni hub'a başvuran tüm uygulamaları eski hub'a işaret etmek için değiştirin. Örneğin, Azure Analytics kullanıyorsanız Azure Stream Analytics girişinizi yeniden yapılandırmanız gerekebilir.

  • Yeni hub'ı silin.

  • Yönlendirme kaynaklarınız varsa, eski hub'da yapılandırma yine doğru yönlendirme yapılandırmasını göstermelidir ve hub yeniden başlatıldıktan sonra bu kaynaklarla çalışmalıdır.

Sonuçları denetleme

Sonuçları denetlemek için IoT çözümünüzü yeni konumdaki hub'ınıza işaret eden şekilde değiştirin ve çalıştırın. Başka bir deyişle, önceki hub ile gerçekleştirdiğiniz yeni hub ile aynı eylemleri gerçekleştirin ve doğru çalıştıklarını doğrulayın.

Yönlendirme uyguladıysanız, iletilerinizin kaynaklara doğru şekilde yönlendirildiğinden emin olun.

Temizleme

Yeni hub'ın çalışır durumda olduğundan ve cihazların düzgün çalıştığından emin olana kadar temizlemeyin. Ayrıca bu özelliği kullanıyorsanız yönlendirmeyi test edin. Hazır olduğunuzda, şu adımları gerçekleştirerek eski kaynakları temizleyin:

  • Henüz yapmadıysanız eski hub'ı silin. Bu işlem, tüm etkin cihazları hub'dan kaldırır.

  • Yeni konuma taşıdığınız yönlendirme kaynaklarınız varsa, eski yönlendirme kaynaklarını silebilirsiniz.

Sonraki adımlar

IoT hub'ını cihazlarla birlikte yeni bir bölgede yeni bir hub'a geçirdiniz. IoT hub'ında kimlik kayıt defterinde toplu işlemler gerçekleştirme hakkında daha fazla bilgi için bkz. IoT Hub cihaz kimliklerini toplu olarak içeri ve dışarı aktarma.