Manage appliances with the AWS Panorama API
You can automate appliance management tasks with the AWS Panorama API.
View devices
To get a list of appliances with device IDs, use the ListDevices API.
$
aws panorama list-devices
"Devices": [ { "DeviceId": "device-4tafxmplhtmzabv5lsacba4ere", "Name": "my-appliance", "CreatedTime": 1652409973.613, "ProvisioningStatus": "SUCCEEDED", "LastUpdatedTime": 1652410973.052, "LeaseExpirationTime": 1652842940.0 } ] }
To get more details about an appliance, use the DescribeDevice API.
$
aws panorama describe-device --device-id device-4tafxmplhtmzabv5lsacba4ere
{ "DeviceId": "device-4tafxmplhtmzabv5lsacba4ere", "Name": "my-appliance", "Arn": "arn:aws:panorama:us-west-2:123456789012:device/device-4tafxmplhtmzabv5lsacba4ere", "Type": "PANORAMA_APPLIANCE", "DeviceConnectionStatus": "ONLINE", "CreatedTime": 1648232043.421, "ProvisioningStatus": "SUCCEEDED", "LatestSoftware": "4.3.55", "CurrentSoftware": "4.3.45", "SerialNumber": "GFXMPL0013023708", "Tags": {}, "CurrentNetworkingStatus": { "Ethernet0Status": { "IpAddress": "192.168.0.1/24", "ConnectionStatus": "CONNECTED", "HwAddress": "8C:XM:PL:60:C5:88" }, "Ethernet1Status": { "IpAddress": "--", "ConnectionStatus": "NOT_CONNECTED", "HwAddress": "8C:XM:PL:60:C5:89" } }, "LeaseExpirationTime": 1652746098.0 }
Upgrade appliance software
If the LatestSoftware
version is newer than the CurrentSoftware
, you can upgrade the
device. Use the CreateJobForDevices API to create an over-the-air (OTA) update job.
Note
Any updates beyond 8.0.29 will mean that Sagemaker Neo model nodes can’t be run. If you are currently using model nodes, it’s recommended that direct hardware access is used to run models directly on the GPU instead, or that you choose not to upgrade. See Using AWS Panorama after update 8.0.29for more information on how to handle your applications post update.
$
aws panorama create-job-for-devices --device-ids device-4tafxmplhtmzabv5lsacba4ere \ --device-job-config '{"OTAJobConfig": {"ImageVersion": "
{ "Jobs": [ { "JobId": "device-4tafxmplhtmzabv5lsacba4ere-0", "DeviceId": "device-4tafxmplhtmzabv5lsacba4ere" } ] }4.3.55
"}}' --job-type OTA
In a script, you can populate the image version field in the job configuration file with Bash string manipulation.
Example check-updates.sh
apply_update() { DEVICE_ID=$1 NEW_VERSION=$2 CONFIG='{"OTAJobConfig": {"ImageVersion": "NEW_VERSION"}}' CONFIG=
${CONFIG/NEW_VERSION/$NEW_VERSION}
aws panorama create-job-for-devices --device-ids ${DEVICE_ID} --device-job-config "${CONFIG}" --job-type OTA }
The appliance downloads the specified software version and updates itself. Watch the update's progress with the DescribeDeviceJob API.
$
aws panorama describe-device-job --job-id device-4tafxmplhtmzabv5lsacba4ere-0
{ "JobId": "device-4tafxmplhtmzabv5lsacba4ere-0", "DeviceId": "device-4tafxmplhtmzabv5lsacba4ere", "DeviceArn": "arn:aws:panorama:us-west-2:559823168634:device/device-4tafxmplhtmzabv5lsacba4ere", "DeviceName": "my-appliance", "DeviceType": "PANORAMA_APPLIANCE", "ImageVersion": "4.3.55", "Status": "REBOOTING", "CreatedTime": 1652410232.465 }
To get a list of all running jobs, use the ListDevicesJobs.
$
aws panorama list-devices-jobs
{ "DeviceJobs": [ { "DeviceName": "my-appliance", "DeviceId": "device-4tafxmplhtmzabv5lsacba4ere", "JobId": "device-4tafxmplhtmzabv5lsacba4ere-0", "CreatedTime": 1652410232.465 } ] }
For a sample script that checks for and applies updates, see check-updates.sh
Reboot appliances
To reboot an appliance, use the CreateJobForDevices API.
$
aws panorama create-job-for-devices --device-ids device-4tafxmplhtmzabv5lsacba4ere --job-type REBOOT
{ "Jobs": [ { "JobId": "device-4tafxmplhtmzabv5lsacba4ere-0", "DeviceId": "device-4tafxmplhtmzabv5lsacba4ere" } ] }
In a script, you can get a list of devices and choose one to reboot interactively.
Example reboot-device.sh – usage
$
./reboot-device.sh
Getting devices... 0: device-53amxmplyn3gmj72epzanacniy my-se70-1 1: device-6talxmpl5mmik6qh5moba6jium my-manh-24 Choose a device1
Reboot device device-6talxmpl5mmik6qh5moba6jium? (y/n)y
{ "Jobs": [ { "DeviceId": "device-6talxmpl5mmik6qh5moba6jium", "JobId": "device-6talxmpl5mmik6qh5moba6jium-8" } ] }