Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Azure SQL Edge wordt vanaf 30 september 2025 buiten gebruik gesteld. Zie de pensioenmelding voor meer informatie en migratieopties.
Opmerking
Azure SQL Edge biedt geen ondersteuning meer voor het ARM64-platform.
In deze driedelige zelfstudie maakt u een machine learning-model om onzuiverheden in ijzererts te voorspellen als percentage van silicium en implementeert u vervolgens het model in Azure SQL Edge. In deel 1 installeert u de vereiste software en implementeert u Azure-resources.
Vereiste voorwaarden
- Als u geen Azure-abonnement hebt, maakt u een gratis account.
- Visual Studio 2019 installeren met
- Azure IoT Edge-hulpprogramma's
- Platformoverschrijdende ontwikkeling van .NET Core
- Hulpprogramma's voor containerontwikkeling
- Azure Data Studio installeren
- Open Azure Data Studio en configureer Python voor notebooks. Zie Python voor notebooks configureren voor meer informatie. Deze stap kan enkele minuten duren.
- Installeer de nieuwste versie van Azure CLI. Voor de volgende scripts is vereist dat AZ PowerShell de nieuwste versie is (3.5.0, februari 2020).
- Stel de omgeving in om de IoT Edge-oplossing op te sporen, uit te voeren en te testen door azure IoT EdgeHub Dev Tool te installeren.
- Installeer Docker.
Azure-resources implementeren met behulp van PowerShell Script
Implementeer de Azure-resources die vereist zijn voor deze Zelfstudie voor Azure SQL Edge. Deze resources kunnen worden geïmplementeerd met behulp van een PowerShell-script of via Azure Portal. In deze zelfstudie wordt een PowerShell-script gebruikt.
Opmerking
In dit artikel wordt gebruikgemaakt van de nieuwste versie van de Azure IoT-extensie, azure-iot. De verouderde versie wordt aangeroepen azure-cli-iot-ext. U moet slechts één versie tegelijk hebben geïnstalleerd. U kunt de opdracht az extension list gebruiken om de momenteel geïnstalleerde extensies te valideren.
Gebruik az extension remove --name azure-cli-iot-ext om de verouderde versie van de extensie te verwijderen.
Gebruik az extension add --name azure-iot om de nieuwe versie van de extensie toe te voegen.
Als u wilt zien welke extensies momenteel zijn geïnstalleerd, gebruikt u az extension list.
Importeer de modules die nodig zijn om het PowerShell-script in deze zelfstudie uit te voeren.
Import-Module Az.Accounts -RequiredVersion 1.7.3 Import-Module -Name Az -RequiredVersion 3.5.0 Import-Module Az.IotHub -RequiredVersion 2.1.0 Import-Module Az.Compute -RequiredVersion 3.5.0 az extension add --name azure-iot az extension add --name azure-cli-mlDeclareer de variabelen die zijn vereist voor het PowerShell-script.
$ResourceGroup = "<name_of_the_resource_group>" $IoTHubName = "<name_of_the_IoT_hub>" $location = "<location_of_your_Azure_Subscription>" $SubscriptionName = "<your_azure_subscription>" $NetworkSecGroup = "<name_of_your_network_security_group>" $StorageAccountName = "<name_of_your_storage_account>"Declareer de rest van de variabelen.
$IoTHubSkuName = "S1" $IoTHubUnits = 4 $EdgeDeviceId = "IronOrePredictionDevice" $publicIpName = "VMPublicIP" $imageOffer = "iot_edge_vm_ubuntu" $imagePublisher = "microsoft_iot_edge" $imageSku = "ubuntu_1604_edgeruntimeonly" $AdminAcc = "iotadmin" $AdminPassword = ConvertTo-SecureString "<password>" -AsPlainText -Force $VMSize = "Standard_DS3" $NetworkName = "MyNet" $NICName = "MyNIC" $SubnetName = "MySubnet" $SubnetAddressPrefix = "10.0.0.0/24" $VnetAddressPrefix = "10.0.0.0/16" $MyWorkSpace = "SQLDatabaseEdgeDemo" $containerRegistryName = $ResourceGroup + "ContRegistry"Meld u aan bij Azure om assets te maken.
Login-AzAccount az loginStel de Azure-abonnements-id in.
Select-AzSubscription -Subscription $SubscriptionName az account set --subscription $SubscriptionNameMaak de resourcegroep wanneer deze nog niet bestaat.
$rg = Get-AzResourceGroup -Name $ResourceGroup if($rg -eq $null) { Write-Output("Resource Group $ResourceGroup does not exist, creating Resource Group") New-AzResourceGroup -Name $ResourceGroup -Location $location } else { Write-Output ("Resource Group $ResourceGroup exists") }Maak het opslagaccount en de opslagaccountcontainer in de resourcegroep aan.
$sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName if ($sa -eq $null) { New-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName -SkuName Standard_LRS -Location $location -Kind Storage $sa = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName $storageKey = Get-AzStorageAccountKey -ResourceGroupName $ResourceGroup -Name $StorageAccountName $storageContext = New-AzStorageContext -StorageAccountName $StorageAccountName -StorageAccountKey $storageKey[0].Value New-AzStorageContainer -Name "sqldatabasedacpac" -Context $storageContext } else { Write-Output ("Storage Account $StorageAccountName exists in Resource Group $ResourceGroup") }Upload het databasebestand
dacpacnaar het opslagaccount en genereer een SAS-URL voor de blob. Noteer de SAS-URL voor de database-blobdacpac.$file = Read-Host "Please Enter the location to the zipped Database DacPac file:" Set-AzStorageBlobContent -File $file -Container "sqldatabasedacpac" -Blob "SQLDatabasedacpac.zip" -Context $sa.Context $DacpacFileSASURL = New-AzStorageBlobSASToken -Container "sqldatabasedacpac" -Blob "SQLDatabasedacpac.zip" -Context $sa.Context -Permission r -StartTime (Get-Date).DateTime -ExpiryTime (Get-Date).AddMonths(12) -FullUriMaak een Azure-containerregister in deze resourcegroep.
$containerRegistry = Get-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName if ($containerRegistry -eq $null) { New-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName -Sku Standard -Location $location -EnableAdminUser $containerRegistry = Get-AzContainerRegistry -ResourceGroupName $ResourceGroup -Name $containerRegistryName } else { Write-Output ("Container Registry $containerRegistryName exists in Resource Group $ResourceGroup") }Maak de netwerkbeveiligingsgroep binnen de resourcegroep.
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NetworkSecGroup if($nsg -eq $null) { Write-Output("Network Security Group $NetworkSecGroup does not exist in the resource group $ResourceGroup") $rule1 = New-AzNetworkSecurityRuleConfig -Name "SSH" -Description "Allow SSH" -Access Allow -Protocol Tcp -Direction Inbound -Priority 100 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 22 $rule2 = New-AzNetworkSecurityRuleConfig -Name "SQL" -Description "Allow SQL" -Access Allow -Protocol Tcp -Direction Inbound -Priority 101 -SourceAddressPrefix Internet -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 1600 New-AzNetworkSecurityGroup -Name $NetworkSecGroup -ResourceGroupName $ResourceGroup -Location $location -SecurityRules $rule1, $rule2 $nsg = Get-AzNetworkSecurityGroup -ResourceGroupName $ResourceGroup -Name $NetworkSecGroup } else { Write-Output ("Network Security Group $NetworkSecGroup exists in the resource group $ResourceGroup") }Maak een virtuele Azure-machine die is ingeschakeld met SQL Edge. Deze VM fungeert als een Edge-apparaat.
$AzVM = Get-AzVM -ResourceGroupName $ResourceGroup -Name $EdgeDeviceId If($AzVM -eq $null) { Write-Output("The Azure VM with Name- $EdgeVMName is not present in the Resource Group- $ResourceGroup ") $SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix $Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroup -Location $location -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet $publicIp = New-AzPublicIpAddress -Name $publicIpName -ResourceGroupName $ResourceGroup -AllocationMethod Static -Location $location $NIC = New-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroup -Location $location -SubnetId $Vnet.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id -PublicIpAddressId $publicIp.Id ##Set-AzNetworkInterfaceIpConfig -Name "ipconfig1" -NetworkInterface $NIC -PublicIpAddress $publicIp $Credential = New-Object System.Management.Automation.PSCredential ($AdminAcc, $AdminPassword); $VirtualMachine = New-AzVMConfig -VMName $EdgeDeviceId -VMSize $VMSize $VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Linux -ComputerName $EdgeDeviceId -Credential $Credential $VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id $VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName $imagePublisher -Offer $imageOffer -Skus $imageSku -Version latest $VirtualMachine = Set-AzVMPlan -VM $VirtualMachine -Name $imageSku -Publisher $imagePublisher -Product $imageOffer $AzVM = New-AzVM -ResourceGroupName $ResourceGroup -Location $location -VM $VirtualMachine -Verbose $AzVM = Get-AzVM -ResourceGroupName $ResourceGroup -Name $EdgeDeviceId } else { Write-Output ("The Azure VM with Name- $EdgeDeviceId is present in the Resource Group- $ResourceGroup ") }Maak een IoT-hub binnen de resourcegroep.
$iotHub = Get-AzIotHub -ResourceGroupName $ResourceGroup -Name $IoTHubName If($iotHub -eq $null) { Write-Output("IoTHub $IoTHubName does not exists, creating The IoTHub in the resource group $ResourceGroup") New-AzIotHub -ResourceGroupName $ResourceGroup -Name $IoTHubName -SkuName $IoTHubSkuName -Units $IoTHubUnits -Location $location -Verbose } else { Write-Output ("IoTHub $IoTHubName present in the resource group $ResourceGroup") }Voeg een Edge-apparaat toe aan de IoT-hub. Met deze stap maakt u alleen de digitale identiteit van het apparaat.
$deviceIdentity = Get-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId If($deviceIdentity -eq $null) { Write-Output("The Edge Device with DeviceId- $EdgeDeviceId is not registered to the IoTHub- $IoTHubName ") Add-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceId -EdgeEnabled } else { Write-Output ("The Edge Device with DeviceId- $EdgeDeviceId is registered to the IoTHub- $IoTHubName") } $deviceIdentity = Get-AzIotHubDevice -ResourceGroupName $ResourceGroup -IotHubName $IoTHubName -DeviceId $EdgeDeviceIdHaal de primaire verbindingsreeks van het apparaat op. Deze is later nodig voor de VIRTUELE machine. De volgende opdracht maakt gebruik van Azure CLI voor implementaties.
$deviceConnectionString = az iot hub device-identity connection-string show --device-id $EdgeDeviceId --hub-name $IoTHubName --resource-group $ResourceGroup --subscription $SubscriptionName $connString = $deviceConnectionString[1].Substring(23,$deviceConnectionString[1].Length-24) $connStringWerk de verbindingsreeks bij in het IoT Edge-configuratiebestand op het Edge-apparaat. De volgende opdrachten gebruiken Azure CLI voor implementaties.
$script = "/etc/iotedge/configedge.sh '" + $connString + "'" az vm run-command invoke -g $ResourceGroup -n $EdgeDeviceId --command-id RunShellScript --script $scriptMaak een Azure Machine Learning-werkruimte in de resourcegroep.
az ml workspace create -w $MyWorkSpace -g $ResourceGroup