Rövid útmutató: Azure IoT Hub és tárfiók üzembe helyezése a Bicep használatával
Ebben a rövid útmutatóban a Bicep használatával hoz létre egy IoT Hubot, egy Azure Storage-fiókot, valamint egy útvonalat, amellyel üzeneteket küldhet az IoT Hubról a tárolóba. A központ úgy van konfigurálva, hogy a központnak küldött üzenetek automatikusan a tárfiókba legyenek irányítva, ha megfelelnek az útválasztási feltételnek. A rövid útmutató végén megnyithatja a tárfiókot, és megtekintheti az elküldött üzeneteket.
A Bicep tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Tömör szintaxist és megbízható típusbiztonságot kínál, valamint biztosítja a kódok újrafelhasználhatóságát. A Bicep a legjobb szerzői élményt nyújtja az Azure-beli infrastruktúra-kódmegoldásokhoz.
Előfeltételek
Ha nem rendelkezik Azure-előfizetéssel, mindössze néhány perc alatt létrehozhat egy ingyenes Azure-fiókot a virtuális gép létrehozásának megkezdése előtt.
A Bicep-fájl áttekintése
Az ebben a rövid útmutatóban használt Bicep-fájlt az Azure Gyorsindítási sablonokból hívjuk meg101-iothub-auto-route-messages
.
Két Azure-erőforrás van definiálva a Bicep-fájlban:
- Microsoft.Storage/storageAccounts: Tárolóval rendelkező tárfiók.
- Microsoft.Devices/IotHubs: Egy olyan IoT Hub, amely a tárolóra mutat, és egy útvonallal, amellyel szűrt üzeneteket küldhet az adott végpontnak.
@description('Define the project name or prefix for all objects.')
@minLength(1)
@maxLength(11)
param projectName string = 'contoso'
@description('The datacenter to use for the deployment.')
param location string = resourceGroup().location
@description('The SKU to use for the IoT Hub.')
param skuName string = 'S1'
@description('The number of IoT Hub units.')
param skuUnits int = 1
@description('Partitions used for the event stream.')
param d2cPartitions int = 4
var iotHubName = '${projectName}Hub${uniqueString(resourceGroup().id)}'
var storageAccountName = '${toLower(projectName)}${uniqueString(resourceGroup().id)}'
var storageEndpoint = '${projectName}StorageEndpont'
var storageContainerName = '${toLower(projectName)}results'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {
allowBlobPublicAccess: false
minimumTlsVersion: 'TLS1_2'
supportsHttpsTrafficOnly: true
}
}
resource container 'Microsoft.Storage/storageAccounts/blobServices/containers@2023-01-01' = {
name: '${storageAccountName}/default/${storageContainerName}'
properties: {
publicAccess: 'None'
}
dependsOn: [
storageAccount
]
}
resource IoTHub 'Microsoft.Devices/IotHubs@2023-06-30' = {
name: iotHubName
location: location
sku: {
name: skuName
capacity: skuUnits
}
properties: {
eventHubEndpoints: {
events: {
retentionTimeInDays: 1
partitionCount: d2cPartitions
}
}
routing: {
endpoints: {
storageContainers: [
{
connectionString: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
containerName: storageContainerName
fileNameFormat: '{iothub}/{partition}/{YYYY}/{MM}/{DD}/{HH}/{mm}'
batchFrequencyInSeconds: 100
maxChunkSizeInBytes: 104857600
encoding: 'JSON'
name: storageEndpoint
}
]
}
routes: [
{
name: 'ContosoStorageRoute'
source: 'DeviceMessages'
condition: 'level="storage"'
endpointNames: [
storageEndpoint
]
isEnabled: true
}
]
fallbackRoute: {
name: '$fallback'
source: 'DeviceMessages'
condition: 'true'
endpointNames: [
'events'
]
isEnabled: true
}
}
messagingEndpoints: {
fileNotifications: {
lockDurationAsIso8601: 'PT1M'
ttlAsIso8601: 'PT1H'
maxDeliveryCount: 10
}
}
enableFileUploadNotifications: false
cloudToDevice: {
maxDeliveryCount: 10
defaultTtlAsIso8601: 'PT1H'
feedback: {
lockDurationAsIso8601: 'PT1M'
ttlAsIso8601: 'PT1H'
maxDeliveryCount: 10
}
}
}
}
output name string = IoTHub.name
output resourceId string = IoTHub.id
output resourceGroupName string = resourceGroup().name
output location string = location
A Bicep-fájl üzembe helyezése
Ez a szakasz a Bicep-fájl üzembe helyezésének lépéseit ismerteti.
Töltse le a main.bicep fájlt az Azure Gyorsindítási sablonok adattárából.
Hozza létre az erőforrásokat a Bicep-fájl Azure CLI-vel történő üzembe helyezésével.
az group create --name ContosoResourceGrp --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep
Az üzembe helyezés több percet is igénybe vehet. Amikor az üzembe helyezés befejeződik, látnia kell az üzembe helyezett erőforrásokat részletező kimenetet.
Eszközről felhőbe irányuló üzenetek küldése
Ebben a szakaszban regisztrál egy eszközt az új IoT Hubon, majd üzeneteket küld az eszközről az IoT Hubnak. Az IoT Hubban konfigurált Bicep-fájl által konfigurált útvonal csak akkor küld üzeneteket a tárolónak, ha tartalmazzák az üzenettulajdonságot level=storage
. Annak ellenőrzéséhez, hogy ez az útválasztási feltétel a várt módon működik-e, küldünk néhány üzenetet ezzel a tulajdonsággal, és néhányat anélkül.
Tipp.
Ez a rövid útmutató az Azure CLI szimulált eszközét használja a kényelem érdekében. Az eszközről a felhőbe irányuló üzenetek útválasztáshoz használható üzenettulajdonságokkal történő küldéséhez lásd : HubRoutingSample a .NET-hez készült Azure IoT SDK-ban.
Kérje le annak az IoT Hubnak a nevét, amelyet a sablon létrehozott Önnek.
Ha az előző szakaszban az alapértelmezett parancsokat használta, az erőforrások a ContosoResourceGrp erőforráscsoportban lettek létrehozva. Ha másik erőforráscsoportot használt, frissítse a következő parancsot az egyezéshez.
az iot hub list --resource-group ContosoResourceGrp --output table
Másolja ki az IoT Hub nevét a kimenetből. Úgy kell formázni, mint
contosoHub{randomidentifier}
Adjon hozzá egy eszközt a központhoz.
az iot hub device-identity create --device-id contosoDevice --hub-name {YourIoTHubName}
Szimulálja az eszközt, és küldjön eszközről felhőbe irányuló üzeneteket.
A
--data
paraméter lehetővé teszi az üzenet törzsének beállítását.az iot device simulate \ --device-id contosoDevice \ --hub-name {YourIoTHubName} \ --data "This message won't be routed."
A szimulátor 100 üzenetet küld, majd megszakad. Ebben a rövid útmutatóban nem kell mind a 100-ra várnia.
Tipp.
Az Azure CLI nem nyomtatja ki az üzeneteket, miközben elküldi őket. Ha meg szeretné tekinteni az üzeneteket a központ érkezésekor, telepítheti a Visual Studio Code Azure IoT Hub-bővítményét, és használhatja a beépített végpont figyelésére.
Az eszközről a felhőbe irányuló üzenetek küldése a tárolóba irányítandó üzenetek küldéséhez.
A
--properties
paraméter lehetővé teszi, hogy üzenet-, alkalmazás- vagy rendszertulajdonságokat adjunk hozzá az alapértelmezett üzenethez. Ebben a rövid útmutatóban az IoT Hub útvonala olyan üzeneteket keres, amelyek tartalmazzák az üzenet tulajdonságátlevel=storage
.az iot device simulate \ --device-id contosoDevice \ --hub-name {YourIoTHubName} \ --properties level=storage \ --data "This message will be routed to storage."
Átirányított üzenetek áttekintése
Jelentkezzen be az Azure Portalra , válassza ki az erőforráscsoportot, majd válassza ki a tárfiókot.
Fúrjon le a tárfiókba, amíg nem talál fájlokat.
Válassza ki az egyik fájlt, majd válassza a Letöltés lehetőséget, és töltse le a fájlt egy későbbi helyen. A neve numerikus, például 47. Adja hozzá a .txt a végéhez, majd kattintson duplán a fájlra a megnyitásához.
A fájl megnyitásakor minden sor egy másik üzenethez tartozik. Az egyes üzenetek törzse is titkosítva van. Ahhoz, hogy lekérdezéseket hajthasson végre az üzenet törzsén.
Feljegyzés
Ezek az üzenetek UTF-8-ban és base64-ben vannak kódolva. Ha visszaolvassa az üzenetet, a base64-ből és az utf-8-ból kell dekódolnia, hogy ASCII-ként olvashassa. Ha érdekli, az útválasztási oktatóanyag ReadOneRowFromFile metódusával elolvashat egyet az üzenetfájlok egyikéből, és asCII-re kódolhatja. A ReadOneRowFromFile abban az IoT C# SDK-adattárban található, amelyet a rövid útmutatóhoz kibontott. A mappa tetején található elérési út: ./iothub/device/samples/how to guides/HubRoutingSample/Program.cs Állítsa a logikai
readTheFile
értéket igazra, és a lemezen lévő fájl elérési útját kódolja, és megnyitja és lefordítja a fájl első sorát.
Ebben a rövid útmutatóban üzembe helyezett egy Bicep-fájlt egy IoT Hub és egy tárfiók létrehozásához, majd futtatott egy programot, amely üzeneteket küld a központnak. Az üzenetek az üzenet tulajdonságaik alapján vannak irányítva, és a tárfiókban vannak tárolva, ahol megtekinthetők.
Az erőforrások eltávolítása
Ha már nincs szüksége a létrehozott erőforrásokra, törölje az erőforráscsoportot.
az group delete --name exampleRG