Publikování a přihlášení k odběru Azure IoT Edge (Preview)

Platí pro:  ikona Ano 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-iot nainstalovaný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__enabled true
    experimentalFeatures__mqttBrokerEnabled true

    Pokud 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_topic manifest 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-clients
    

    Neinstalujte 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:

  1. Volitelně klient MQTT vytvoří zabezpečené připojení k centru IoT Edge pomocí protokolu TLS (Transport Layer Security).
  2. Klient MQTT se ověřuje v IoT Edge centru
  3. 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 identifier v 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í username následující syntaxe:

    • Pro zařízení: <iot_hub_name>.azure-devices.net/<device_name>/?api-version=2018-06-30

    • Pro modul: <iot_hub_name>.azure-devices.net/<device_name>/<module_name>/?api-version=2018-06-30

  • Pole password paketu CONNECT závisí na režimu ověřování:

    • Při použití ověřování pomocí symetrických klíčůje password polem token SAS.
    • Při použití ověřování X.509 podepsanéhosvým držitelem password se 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í password paketu 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ů.

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 :

  • identities popište předmět zásad. Musí být namapované username na 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> .
  • allow Efekty deny nebo definují, jestli se mají operace povolit nebo odepřít.
  • operations definujte akce, které se mají autorizovat. mqtt:connect, mqtt:publish mqtt:subscribe a jsou tři podporované akce dnes.
  • resources definujte 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 $edgeHub dvojč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 identities pak 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 , nebo myDevice identitu zařízení, ve které je modul spuštěný, například myEdgeDevice .
    • {{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 je SampleModule .
    • {{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:

  1. 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>
    
  2. 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>
    
  3. 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 3600
      

      kde 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 3600
      

      kde 3600 je doba trvání tokenu SAS v sekundách (například 3600 = 1 hodina).

  4. 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í:

  • endpoint je 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 .
  • settings definuje 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ď in k přihlášení k odběru témat vzdáleného zprostředkovatele, nebo k publikování do témat out vzdáleného zprostředkovatele
    • topic: 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á na topic vzor u vzdáleného zprostředkovatele.
    • inPrefix: Předpona použitá na topic vzor 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:

Další kroky

Principy centra IoT Edge

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"
                           ]
                        }
                     ]
                  }
               ]
            }
         }
      }
   }
}