IoT Hub uç noktaları

Azure IoT Hub, etkileşim kuran cihazları ve hizmetleri desteklemek için çeşitli uç noktaları kullanıma sunar.

Not

Buluttan cihaza mesajlaşma, cihaz ikizleri ve cihaz yönetimi gibi bu makalede bahsedilen özelliklerden bazıları yalnızca IoT Hub'ın standart katmanında kullanılabilir. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. Çözümünüz için doğru IoT Hub katmanını seçme.

IoT Hub adları

IoT hub'ının ana bilgisayar adını Azure portalında IoT hub'ınızın Genel Bakış çalışma bölmesinde bulabilirsiniz. Varsayılan olarak, bir IoT hub'ının DNS adı aşağıdaki örneğe benzer:

{your iot hub name}.azure-devices.net

Geliştirme ve yönetim için IoT Hub uç noktaları

Azure IoT Hub, işlevselliğini çeşitli aktörlere sunan çok kiracılı bir hizmettir. Aşağıdaki diyagramda IoT Hub'ın kullanıma gösterdiği çeşitli uç noktalar gösterilmektedir.

Yerleşik IoT Hub uç noktalarının listesini gösteren diyagram.

Aşağıdaki listede uç noktalar açıklanmaktadır:

  • Kaynak sağlayıcısı: Azure Resource Manager arabirimi. Bu arabirim, Azure aboneliği sahiplerinin IoT hub'ları oluşturup silmesini ve IoT hub özelliklerini güncelleştirmesini sağlar. IoT Hub özellikleri, cihaz düzeyinde erişim denetimi ve buluttan cihaza ve cihazdan buluta mesajlaşma için işlevsel seçenekler yerine merkez düzeyinde paylaşılan erişim ilkelerini yönetir. IoT Hub kaynak sağlayıcısı, cihaz kimliklerini dışarı aktarmanıza da olanak tanır.

  • Cihaz kimliği yönetimi: Cihaz kimliklerini yönetmek için bir dizi HTTPS REST uç noktası (oluşturma, alma, güncelleştirme ve silme). Cihaz kimlikleri , cihaz kimlik doğrulaması ve erişim denetimi için kullanılır.

  • Cihaz ikizi yönetimi: Cihaz ikizlerini sorgulamak ve güncelleştirmek için hizmete yönelik HTTPS REST uç noktası kümesi (etiketleri ve özellikleri güncelleştirin).

  • İş yönetimi: İşleri sorgulamak ve yönetmek için hizmete yönelik HTTPS REST uç noktası kümesi.

  • Cihaz uç noktaları: Kimlik kayıt defterindeki her cihaz için bir uç nokta kümesi. Not edilen durumlar dışında, bu uç noktalar MQTT v3.1.1, HTTPS 1.1 ve AMQP 1.0 protokolleri kullanılarak kullanıma sunulur. AMQP ve MQTT, 443 numaralı bağlantı noktasındaki WebSockets üzerinden de kullanılabilir. Bu cihaz uç noktaları şunlardır:

    • Cihazdan buluta ileti gönderme

    • Buluttan cihaza iletileri alma

    • Dosya karşıya yüklemelerini başlatma

    • Cihaz ikizi özelliklerini alma ve güncelleştirme (HTTPS desteklenmez)

    • Doğrudan yöntem istekleri alma (HTTPS desteklenmez)

  • Hizmet uç noktaları: Çözüm arka ucunuzun cihazlarınızla iletişim kurması için bir uç nokta kümesi. Bir özel durumla, bu uç noktalar yalnızca WebSockets protokolleri üzerinden AMQP ve AMQP kullanılarak kullanıma sunulur. Doğrudan yöntem çağırma uç noktası HTTPS protokolü üzerinden kullanıma sunulur.

    • Cihazdan buluta iletileri alma: Bu uç nokta, ileti yönlendirme kavramlarında ele alınan yerleşik uç noktadır. Arka uç hizmeti, cihazlarınız tarafından gönderilen cihazdan buluta iletileri okumak için bunu kullanabilir. Bu yerleşik uç noktaya ek olarak IoT hub'ınızda özel uç noktalar oluşturabilirsiniz.

    • Buluttan cihaza ileti gönderme ve teslim bildirimleri alma

    • Dosya karşıya yükleme bildirimlerini alma

    • Doğrudan yöntemi çağırma

Azure IoT Hub SDK'ları makalesinde bu uç noktalara erişmenin çeşitli yolları açıklanmaktadır.

Tüm IoT Hub uç noktaları TLS protokolünü kullanır ve şifrelenmemiş/güvenli olmayan kanallarda hiçbir uç nokta gösterilmez.

Önemli

X.509 sertifika yetkilisi (CA) kimlik doğrulamasını kullanan cihazlar için aşağıdaki işlevler henüz genel kullanıma sunulmamaktadır ve önizleme modunun etkinleştirilmesi gerekir:

  • HTTPS, WebSockets üzerinden MQTT ve WebSockets protokolleri üzerinden AMQP.
  • Dosya yüklemeleri (tüm protokoller).

Bu özellikler genellikle X.509 parmak izi kimlik doğrulaması kullanan cihazlarda kullanılabilir. IoT Hub ile X.509 kimlik doğrulaması hakkında daha fazla bilgi edinmek için bkz . Desteklenen X.509 sertifikaları.

İleti yönlendirme için özel uç noktalar

İleti yönlendirme için uç nokta görevi görmesi için Azure aboneliklerinizdeki mevcut Azure hizmetlerini IoT hub'ınıza bağlayabilirsiniz. Bu uç noktalar hizmet uç noktaları gibi davranır ve ileti yolları için havuz olarak kullanılır. Cihazlar doğrudan bu uç noktalara yazamaz. İleti yönlendirme hakkında daha fazla bilgi için bkz . Farklı uç noktalara cihazdan buluta ileti göndermek için IoT Hub ileti yönlendirmeyi kullanma.

IoT Hub şu anda özel uç nokta olarak aşağıdaki Azure hizmetlerini desteklemektedir:

  • Depolama kapsayıcıları
  • Event Hubs
  • Service Bus Kuyrukları
  • Service Bus Konuları
  • Cosmos DB

Hub başına uç nokta sınırları için bkz . Kotalar ve azaltma.

Yerleşik uç nokta

Yerleşik uç noktadan (iletiler/olaylar) cihazdan buluta iletileri almak için standart Event Hubs tümleştirmesini ve SDK'ları kullanabilirsiniz. Herhangi bir yol oluşturulduktan sonra, bu uç noktaya bir yol oluşturulmadığı sürece veriler yerleşik uç noktaya akmaya son verir. Hiçbir yol oluşturulmasa bile, iletileri yerleşik uç noktaya yönlendirmek için bir geri dönüş yolu etkinleştirilmelidir. Portalı veya CLI'yi kullanarak hub'ınızı oluşturursanız geri dönüş varsayılan olarak etkinleştirilir.

Yönlendirme uç noktası olarak Azure Depolama

IoT Hub'ın iletileri yönlendirebileceği iki depolama hizmeti vardır: Azure Blob Depolama ve Azure Data Lake Storage 2. Nesil (ADLS 2. Nesil) hesapları. Bunların her ikisi de depolama alanları için blobları kullanır.

IoT Hub, Azure Depolama'ya Apache Avro biçiminde ve JSON biçiminde veri yazmayı destekler. Varsayılan değer AVRO'dur. JSON kodlamasını kullanmak için contentType özelliğini application/json ve contentEncoding özelliğini ileti sistemi özelliklerinde UTF-8 olarak ayarlayın. Bu değerlerin ikisi de büyük/küçük harfe duyarlı değildir. İçerik kodlaması ayarlanmadıysa IoT Hub iletileri 64 tabanında kodlanmış biçimde yazar.

Kodlama biçimi yalnızca blob depolama uç noktası yapılandırıldığında ayarlanabilir; mevcut bir uç nokta için düzenlenemez.

IoT Hub, toplu iş belirli bir boyuta ulaştığında veya belirli bir süre geçtiğinde iletileri toplu işler ve depolama alanına veri yazar. IoT Hub varsayılan olarak şu dosya adlandırma kuralını kullanır: {iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}.

Herhangi bir dosya adlandırma kuralı kullanabilirsiniz, ancak listelenen tüm belirteçleri kullanmanız gerekir. Yazacak veri yoksa IoT Hub boş bir bloba yazar.

Bölüm varsayımlarında bulunmadan tüm blobların veya dosyaların okunmasını sağlamak için blobları veya dosyaları listelemenizi ve sonra bunlar üzerinde yineleme yapmanızı öneririz. Bölüm aralığı, Microsoft tarafından başlatılan bir yük devretme veya IoT Hub el ile yük devretme sırasında değişebilir. Blob listesini listelemek için Blobları Listele API'sini veya dosya listesi için AdLS 2. Nesil API'sini listeleyebilirsiniz. Örneğin:

public void ListBlobsInContainer(string containerName, string iothub)
{
    var storageAccount = CloudStorageAccount.Parse(this.blobConnectionString);
    var cloudBlobContainer = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName);
    if (cloudBlobContainer.Exists())
    {
        var results = cloudBlobContainer.ListBlobs(prefix: $"{iothub}/");
        foreach (IListBlobItem item in results)
        {
            Console.WriteLine(item.Uri);
        }
    }
}

Azure Data Lake 2. Nesil uyumlu bir depolama hesabı oluşturmak için yeni bir V2 depolama hesabı oluşturun ve aşağıdaki görüntüde gösterildiği gibi Gelişmiş sekmesinin Data Lake Storage 2. Nesil bölümünde Hiyerarşik ad alanını etkinleştir'i seçin:

Azure Date Lake 2. Nesil depolamanın nasıl seçildiğini gösteren ekran görüntüsü.

Yönlendirme uç noktası olarak Service Bus kuyrukları ve Service Bus konuları

IoT Hub uç noktaları olarak kullanılan Service Bus kuyruklarında ve konu başlıklarında Oturumlar veya Yinelenen Algılama etkin olmamalıdır. Bu seçeneklerden biri etkinleştirilirse, uç nokta Azure portalında Ulaşılamıyor olarak görünür.

Yönlendirme uç noktası olarak Event Hubs

Yerleşik Event Hubs uyumlu uç noktasının dışında, verileri Event Hubs türündeki özel uç noktalara da yönlendirebilirsiniz.

Yönlendirme uç noktası olarak Azure Cosmos DB

IoT Hub'dan doğrudan Azure Cosmos DB'ye veri gönderebilirsiniz. IoT Hub, JSON'da Cosmos DB'ye (ileti içerik türünde belirtilmişse) veya temel 64 kodlu ikili dosya olarak yazmayı destekler.

Yüksek ölçekli senaryoları desteklemek için Cosmos DB uç noktası için yapay bölüm anahtarlarını etkinleştirebilirsiniz. Cosmos DB bir hiper ölçek veri deposu olduğundan, buna yazılan tüm veriler/belgeler mantıksal bölümü temsil eden bir alan içermelidir. Her mantıksal bölümün boyutu en fazla 20 GB'tır. Bölüm anahtarı özellik adını Bölüm anahtarı adı bölümünde belirtebilirsiniz. Bölüm anahtarı özellik adı kapsayıcı düzeyinde tanımlanır ve ayarlandıktan sonra değiştirilemez.

Tahmini veri biriminize göre Bölüm anahtarı şablonunda bir şablon belirterek yapay bölüm anahtarı değerini yapılandırabilirsiniz. Örneğin, üretim senaryolarında mantıksal bölümünüzün bir ay içinde en fazla 20 GB sınırına yaklaşması beklenebilir. Bu durumda, cihaz kimliği ve ay birleşimi olarak yapay bir bölüm anahtarı tanımlayabilirsiniz. Oluşturulan bölüm anahtarı değeri, her yeni Cosmos DB kaydı için bölüm anahtarı özelliğine otomatik olarak eklenir ve her cihaz için her ay mantıksal bölümlerin oluşturulması sağlanır.

Dikkat

Cosmos DB'de kimlik doğrulaması için sistem tarafından atanan yönetilen kimliği kullanıyorsanız, Kimliğe Cosmos DB Yerleşik Veri Katkıda Bulunanı yerleşik rol tanımını atamak için Azure CLI veya Azure PowerShell kullanmanız gerekir. Cosmos DB için rol ataması şu anda Azure portalında desteklenmemektedir. Çeşitli roller hakkında daha fazla bilgi için bkz . Azure Cosmos DB için rol tabanlı erişimi yapılandırma. CLI aracılığıyla rol atamayı anlamak için bkz . Azure Cosmos DB SQL rol kaynaklarını yönetme.

Uç Nokta Durumu

Uç noktaların sistem durumunu almak için REST API Get Endpoint Health kullanabilirsiniz. Uç nokta bu durumlardan birinde olduğunda gecikme süresinin daha yüksek olmasını beklediğimiz için uç nokta sistem durumu ölü veya iyi durumda olmadığında hataları belirlemek ve hatalarını ayıklamak için yönlendirme iletisi gecikme süresiyle ilgili IoT Hub yönlendirme ölçümlerini kullanmanızı öneririz. IoT Hub ölçümlerini kullanma hakkında daha fazla bilgi edinmek için bkz . IoT Hub'ı izleme.

Sistem Durumu Açıklama
sağlıklı Uç nokta iletileri beklendiği gibi kabul ediyor.
sağlıksız Uç nokta iletileri kabul ediyor ve IoT Hub bu uç noktaya ileti göndermek için yeniden deneniyor.
bilinmiyor IoT Hub bu uç noktaya ileti teslim etmeye çalışmadı.
Bozulmuş Uç nokta beklenenden daha yavaş iletileri kabul ediyor veya iyi durumda olmayan bir durumdan kurtarılıyor.
ölü IoT Hub artık bu uç noktaya ileti teslim etmemeye devam ediyor. Bu uç noktaya ileti göndermek için yeniden denemeler başarısız oldu.

Sonraki adımlar

Bu konular hakkında daha fazla bilgi edinin: