Azure CLI kullanarak IoT hub'ını otomatik olarak geçirme

IoT hub'ını yeni bir bölgeye, yeni katmana veya yeni bir yapılandırmaya geçirmek için Azure CLI'yi kullanın.

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

  • Ücretsiz katmandan temel veya standart katman IoT hub'ına yükseltin.
  • IoT hub'larını yeni bir bölgeye taşıma.
  • Yedek olarak sahip olmak için IoT hub'ı durum bilgilerini dışarı aktarın.
  • IoT hub'ının bölüm sayısını artırın.
  • Üretim ortamı yerine geliştirme için bir merkez ayarlayın.

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

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

  • Azure CLI işlemi (bu makale):

    • 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.
  • El ile gerçekleştirilen işlem:

    • 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.

Ön koşullar

  • Azure CLI

    Bu makalede açıklanan özellikler için azure-iot uzantısının 0.20.0 veya daha yeni bir sürümü gerekir. Uzantı sürümünüzü denetlemek için komutunu çalıştırın az --version. Uzantınızı güncelleştirmek için komutunu çalıştırın az extension update --name azure-iot.

    Eski azure-cli-iot-ext uzantısı hala yüklüyse , azure-iot uzantısını eklemeden önce bu uzantıyı kaldırın.

IoT hub durumu

IoT hub'ının durumunu geçirme hakkında konuştuğumuzda üç yönün birleşiminden bahsediyoruz:

  • Azure Resource Manager (ARM) kaynakları. Bu özellik, kaynak şablonunda tanımlanabilir her şeydir ve kaynak şablonunu Azure portal IoT hub'ınızdan dışarı aktardıysanız elde ettiğiniz bilgilerle aynıdır. Azure Resource Manager yönünün bir parçası olarak yakalanan bilgiler şunları içerir:

    • Yerleşik olay hub'larının saklama süresi
    • Sertifikalar
    • Buluttan cihaza özellikler
    • Cihaz SAS'sini devre dışı bırakma
    • Yerel kimlik doğrulamayı devre dışı bırakma
    • Dosya karşıya yükleme bildirimlerini etkinleştirme
    • Dosya karşıya yükleme depolama uç noktası
    • Kimlikler
      • Kullanıcı tarafından atanan kimlikler
      • Sistem tarafından atanan kimlikler (etkin veya devre dışı)
    • Ağ kuralı kümeleri
    • Yönlendirme
      • Özel uç noktalar
      • Geri dönüş yolu
      • Yollar
    • Etiketler
  • Yapılandırma. Bu özellik, BIR IOT hub'ının ARM şablonunda temsililmeyen yönleri içindir. Özellikle, bu özellik otomatik cihaz yönetimi yapılandırmalarını ve IoT Edge dağıtımlarını kapsar.

  • Aygıtları. Bu özellik, cihaz kayıt defterinizdeki bilgileri temsil eder ve bu bilgiler şunlardır:

    • Cihaz kimlikleri ve ikizler
    • Modül kimlikleri ve ikizler

Burada listelenmeyen IoT Hub özellikleri veya yapılandırmaları doğru şekilde dışarı aktarılamayabilir veya içeri aktarılamayabilir.

IoT hub'ının durumunu dışarı aktarma

IoT hub'ının durumunu bir JSON dosyasına aktarmak için az iot hub state export komutunu kullanın.

Tek bir komutta hem dışarı aktarma hem de içeri aktarma adımlarını çalıştırmak istiyorsanız, bu makalenin devamında yer alan IoT hub'ını geçirme bölümüne bakın.

IoT hub'ının durumunu dışarı aktardığınızda, dışarı aktarabileceğiniz yönleri seçebilirsiniz.

Parametre Ayrıntılar
--aspects Dışarı aktaracak durum yönleri. Kabul edilen değerlerden birini veya daha fazlasını belirtin: arm, yapılandırmalar veya cihazlar. Bu parametre dışarıda bırakılırsa, üç yönün tümü de dışarı aktarılır.
--state-file -f Durum bilgilerinin yazıldığı dosyanın yolu.
--replace -r Bu parametre dahil edilirse, dışarı aktarma komutu durum dosyasının içeriğinin üzerine yazar.
--hub-name -n
Veya
--login -l
Kaynak IoT hub'ının adı (-n) veya kaynak IoT hub'ının (-l) bağlantı dizesi. Her ikisi de sağlanmışsa, bağlantı dizesi öncelik alır.
--resource-group -g Kaynak IoT hub'ının kaynak grubunun adı.

Aşağıdaki örnek, IoT hub'ının durumunun tüm yönlerini myHub-state adlı bir dosyaya aktarır:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json

Aşağıdaki örnek, ioT hub'ının durumunun yalnızca cihazları ve Azure Resource Manager yönlerini dışarı aktarır ve var olan dosyanın içeriğinin üzerine yazar:

az iot hub state export --hub-name myHub --state-file ./myHub-state.json --aspects arm devices --replace

Uç noktaları dışarı aktarma

IoT hub'ının Azure Resource Manager yönünü dışarı aktarmayı seçerseniz, dışarı aktarma komutu anahtar tabanlı kimlik doğrulamasına sahip tüm uç noktaların bağlantı dizelerini alır ve bunları çıkış ARM şablonuna ekler.

Dışarı aktarma komutu ayrıca bağlandığınız kaynağın hala mevcut olduğunu doğrulamak için tüm uç noktaları denetler. Aksi takdirde, bu uç nokta ve bu uç noktayı kullanan tüm yollar dışarı aktarılmaz.

IoT hub'ının durumunu içeri aktarma

Dışarı aktarılan bir dosyadaki durum bilgilerini yeni veya mevcut bir IoT hub'ına aktarmak için az iot hub state import komutunu kullanın.

Tek bir komutta hem dışarı aktarma hem de içeri aktarma adımlarını çalıştırmak istiyorsanız, bu makalenin devamında yer alan IoT hub'ını geçirme bölümüne bakın.

Parametre Ayrıntılar
--aspects İçeri aktarılacağınız durum özellikleri. Kabul edilen değerlerden birini veya daha fazlasını belirtin: arm, yapılandırmalar veya cihazlar. Bu parametre dışarıda bırakılırsa, üç yönün tümü de içeri aktarılır.
--state-file -f Dışarı aktarılan durum dosyasının yolu.
--replace -r Bu parametre dahil edilirse, içeri aktarma komutu hedef hub'ın geçerli durumunu siler.
--hub-name -n
Veya
--login -l
Hedef IoT hub'ının adı (-n) veya hedef IoT hub'ının (-l) bağlantı dizesi. Her ikisi de sağlanmışsa, bağlantı dizesi öncelik alır.
--resource-group -g Hedef IoT hub'ının kaynak grubunun adı.

Aşağıdaki örnek, mevcut değilse oluşturulan yeni bir IoT hub'ına tüm yönleriyle içeri aktarır:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json

Aşağıdaki örnek, mevcut olması gereken yeni bir IoT hub'ına yalnızca cihazları ve yapılandırma yönlerini içeri aktarır ve mevcut cihazların ve yapılandırmaların üzerine yazar:

az iot hub state import --hub-name myNewHub --state-file ./myHub-state.json --aspects devices configurations --replace

Durum içeri aktarma ile yeni bir IoT hub'ı oluşturma

Komutunu kullanarak az iot hub state import yeni bir IoT hub'ı oluşturabilir veya mevcut bir IoT hub'ına yazabilirsiniz.

Yeni bir IoT Hub oluşturmak istiyorsanız, içeri aktarma komutuna arm bu özelliği eklemeniz gerekir. arm Komuta dahil değilse ve hedef hub yoksa, içeri aktarma komutu başarısız olur.

Hedef hub yoksa, --resource-group içeri aktarma komutu için parametresi de gereklidir.

Mevcut IoT hub'ına durum içeri aktarma ile güncelleştirme

Hedef IoT hub'ı zaten varsa, arm komut için az iot hub state import bu özellik gerekli değildir. Bu yönü eklerseniz arm , hub oluşturulduktan sonra değiştirilmeyecek aşağıdaki özellikler dışında tüm kaynak özelliklerinin üzerine yazılır:

  • Konum
  • SKU
  • Yerleşik Event Hubs bölüm sayısı
  • Veri yerleşimi
  • Özellikler

--resource-group İçeri aktarma komutunda belirtilirse ve IoT hub'ına ait geçerli kaynak grubundan farklıysa, komut zaten var olanla aynı ada sahip yeni bir hub oluşturmaya çalıştığından başarısız olur.

İçeri aktarma komutuna --replace bayrağını eklerseniz, hub durumu karşıya yüklenmeden önce aşağıdaki IoT hub özellikleri hedef hub'dan kaldırılır:

  • ARM: Hedef hub'da karşıya yüklenen tüm sertifikalar silinir. Bir sertifika varsa güncelleştirilmesi için bir etag gerekir.
  • Cihazlar: Uç ve uç olmayan tüm cihazlar ve modüller silinir.
  • Yapılandırmalar: Tüm ADM yapılandırmaları ve IoT Edge dağıtımları silinir.

IoT hub'ına geçiş

Bir IoT hub'ının durumunu yeni veya mevcut bir IoT hub'ına geçirmek için az iot hub state migrate komutunu kullanın.

Bu komut, dışarı ve içeri aktarma adımlarını tek bir komuta sarmalar, ancak çıkış dosyası yoktur. IoT hub'ının durumunu dışarı aktarma ve IoT hub'ının durumunuiçeri aktarma bölümlerinde açıklanan tüm yönergeler ve sınırlamalar komut için state migrate de geçerlidir.

Çok sayıda cihazla (örneğin, birkaç yüz veya birkaç bin) bir cihaz kayıt defterini geçiriyorsanız, geçiş komutunu çalıştırmak yerine dışarı ve içeri aktarma komutlarını ayrı ayrı çalıştırmayı daha kolay ve hızlı bulabilirsiniz.

Parametre Ayrıntılar
--aspects Geçirilen durum özellikleri. Kabul edilen değerlerden birini veya daha fazlasını belirtin: arm, yapılandırmalar veya cihazlar. Bu parametre dışarıda bırakılırsa, üç yönü de geçirilir.
--replace -r Bu parametre dahil edilirse, geçiş komutu hedef hub'ın geçerli durumunu siler.
--destination-hub --dh
Veya
--destination-hub-login --dl
Hedef IoT hub'ının adı (--dh) veya hedef IoT hub'ının (--dl) bağlantı dizesi. Her ikisi de sağlanmışsa bağlantı dizesi öncelik alır.
--destination-resource-group --dg Hedef IoT hub'ının kaynak grubunun adı. Hedef hub yoksa hedef kaynak grubu gereklidir.
--origin-hub --oh
Veya
--origin-hub-login --ol
Kaynak IoT hub'ının adı (--oh) veya kaynak IoT hub'ının (--ol) bağlantı dizesi. Her ikisi de sağlanmışsa bağlantı dizesi öncelik alır. Azure CLI oturumunda oturum açmak zorunda kalmamak için bağlantı dizesini kullanın.
--origin-resource-group --og Kaynak IoT hub'ının kaynak grubunun adı.

Aşağıdaki örnek, kaynak hub'ın tüm yönlerini hedef hub'a geçirir ve bu da yoksa oluşturulur:

az iot hub state migrate --origin-hub myHub --origin-resource-group myGroup  --destination-hub myNewHub --destination-resource-group myNewGroup

Geçiş sorunlarını giderme

Cihazları veya yapılandırmaları dışarı veya içeri aktaramıyorsanız bu özelliklere erişiminiz olup olmadığını denetleyin. Erişiminizi doğrulamanın bir yolu veya az iot hub configuration list komutlarını az iot hub device-identity list çalıştırmaktır.

az iot hub state migrate Komut başarısız olursa dışarı ve içeri aktarma komutlarını ayrı ayrı çalıştırmayı deneyin. İki komut yalnızca geçiş komutuyla aynı işleve neden olur, ancak bunları ayrı olarak çalıştırarak dışarı aktarma komutundan oluşturulan durum dosyalarını gözden geçirebilirsiniz.

Sonraki adımlar

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 içeri ve dışarı aktarma.