Publikování a přihlášení k odběru Azure IoT Edge (Preview)
Platí pro:
IoT Edge 1,2
K publikování a odběru Azure IoT Edge MQTT můžete použít zprostředkovatele MQTT. Tento článek ukazuje, jak se připojit k tomuto zprostředkovateli, publikovat zprávy a přihlásit se k jejich odběru prostřednictvím uživatelem definovaných témat a jak IoT Hub primitiv zasílání zpráv. Zprostředkovatel IoT Edge MQTT je integrovaný v centru IoT Edge. Další informace najdete v tématu možnosti zprostředkování služby IoT Edge Hub.
Poznámka
IoT Edge MQTT broker je aktuálně ve verzi Public Preview.
Požadavky
Účet Azure s platným předplatným
Azure CLI s
azure-iotnainstalovaným rozšířením CLI Další informace najdete v postupu instalace rozšíření Azure IoT pro Azure CLI.Je IoT Hub SKU F1, S1, S2 nebo S3.
Mít nasazené zařízení IoT Edge verze 1.2 nebo vyšší, včetně modulů edgeAgent a edgeHub verze 1.2 nebo novější, se zapnutou funkcí zprostředkovatele MQTT a portem edgeHub 1883 vázaná na hostitele, aby bylo možné povolit připojení bez tls. Na virtuální IoT Edge Azure můžete automaticky nasadit verzi 1.2 podle kroků popsaných v tomto článku. Vzhledem IoT Edge, že zprostředkovatel MQTT je aktuálně ve verzi Public Preview, musíte také nastavit následující proměnné prostředí na hodnotu true v modulu edgeHub, abyste umožnili zprostředkovatele MQTT:
Name Hodnota experimentalFeatures__enabledtrueexperimentalFeatures__mqttBrokerEnabledtruePokud chcete rychle vytvořit IoT Edge, které splňuje tato kritéria spolu se zásadou otevřené autorizace na , můžete použít tento ukázkový
test_topicmanifest nasazení v příloze:Uložte soubor nasazení do pracovní složky.
Použijte toto nasazení na IoT Edge zařízení pomocí následujícího příkazu Azure CLI. Další informace o tomto příkazu najdete v tématu Nasazení modulů Azure IoT Edge pomocí Azure CLI.
az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [deployment file path]
Klienti Mosquitto nainstalovaní na IoT Edge zařízení. Tento článek používá oblíbené klienty Mosquitto MOSQUITTO_PUB a MOSQUITTO_SUB. Místo toho je možné použít jiné klienty MQTT. Spuštěním následujícího příkazu nainstalujte klienty Mosquitto na zařízení s Ubuntu:
sudo apt-get update && sudo apt-get install mosquitto-clientsNeinstalujte server Mosquitto, protože může způsobit blokování portů MQTT (8883 a 1883) a konflikt s centrem IoT Edge hubem.
Připojení do IoT Edge hubu
Připojení k IoT Edge Hubu se řídí stejným postupem jako v článku připojení k IoT Hub s obecným klientem MQTT nebo v koncepčním popisu článku IoT Edge Hubu. Jedná se o tyto kroky:
- Volitelně klient MQTT vytvoří zabezpečené připojení k centru IoT Edge pomocí protokolu TLS (Transport Layer Security).
- Klient MQTT se ověřuje v IoT Edge centru
- Centrum IoT Edge autorizuje klienta MQTT podle zásad autorizace.
Zabezpečené připojení (TLS)
Protokol TLS (Transport Layer Security) se používá k navázání šifrované komunikace mezi klientem a IoT Edge hubem.
Pokud chcete protokol TLS zakázat, použijte port 1883(MQTT) a vytvořte vazbu kontejneru edgeHub na port 1883.
Pokud chcete povolit protokol TLS a klient se připojí na portu 8883 (MQTTS) ke zprostředkovateli MQTT, iniciuje se kanál TLS. Zprostředkovatel odešle svůj řetěz certifikátů, který klient potřebuje ověřit. Aby bylo možné ověřit řetěz certifikátů, musí být kořenový certifikát zprostředkovatele MQTT nainstalovaný jako důvěryhodný certifikát na klientovi. Pokud kořenový certifikát není důvěryhodný, klientská knihovna bude zamítnuta zprostředkovatelem MQTT s chybou ověření certifikátu. Postup instalace tohoto kořenového certifikátu zprostředkovatele na straně klienta je stejný jako v případě transparentní brány a je popsaný v dokumentaci k přípravě podřízeného zařízení.
Authentication
Aby se klient MQTT ověřil sám, musí nejprve odeslat paket CONNECT zprostředkovateli MQTT, aby zahájil připojení v jeho názvu. Tento paket poskytuje tři ověřovací informace: client identifier , username a a password :
Pole je název zařízení nebo modulu
client identifierv IoT Hub. Používá následující syntaxi:Pro zařízení:
<device_name>Pro modul:
<device_name>/<module_name>
Abyste se mohli připojit ke zprostředkovateli MQTT, musí být zařízení nebo modul zaregistrované v IoT Hub.
Zprostředkovatel nepovolí připojení od více klientů pomocí stejných přihlašovacích údajů. Zprostředkovatel odpojí již připojeného klienta, pokud se druhý klient připojí pomocí stejných přihlašovacích údajů.
Pole je odvozeno od názvu zařízení nebo modulu a název IoTHubu, do které zařízení patří, pomocí
usernamenásledující syntaxe:Pro zařízení:
<iot_hub_name>.azure-devices.net/<device_name>/?api-version=2018-06-30Pro modul:
<iot_hub_name>.azure-devices.net/<device_name>/<module_name>/?api-version=2018-06-30
Pole
passwordpaketu CONNECT závisí na režimu ověřování:- Při použití ověřování pomocí symetrických klíčůje
passwordpolem token SAS. - Při použití ověřování X.509 podepsanéhosvým držitelem
passwordse pole nenachádí. V tomto režimu ověřování se vyžaduje kanál TLS. Klient se musí připojit k portu 8883, aby navázání připojení TLS. Během metody handshake protokolu TLS si zprostředkovatel MQTT vyžádá klientský certifikát. Tento certifikát slouží k ověření identity klienta, a proto pole není potřeba později při odeslánípasswordpaketu CONNECT. Odeslání klientského certifikátu i pole hesla povede k chybě a připojení se zavře. Knihovny MQTT a klientské knihovny TLS obvykle mají způsob, jak odeslat klientský certifikát při inicializaci připojení. Podrobný příklad najdete v části Použití certifikátu X509 pro ověřování klientů.
- Při použití ověřování pomocí symetrických klíčůje
Moduly nasazené pomocí IoT Edge používají ověřování pomocí symetrických klíčů a volají místní rozhraní API pro úlohy IoT Edge, aby programově nasazoval token SAS, i když jsou offline.
Autorizace
Jakmile se klient MQTT ověří v IoT Edge centru, musí mít oprávnění k připojení. Po připojení musí mít oprávnění k publikování nebo odběru konkrétních témat. Tyto autorizace uděluje centrum IoT Edge na základě zásad autorizace. Zásady autorizace jsou sady příkazů vyjádřených jako struktura JSON, která se odesílá do centra IoT Edge prostřednictvím svého dvojčete. Upravte dvojče IoT Edge hubu a nakonfigurujte zásady autorizace.
Poznámka
Ve verzi Public Preview podporuje pouze Azure CLI nasazení obsahující zásady autorizace zprostředkovatele MQTT. Rozhraní Azure Portal v současné době nepodporuje úpravy dvojčete centra IoT Edge a jeho zásad autorizace.
Každý příkaz zásad autorizace se skládá z kombinace identities vlastností , allow nebo deny operations effects, a resources :
identitiespopište předmět zásad. Musí být namapovanéusernamena klienty odeslané v jejich paketu CONNECT a musí být ve formátu<iot_hub_name>.azure-devices.net/<device_name>nebo<iot_hub_name>.azure-devices.net/<device_name>/<module_name>.allowEfektydenynebo definují, jestli se mají operace povolit nebo odepřít.operationsdefinujte akce, které se mají autorizovat.mqtt:connect,mqtt:publishmqtt:subscribea jsou tři podporované akce dnes.resourcesdefinujte objekt zásady. Může to být téma nebo vzor tématu definovaný pomocí zástupných znaků MQTT.
Níže je příklad zásad autorizace, které výslovně neumožňují připojení klienta rogue_client, umožňují připojení všech klientů Azure IoT a umožňují "sensor_1" publikovat do tématu events/alerts .
{
"$edgeHub":{
"properties.desired":{
"schemaVersion":"1.2",
"routes":{
"Route1":"FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration":{
"timeToLiveSecs":7200
},
"mqttBroker":{
"authorizations":[
{
"identities":[
"<iot_hub_name>.azure-devices.net/rogue_client"
],
"deny":[
{
"operations":[
"mqtt:connect"
]
}
]
},
{
"identities":[
"{{iot:identity}}"
],
"allow":[
{
"operations":[
"mqtt:connect"
]
}
]
},
{
"identities":[
"<iot_hub_name>.azure-devices.net/sensor_1"
],
"allow":[
{
"operations":[
"mqtt:publish"
],
"resources":[
"events/alerts"
]
}
]
}
]
}
}
}
}
Při psaní zásad autorizace je dobré mít na paměti několik věcí:
Vyžaduje schéma
$edgeHubdvojčat verze 1.2.Ve výchozím nastavení jsou všechny operace odepřeny.
Příkazy autorizace se vyhodnocují v pořadí, ve které jsou uvedeny v definici JSON. Začíná tím, že se podíváme na a
identitiespak vybereme první příkazy allow nebo deny, které odpovídají požadavku. V případě konfliktů mezi příkazy allow a deny příkaz odepřít vyhrává.V zásadách autorizace je možné použít několik proměnných (například nahrazení):
{{iot:identity}}představuje identitu aktuálně připojeného klienta. Například identitu zařízení, jako je<iot_hub_name>.azure-devices.net/myDevice, nebo identitu modulu, jako je<iot_hub_name>.azure-devices.net/myEdgeDevice/SampleModule.{{iot:device_id}}představuje identitu aktuálně připojeného zařízení. Například identitu zařízení, jako je , nebomyDeviceidentitu zařízení, ve které je modul spuštěný, napříkladmyEdgeDevice.{{iot:module_id}}představuje identitu aktuálně připojeného modulu. Tato proměnná je prázdná pro připojená zařízení nebo identitu modulu, jako jeSampleModule.{{iot:this_device_id}}představuje identitu zařízení IoT Edge, na které běží zásady autorizace. Například,myIoTEdgeDevice.
Autorizace témat služby IoT Hub se zpracovávají trochu jinak než témata definovaná uživatelem. Tady jsou klíčové body, které je dobré si zapamatovat:
- Zařízení nebo moduly Azure IoT potřebují pro připojení ke zprostředkovateli MQTT IoT Edge explicitní autorizační pravidlo. Níže jsou uvedené výchozí zásady autorizace připojení.
- Zařízení nebo moduly Azure IoT mají ve výchozím nastavení přístup k vlastním tématům služby IoT Hub bez explicitního autorizačního pravidla. Autorizace však v takovém případě vychází z vztahů nadřazených a podřízených a tyto relace je nutné nastavit. IoT Edge moduly se automaticky nastaví jako děti jejich IoT Edge zařízení, ale zařízení musí být explicitně nastavená jako děti jejich IoT Edge brány.
Tady jsou výchozí zásady autorizace, které je možné použít k povolení připojení všech modulů nebo zařízení Azure IoT ke zprostředkovateli:
{
"$edgeHub":{
"properties.desired":{
"schemaVersion":"1.2",
"mqttBroker":{
"authorizations":[
{
"identities": [
"{{iot:identity}}"
],
"allow":[
{
"operations":[
"mqtt:connect"
]
}
]
}
]
}
}
}
}
Teď, když rozumíte tomu, jak se připojit ke zprostředkovateli MQTT IoT Edge, se podíváme, jak ho můžete použít k publikování a přihlášení k odběru zpráv nejprve v uživatelem definovaných tématech, pak v tématech centra IoT a nakonec k jinému zprostředkovateli MQTT.
Publikování a přihlášení k odběru témat definovaných uživatelem
V tomto článku použijete jednoho klienta s názvem sub_client který se přihlásí k odběru tématu, a dalšího klienta s názvem pub_client který publikuje do tématu. Použijeme ověřování pomocí symetrického klíče, ale totéž je možné provést pomocí ověřování podepsaného svým držitelem X.509 nebo ověřování podepsaného certifikační autoritou X.509.
Vytvoření vydavatelů a předplatitelů klientů
Vytvořte dvě zařízení IoT v IoT Hub a získejte jejich hesla. Pomocí Azure CLI z terminálu:
Vytvořte dvě zařízení IoT v IoT Hub:
az iot hub device-identity create --device-id sub_client --hub-name <iot_hub_name> az iot hub device-identity create --device-id pub_client --hub-name <iot_hub_name>Nastavte nadřazený prvek na vaše IoT Edge zařízení:
az iot hub device-identity parent set --device-id sub_client --hub-name <iot_hub_name> --pd <edge_device_id> az iot hub device-identity parent set --device-id pub_client --hub-name <iot_hub_name> --pd <edge_device_id>Získejte jejich hesla vygenerováním tokenu SAS:
Pro zařízení:
az iot hub generate-sas-token -n <iot_hub_name> -d <device_name> --key-type primary --du 3600kde 3600 je doba trvání tokenu SAS v sekundách (například 3600 = 1 hodina).
Pro modul:
az iot hub generate-sas-token -n <iot_hub_name> -d <device_name> -m <module_name> --key-type primary --du 3600kde 3600 je doba trvání tokenu SAS v sekundách (například 3600 = 1 hodina).
Zkopírujte token SAS, což je hodnota odpovídající klíči sas z výstupu. Tady je příklad výstupu z výše uvedeného příkazu Azure CLI:
{ "sas": "SharedAccessSignature sr=example.azure-devices.net%2Fdevices%2Fdevice_1%2Fmodules%2Fmodule_a&sig=H5iMq8ZPJBkH3aBWCs0khoTPdFytHXk8VAxrthqIQS0%3D&se=1596249190" }
Autorizace vydavatelů a předplatitelů klientů
Pokud chcete autorizovat vydavatele a odběratele, upravte IoT Edge dvojče centra v IoT Edge nasazení, které obsahuje následující zásady autorizace.
Poznámka
V současné době je možné nasazení obsahující vlastnosti autorizace MQTT použít pouze pro IoT Edge zařízení pomocí Azure CLI.
{
"$edgeHub":{
"properties.desired":{
"schemaVersion":"1.2",
"mqttBroker":{
"authorizations":[
{
"identities": [
"{{iot:identity}}"
],
"allow":[
{
"operations":[
"mqtt:connect"
]
}
]
},
{
"identities": [
"<iot_hub_name>.azure-devices.net/sub_client"
],
"allow":[
{
"operations":[
"mqtt:subscribe"
],
"resources":[
"test_topic"
]
}
],
},
{
"identities": [
"<iot_hub_name>.azure-devices.net/pub_client"
],
"allow":[
{
"operations":[
"mqtt:publish"
],
"resources":[
"test_topic"
]
}
]
}
]
}
}
}
}
Ověřování pomocí symetrických klíčů bez protokolu TLS
Přihlásit k odběru
Připojení svého sub_client MQTT ke zprostředkovateli MQTT a přihlaste se k odběru spuštěním následujícího příkazu na test_topic IoT Edge zařízení:
mosquitto_sub \
-t "test_topic" \
-i "sub_client" \
-u "<iot_hub_name>.azure-devices.net/sub_client/?api-version=2018-06-30" \
-P "<sas_token>" \
-h "<edge_device_address>" \
-V mqttv311 \
-p 1883
v <edge_device_address> = localhost tomto příkladu , protože klient běží na stejném zařízení jako IoT Edge.
Všimněte si, že v tomto prvním příkladu se používá port 1883 (MQTT) bez protokolu TLS. Aby to fungovalo, musí být port EdgeHub 1883 svázán s hostitelem prostřednictvím možností vytvoření. Příklad je uveden v části s předpokladem. Další příklad s portem 8883 (MQTTS) s povoleným protokolem TLS najdete v další části.
Klient sub_client MQTT je spuštěný a čeká na příchozí zprávy na test_topic .
Publikovat
Připojení svého pub_client MQTT do zprostředkovatele MQTT a publikuje zprávu ve stejném příkladu jako výše spuštěním následujícího příkazu na vašem IoT Edge zařízení z test_topic jiného terminálu:
mosquitto_pub \
-t "test_topic" \
-i "pub_client" \
-u "<iot_hub_name>.azure-devices.net/pub_client/?api-version=2018-06-30" \
-P "<sas_token>" \
-h "<edge_device_address>" \
-V mqttv311 \
-p 1883 \
-m "hello"
v <edge_device_address> = localhost tomto příkladu , protože klient běží na stejném zařízení jako IoT Edge.
Spuštěním příkazu obdrží sub_client MQTT zprávu "hello".
Ověřování symetrických klíčů pomocí protokolu TLS
Pokud chcete povolit protokol TLS, je nutné změnit port z 1883(MQTT) na 8883(MQTTS) a klienti musí mít kořenový certifikát zprostředkovatele MQTT, aby mohli ověřit řetěz certifikátů odeslaný zprostředkovatelem MQTT. Můžete to provést podle kroků uvedených v části Zabezpečené připojení (TLS).
Vzhledem k tomu, že klienti běží na stejném zařízení jako zprostředkovatel MQTT v příkladu výše, stejný postup platí i pro povolení protokolu TLS pomocí:
- Změna čísla portu z 1883 (MQTT) na 8883 (MQTTS)
- Předání kořenového certifikátu certifikační autority mosquitto_pub a mosquitto_sub pomocí parametru podobného
--cafile /certs/certs/azure-iot-test-only.root.ca.cert.pem - Předání skutečného názvu hostitele nastaveného v IoT Edge místo parametru názvu hostitele předaných klientům mosquitto_pub a mosquitto_sub, aby bylo možné ověřování
localhostřetězu certifikátů
Publikování a přihlášení k odběru IoT Hub témat
Skupiny SDK pro zařízení Azure IoT už umožňují klientům provádět IoT Hub, ale neumožňují publikování ani přihlášení k odběru uživatelem definovaných témat. IoT Hub lze provádět pomocí libovolných klientů MQTT pomocí sémantiky publikování a odběru, pokud jsou respektovány primitivní protokoly služby IoT Hub. Projdeme si specifika, abyste pochopili, jak tyto protokoly fungují.
Odesílání telemetrických dat do IoT Hub
Odesílání telemetrických dat do IoT Hub se podobá publikování v uživatelem definovaném tématu, ale pomocí konkrétního IoT Hub tématu:
- V případě zařízení se telemetrie odesílá v tématu:
devices/<device_name>/messages/events/ - V případě modulu se telemetrie odesílá v tématu:
devices/<device_name>/modules/<module_name>/messages/events/
Kromě toho vytvořte trasu, například k odesílání telemetrických dat z FROM /messages/* INTO $upstream IoT Edge MQTT do služby IoT Hub. Další informace o směrování najdete v tématu Deklarace tras.
Získání dvojčete
Získání dvojčete zařízení nebo modulu není typickým vzorem MQTT. Klient musí pro dvojče vydat žádost, IoT Hub bude obsluhovat.
Aby klient mohl přijímat dvojčata, musí se přihlásit k odběru IoT Hub $iothub/twin/res/# tématu. Tento název tématu se dědí z IoT Hub a všichni klienti se musí přihlásit k odběru stejného tématu. Neznamená to, že zařízení nebo moduly přijímají dvojče navzájem. IoT Hub a IoT Edge ví, které dvojče by se mělo doručit tam, i když všechna zařízení naslouchají stejnému názvu tématu.
Po odběru musí klient požádat o dvojče tak, že publikuje zprávu do konkrétního IoT Hub, kde je $iothub/twin/GET/?rid=<request_id>/# <request_id> libovolný identifikátor. IoT Hub pak odešle odpověď s požadovanými daty v tématu , ke kterému $iothub/twin/res/200/?rid=<request_id> se klient přihlásí k odběru. Tímto způsobem může klient spárovat své požadavky s odpověďmi.
Příjem oprav dvojčat
Pokud chce klient přijímat opravy dvojčat, musí se přihlásit k odběru speciálního tématu IoTHubu. $iothub/twin/PATCH/properties/desired/# Po odběru obdrží klient opravy dvojčat odeslané IoT Hub v tomto tématu.
Příjem přímých metod
Příjem přímé metody je podobný jako příjem úplných dvojčat s přidáním, že klient musí zpětně potvrdit, že přijal volání. Nejprve se klient přihlásí k odběru speciálního tématu služby IoT $iothub/methods/POST/# Hub. Po přijetí přímé metody v tomto tématu musí klient extrahovat identifikátor požadavku z dílčího tématu, ve kterém je přímá metoda přijata, a nakonec publikovat potvrzovací zprávu ve speciálním tématu rid služby IoT $iothub/methods/res/200/<request_id> Hub.
Odeslání přímých metod
Odeslání přímé metody je volání HTTP, a proto neprojde přes zprostředkovatele MQTT. Pokud chcete odeslat přímou metodu do služby IoT Hub, podívejte se na principy a vyvolání přímých metod. Pokud chcete odeslat přímou metodu místně do jiného modulu, podívejte se na tento příklad vyvolání přímé metody sady Azure IoT C# SDK.
Publikování a přihlášení k odběru mezi zprostředkovateli MQTT
Aby bylo možné připojit dva zprostředkovatele MQTT, IoT Edge centrum obsahuje most MQTT. Most MQTT se běžně používá k připojení zprostředkovatele MQTT spuštěného k jinému zprostředkovateli MQTT. Do jiného zprostředkovatele se obvykle dosažuje pouze podmnožina místního provozu.
Poznámka
Most IoT Edge rozbočovače se v současné době může používat pouze mezi vnořenými IoT Edge zařízeními. Nelze ho použít k odesílání dat do služby IoT Hub, protože IoT Hub není plnohodnotný zprostředkovatel MQTT. Další informace o podpoře funkcí zprostředkovatele IoT Hub MQTT najdete v tématu Komunikace se službou IoT Hub pomocí protokolu MQTT. Další informace o vnořování IoT Edge zařízení najdete v Připojení podřízeného IoT Edge zařízení do Azure IoT Edge brány.
Ve vnořené konfiguraci funguje most MQTT centra IoT Edge jako klient nadřazeného zprostředkovatele MQTT, takže na nadřazeném EdgeHubu musí být nastavená autorizační pravidla, která umožní podřízenému EdgeHubu publikovat a odebírat konkrétní uživatelsky definovaná témata, pro která je most nakonfigurovaný.
Most IoT Edge MQTT se konfiguruje prostřednictvím struktury JSON, která se odesílá do centra IoT Edge prostřednictvím jeho dvojčete. Upravte dvojče IoT Edge hubu a nakonfigurujte most MQTT.
Poznámka
Ve verzi Public Preview podporuje pouze Azure CLI nasazení obsahující konfigurace mostu MQTT. Rozhraní Azure Portal v současné době nepodporuje úpravy dvojčete centra IoT Edge a jeho konfiguraci mostu MQTT.
Most MQTT je možné nakonfigurovat tak, aby propojoval IoT Edge MQTT hubu s několika externími zprostředkovateli. Pro každého externího zprostředkovatele se vyžaduje následující nastavení:
endpointje adresa vzdáleného zprostředkovatele MQTT, ke které se chcete připojit. Aktuálně se IoT Edge jenom nadřazená zařízení a jsou definovaná proměnnou$upstream.settingsdefinuje témata, která se mají přemostění pro koncový bod přemostění. Pro každý koncový bod může být více nastavení a ke konfiguraci se používají následující hodnoty:direction: buďink přihlášení k odběru témat vzdáleného zprostředkovatele, nebo k publikování do tématoutvzdáleného zprostředkovateletopic: Vzor základního tématu, který se má spárovat. K definování tohoto vzoru lze použít zástupné znaky MQTT. U místního zprostředkovatele a vzdáleného zprostředkovatele je možné u tohoto modelu tématu použít různé předpony.outPrefix: Předpona použitá natopicvzor u vzdáleného zprostředkovatele.inPrefix: Předpona použitá natopicvzor u místního zprostředkovatele.
Níže je uveden příklad konfigurace mostu IoT Edge MQTT, která znovu publikuje všechny zprávy přijaté v tématech alerts/# nadřazeného IoT Edge zařízení do podřízeného IoT Edge zařízení ve stejných tématech a znovu publikuje všechny zprávy odeslané v tématech /local/telemetry/# podřízeného IoT Edge zařízení do nadřazeného IoT Edge zařízení v tématech /remote/messages/# .
{
"schemaVersion": "1.2",
"mqttBroker": {
"bridges": [{
"endpoint": "$upstream",
"settings": [{
"direction": "in",
"topic": "alerts/#"
},
{
"direction": "out",
"topic": "#",
"inPrefix": "/local/telemetry/",
"outPrefix": "/remote/messages/"
}
]
}]
}
}
Další poznámky k MQTT mostu centra IoT Edge:
- Protokol MQTT se automaticky použije jako nadřazený protokol, pokud se použije zprostředkovatel MQTT a že se IoT Edge používá ve vnořené konfiguraci, například se
parent_hostnamezadaným. Další informace o nadřazených protokolech najdete v tématu cloudová komunikace. další informace o vnořených konfiguracích najdete v tématu Připojení zařízení IoT Edge pro příjem dat do brány Azure IoT Edge.
Další kroky
Příloha – vzorový manifest nasazení
Níže je uvedený kompletní manifest nasazení, který můžete použít k povolení zprostředkovatele MQTT v IoT Edge. Nasadí IoT Edge verze 1,2 s povolenou funkcí Broker MQTT, edgeHub port 1883 a otevřené zásady autorizace na test_topic .
{
"modulesContent":{
"$edgeAgent":{
"properties.desired":{
"schemaVersion":"1.1",
"runtime":{
"type":"docker",
"settings":{
"minDockerVersion":"v1.25",
"loggingOptions":"",
"registryCredentials":{
}
}
},
"systemModules":{
"edgeAgent":{
"type":"docker",
"settings":{
"image":"mcr.microsoft.com/azureiotedge-agent:1.2",
"createOptions":"{}"
}
},
"edgeHub":{
"type":"docker",
"status":"running",
"restartPolicy":"always",
"settings":{
"image":"mcr.microsoft.com/azureiotedge-hub:1.2",
"createOptions":"{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}],\"1883/tcp\":[{\"HostPort\":\"1883\"}]}}}"
},
"env":{
"experimentalFeatures__mqttBrokerEnabled":{
"value":"true"
},
"experimentalFeatures__enabled":{
"value":"true"
},
"RuntimeLogLevel":{
"value":"debug"
}
}
}
},
"modules":{
}
}
},
"$edgeHub":{
"properties.desired":{
"schemaVersion":"1.2",
"routes":{
"Upstream":"FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration":{
"timeToLiveSecs":7200
},
"mqttBroker":{
"authorizations":[
{
"identities":[
"{{iot:identity}}"
],
"allow":[
{
"operations":[
"mqtt:connect"
]
}
]
},
{
"identities":[
"{{iot:identity}}"
],
"allow":[
{
"operations":[
"mqtt:publish",
"mqtt:subscribe"
],
"resources":[
"test_topic"
]
}
]
}
]
}
}
}
}
}