use azure_iot_hub::service::ServiceClient; use std::error::Error; #[tokio::main] async fn main() -> Result<(), Box> { let iot_hub_connection_string = std::env::var("IOTHUB_CONNECTION_STRING") .expect("Set env variable IOTHUB_CONNECTION_STRING first!"); let device_id = std::env::args() .nth(1) .expect("Please pass the device id as the first parameter"); println!("Applying configuration on device: {device_id}"); let modules_content = serde_json::json!({ "$edgeAgent": { "properties.desired": { "modules": {}, "runtime": { "settings": { "minDockerVersion": "v1.25" }, "type": "docker" }, "schemaVersion": "1.1", "systemModules": { "edgeAgent": { "settings": { "image": "mcr.microsoft.com/azureiotedge-agent:1.1", "createOptions": "" }, "type": "docker" }, "edgeHub": { "settings": { "image": "mcr.microsoft.com/azureiotedge-hub:1.1", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", "status": "running", "restartPolicy": "always" } } } }, "$edgeHub": { "properties.desired": { "routes": { "route": "FROM /messages/* INTO $upstream" }, "schemaVersion": "1.1", "storeAndForwardConfiguration": { "timeToLiveSecs": 7200 } } } }); let service_client = ServiceClient::new_connection_string(iot_hub_connection_string, 3600)?; service_client .apply_on_edge_device(device_id) .modules_content(modules_content) .await?; println!("Successfully applied the configuration"); Ok(()) }