IoT Hub Cihaz Akışları (önizleme)
Azure IoT Hub cihaz akışları , çeşitli buluttan cihaza iletişim senaryoları için güvenli çift yönlü TCP tünellerinin oluşturulmasını kolaylaştırır. Cihaz akışı, cihazınızla hizmet uç noktaları arasında ara sunucu işlevi gören bir IoT Hub *akış uç noktası tarafından aracılık edilir. Diyagramda gösterilen bu kurulum, özellikle cihazlar bir ağ güvenlik duvarının arkasında olduğunda veya özel bir ağın içinde bulunduğunda kullanışlıdır. Bu nedenle IoT Hub cihaz akışları, müşterilerin ioT cihazlarına güvenlik duvarı dostu bir şekilde ve gelen veya giden ağ güvenlik duvarı bağlantı noktalarını geniş bir şekilde açmaya gerek kalmadan ulaşma sıyrını gidermeye yardımcı olur.
IoT Hub cihaz akışlarını kullanarak cihazların güvenliği korunur ve yalnızca 443 numaralı bağlantı noktası üzerinden IoT hub'ına giden TCP bağlantılarını açması gerekir. Bir akış oluşturulduktan sonra, hizmet tarafı ve cihaz tarafı uygulamaların her biri ham baytları göndermek ve birbirlerine almak için bir WebSocket istemci nesnesine programlı erişime sahip olur. Bu tünel tarafından sağlanan güvenilirlik ve sıralama garantileri TCP ile aynı düzeydedir.
Sosyal haklar
IoT Hub cihaz akışları aşağıdaki avantajları sağlar:
Güvenlik duvarı dostu güvenli bağlantı: IoT cihazlarına, cihazda veya ağ çevrelerinde gelen güvenlik duvarı bağlantı noktası açılmadan hizmet uç noktalarından ulaşılabilir (yalnızca 443 numaralı bağlantı noktası üzerinden IoT Hub'a giden bağlantı gereklidir).
Kimlik doğrulaması: Tünelin hem cihaz hem de hizmet tarafının ilgili kimlik bilgilerini kullanarak IoT Hub ile kimlik doğrulaması gerçekleştirmesi gerekir.
Şifreleme: IoT Hub cihaz akışları varsayılan olarak TLS özellikli bağlantıları kullanır. Bu faktör, uygulamanın şifreleme kullanıp kullanmadığına bakılmaksızın trafiğin her zaman şifrelenmesini sağlar.
Bağlantının basitliği: Çoğu durumda cihaz akışlarının kullanılması, IoT cihazlarına bağlantıyı etkinleştirmek için sanal özel ağların karmaşık kurulumu gereksinimini ortadan kaldırır.
TCP/IP yığınıyla uyumluluk: IoT Hub cihaz akışları TCP/IP uygulama trafiğini barındırabilir. Bu yaklaşım, çok çeşitli özel ve standartlara dayalı protokollerin bu özelliği kullanabileceği anlamına gelir.
Özel ağ kurulumlarında kullanım kolaylığı: Hizmet, cihazın IP adresi yerine cihaz kimliğine başvurarak bir cihazla iletişim kurabilir. Bu durum, bir cihazın özel ağ içinde bulunduğu ve özel IP adresine sahip olduğu veya IP adresinin dinamik olarak atandığı ve hizmet tarafında bilinmediği durumlarda kullanışlıdır.
Cihaz akışı iş akışları
Hizmet, cihaz kimliğini sağlayarak bir cihaza bağlanmayı istediğinde bir cihaz akışı başlatılır. Bu iş akışı özellikle SSH ve RDP dahil olmak üzere bir istemci/sunucu iletişim modeline uyar. Bu modelde kullanıcı, SSH veya RDP istemci programı kullanarak cihazda çalışan SSH veya RDP sunucusuna uzaktan bağlanmayı hedeflemektedir.
Cihaz akışı oluşturma işlemi, cihaz, hizmet, IoT hub'ın ana ve akış uç noktaları arasında bir anlaşma içerir. IoT hub'ının ana uç noktası bir cihaz akışının oluşturulmasını düzenlerken, akış uç noktası hizmet ve cihaz arasında akan trafiği işler.
Cihaz akışı oluşturma akışı
SDK kullanılarak bir cihaz akışının program aracılığıyla oluşturulması, şekilde de gösterilen aşağıdaki adımları içerir:
Cihaz uygulaması, cihaza yeni bir cihaz akışı başlatıldığında bildirim almak için önceden bir geri çağırma kaydeder. Bu adım genellikle cihaz önyükleme yapıp IoT Hub'a bağlandığında gerçekleştirilir.
Hizmet tarafı programı, gerektiğinde cihaz kimliğini (IP adresini değil ) sağlayarak bir cihaz akışı başlatır.
IoT hub, 1. adımda kaydedilen geri çağırmayı çağırarak cihaz tarafı programı bildirir. Cihaz, akış başlatma isteğini kabul edebilir veya reddedebilir. Bu mantık uygulama senaryonuza özgü olabilir. Cihaz akış isteğini reddederse, IoT Hub hizmete uygun olarak bilgi verir; aksi takdirde, aşağıdaki adımlar gerçekleşir.
Cihaz, 443 numaralı bağlantı noktası üzerinden akış uç noktasına güvenli bir giden TCP bağlantısı oluşturur ve bağlantıyı bir WebSocket'e yükselter. Akış uç noktasının URL'si ve kimlik doğrulaması için kullanılacak kimlik bilgileri, 3. adımda gönderilen isteğin bir parçası olarak IoT Hub tarafından cihaza sağlanır.
Hizmete, cihazın akışı kabul etme sonucu bildirilir ve akış uç noktasına kendi WebSocket istemcisini oluşturmaya devam eder. Benzer şekilde, akış uç noktası URL'sini ve kimlik doğrulama bilgilerini IoT Hub'dan alır.
Yukarıdaki el sıkışma işleminde:
El sıkışma işlemi 60 saniye içinde tamamlanmalıdır (adım 2 ile 5 arasında), aksi takdirde el sıkışma bir zaman aşımıyla başarısız olur ve hizmete uygun olarak bildirim gönderilir.
Yukarıdaki akış oluşturma akışı tamamlandıktan sonra akış uç noktası bir ara sunucu görevi görür ve hizmet ile cihaz arasındaki trafiği ilgili WebSockets üzerinden aktarır.
Cihaz ve hizmetin hem IoT Hub'ın ana uç noktasına hem de 443 numaralı bağlantı noktası üzerinden akış uç noktasına giden bağlantı olması gerekir. Bu uç noktaların URL'sini IoT Hub'ın portalındaki Genel Bakış sekmesinde bulabilirsiniz.
Yerleşik bir akışın güvenilirlik ve sıralama garantileri TCP ile aynı düzeydedir.
IoT Hub ve akış uç noktasına yapılan tüm bağlantılar TLS kullanır ve şifrelenir.
Sonlandırma akışı
Kurulan akış, ağ geçidine yönelik TCP bağlantılarının bağlantısı kesildiğinde (hizmet veya cihaz tarafından) sonlandırılır. Bu eylem, cihazda veya hizmet programlarında WebSocket'i kapatarak veya bir ağ bağlantısı zaman aşımı veya işlem hatası durumunda isteğe bağlı olarak gerçekleşebilir. Cihaz veya hizmetin akış uç noktasına olan bağlantısı sonlandırıldığında, diğer TCP bağlantısı da (zorla) sonlandırılır ve gerekirse hizmet ve cihaz akışı yeniden oluşturmakla sorumludur.
Bağlantı gereksinimleri
Cihaz akışının hem cihaz hem de hizmet tarafı, IoT Hub'a ve akış uç noktasına TLS özellikli bağlantılar kurabilmelidir. Bu durum, 443 numaralı bağlantı noktası üzerinden bu uç noktalara giden bağlantı gerektirir. Bu uç noktalarla ilişkilendirilmiş ana bilgisayar adı, şekilde gösterildiği gibi IoT Hub'ın Genel Bakış sekmesinde bulunabilir:
Alternatif olarak, uç nokta bilgileri hub'ın özellikler bölümü (özellikle property.hostname
ve property.deviceStreams
anahtarlar) altında Azure CLI kullanılarak alınabilir.
az iot hub devicestream show --name <YourIoTHubName>
Çıkış, hub'ınızın cihaz ve hizmetinin bir cihaz akışı oluşturmak için bağlanması gerekebilecek tüm uç noktaların JSON nesnesidir.
{
"streamingEndpoints": [
"https://<YourIoTHubName>.<region-stamp>.streams.azure-devices.net"
]
}
Not
Azure CLI sürüm 2.0.57 veya üzerini yüklediğinizden emin olun. Azure CLI Yükleme sayfasından en son sürümü indirebilirsiniz.
Cihaz akış uç noktalarına giden bağlantıya izin ver
Bu makalenin başında belirtildiği gibi cihazınız, cihaz akışı başlatma işlemi sırasında IoT Hub akış uç noktasına giden bir bağlantı oluşturur. Cihaz veya ağındaki güvenlik duvarlarınızın 443 numaralı bağlantı noktası üzerinden akış ağ geçidine giden bağlantıya izin vermesi gerekir (iletişimin TLS kullanılarak şifrelenmiş bir WebSocket bağlantısı üzerinden gerçekleştiğini unutmayın).
Cihaz akış uç noktasının ana bilgisayar adı, Azure IoT Hub portalında Genel Bakış sekmesinin altında bulunabilir.
Alternatif olarak, Azure CLI kullanarak bu bilgileri bulabilirsiniz:
az iot hub devicestream show --name <YourIoTHubName>
Not
Azure CLI sürüm 2.0.57 veya üzerini yüklediğinizden emin olun. Azure CLI Yükleme sayfasından en son sürümü indirebilirsiniz.
Cihaz Akışları kaynak günlükleri aracılığıyla sorun giderme
IoT Hub'ınız tarafından yayılan cihaz akışları için kaynak günlüklerini toplamak üzere Azure İzleyici'yi ayarlayabilirsiniz. Bu yaklaşım sorun giderme senaryolarında yararlı olabilir.
IoT Hub'ınızın cihaz akış günlüklerini Azure İzleyici Günlüklerine göndermek üzere bir tanılama ayarı oluşturmak için şu adımları izleyin:
Azure portalında IoT hub'ınıza gidin. Sol bölmedeki İzleme'nin altında Tanılama ayarları'nı seçin. Ardından Tanılama ayarı ekle'yi seçin.
Tanılama ayarınız için bir ad sağlayın ve günlük listesinden DeviceStreams'i seçin. Ardından Log Analytics'e Gönder'i seçin. Mevcut bir Log Analytics çalışma alanını seçmeniz veya yeni bir çalışma alanı oluşturmanız için size yol gösterilir.
Cihaz akış günlüklerinizi Log Analytics çalışma alanına göndermek için bir tanılama ayarı oluşturduktan sonra, Azure portalında IoT hub'ınızın sol bölmesindeki İzleme'nin altında Günlükler'i seçerek günlüklere erişebilirsiniz. Cihaz akışları günlükleri tabloda görünür
AzureDiagnostics
ve öğesine sahiptirCategory=DeviceStreams
. Günlüklerin tabloda görünmesi işlemden sonra birkaç dakika sürebilir.Burada gösterildiği gibi, hedef cihazın kimliği ve işlemin sonucu günlüklerde de kullanılabilir.
Azure İzleyici'yi IoT Hub ile kullanma hakkında daha fazla bilgi edinmek için bkz . IoT Hub'ı izleme. IoT Hub için kullanılabilen tüm kaynak günlükleri, ölçümler ve tablolar hakkında bilgi için bkz . Azure IoT Hub veri başvurularını izleme.
Bölgesel kullanılabilirlik
Genel önizleme sırasında IoT Hub cihaz akışları Orta ABD, Doğu ABD EUAP, Kuzey Avrupa ve Güneydoğu Asya bölgelerinde kullanılabilir. Hub'ınızı bu bölgelerden birinde oluşturduğunuzdan emin olun.
SDK kullanılabilirliği
Her akışın iki tarafı (cihaz ve hizmet tarafında) tüneli oluşturmak için IoT Hub SDK'sını kullanır. Genel önizleme sırasında müşteriler aşağıdaki SDK dillerinden birini seçebilir:
C ve C# SDK'sının cihaz tarafında cihaz akışları desteklenir.
NodeJS ve C# SDK'sı hizmet tarafında cihaz akışlarını destekler.