The Internet of Things on AWS – Official Blog
Organize your IoT software packages and versions using AWS IoT Software Package Catalog
Introduction
As the number of connected IoT devices continues to grow and is expected to reach close to 30 billion by 2030, the need to effectively manage connected device fleets at scale will also increase. IoT device fleet management usually incorporates deployment of software packages to IoT devices, which can consist of package versions containing firmware, operating system updates, device applications, configurations, and security patches. AWS IoT Device Management is a managed service that helps you register, organize, monitor, and remotely manage your growing fleet of connected devices.
Software Package Catalog, a new feature of AWS IoT Device Management, allows you to register, store, and report system software packages, along with their versions and metadata, all in one centralized location. In this blog, we will show how you can now easily organize and deploy software packages and versions across your fleet, obtain insights centrally, and perform targeted device version updates using this new feature.
End-to-end software package and version management using AWS IoT Software Package Catalog
You can implement a holistic IoT device software package and version management process using this feature and integrated capabilities of AWS IoT Device Management. Figure 1 shows the associated process steps:
- IoT device fleet operators use the new Software Package Catalog feature to maintain an inventory of software packages and their versions. Operators can create packages, versions, and associated version attributes to store version metadata. Following the inventory creation, operators can also assign package versions to your IoT devices. As the software changes, you can use the package version lifecycle states to represent evolving package version status.
- You can use the integration with AWS IoT Device Management Jobs to deploy package versions across your fleet. You can target specific IoT devices or device groups within your fleet to deploy package version to selected devices. For example, you may wish to deploy a new version or a security update to a subset of your fleet such as IoT devices with a battery life greater than a certain percentage value and running specific software package and version.
- AWS IoT Device Management Jobs performs the required remote operations to download and install new package versions to target devices.
- Once the AWS IoT Device Management Job completes successfully, your devices update the associated reserved AWS IoT Named Shadow to reflect the changed state of software packages and versions installed on the device.
- AWS IoT Device Management Fleet Indexing also uses the reserved AWS IoT Named Shadow as a data source to keep your package version and aggregated metrics up-to-date, so you can continue gaining package and version insights centrally.
Software Package Catalog makes it easier and seamless for you to index, search and gain a complete overview of package versions and aggregated metrics across your device fleet.
Integrating AWS IoT Software Package Catalog with an established in-house software deployment process
If you use AWS IoT Core and already have an established in-house process and tools to manage your IoT device fleet, please refer to Figure 2 that shows how the new Software Package Catalog feature can complement and integrate with your existing process:
- As described previously (please refer to Figure 1), IoT device fleet operators can use the new Software Package Catalog feature to maintain an inventory of software packages and their versions. Thus, you can add your existing package, version and IoT device association information to Software Package Catalog, allowing you to search and aggregate this information centrally.
- You can then continue to use an established in-house process to deploy software packages and versions, with the added ability to schedule those deployments based on package and version metadata, and package version lifecycle state to augment your existing in-house process.
- Upon successful completion of your in-house deployment, you can update package version information by storing the resulting state of installed software packages and versions to the reserved AWS IoT Named Shadow, providing change auditing and package and version monitoring capabilities. Furthermore, you can create event-driven integrations with other AWS services in response to changes to device packages and versions deployed to your fleet. You can achieve this by subscribing to the relevant AWS IoT Named Shadow MQTT topics.
Let’s now explore how you can use the new feature to create, associate, deploy and report on software packages and versions across your IoT device fleet.
Prerequisites
- Access to an AWS account
- An IoT device connected to AWS IoT Core
- For ease of testing, you can use a virtual AWS IoT Device Client running in a Docker container.
- You can also refer to the Get Started with AWS IoT workshop for detailed guidance on setting up a virtual IoT device.
Solution walkthrough
For this walkthrough, we have created a sample fleet consisting of 10 identical IoT devices, equally split across two AWS IoT static thing groups, to demonstrate targeted software package version deployment later:
To use the new AWS IoT Device Management Software Package Catalog feature, you can access the Software packages section within your AWS IoT Console, as shown in Figure 4.
You can follow the steps listed in the AWS public documentation to create a new software package and a package version. For this walkthrough, we have created a sample package called samplePackage01
. During creation we also added the first version v1.0.0
and published it as the default version.
You can then associate a published software package version with your IoT device fleet. In this example, we would like to associate samplePackage01
version v1.0.0
with the entire fleet. For example, this approach can be used to reflect the existing device software package baseline state created as part of your IoT client device provisioning process. You can follow the steps listed in the AWS public documentation to associate package versions with your device fleet to reflect the existing package and version state.
Once package version information has been associated, you can use the data collected with AWS IoT fleet indexing to search and aggregate the information captured through the Software Package Catalog. Figure 7 shows that the entire sample fleet has now been associated with samplePackage01
version v1.0.0
:
Furthermore, we can now explore a scenario where we need to deploy a new package version to a subset of our device fleet and automatically record the updated software package state information. For instance, this may be necessary in cases where you need to roll out firmware updates or security patches to your IoT devices.
As the Software Package Catalog feature integrates with AWS IoT Device Management Jobs, you can automate the relevant software package deployment operations and perform them remotely. Following the process described previously, we have created and published a new package version v2.0.0
. Figure 8 shows a new custom Job configuration to deploy the newly created samplePackage01
version v2.0.0
to a selected subset of devices, based on the chosen thing group thing-group-1
:
Specifically, you can use the new options provided in the Jobs integration with the Package Catalog service section to define updates to be performed to package version information, after the job is successfully completed. Once the job is created and completed, the updated package version association information reflected in the discovery console, as shown in Figure 9:
The version distribution information has been dynamically updated via the reserved AWS IoT Named Shadow, which provides the ability to automate package version data management, in addition to the manual association workflow described previously, as shown in Figure 10:
In addition to the AWS Console, you can also use the AWS IoT API or AWS CLI directly to manage packages and package versions in your Software Package Catalog.
Conclusion
AWS IoT Device Management Software Package Catalog can now be used with devices connecting to AWS IoT Core. The new feature makes it easier to maintain an inventory of software packages and their versions centrally in an integrated manner.
You can associate package versions to individual things and AWS IoT dynamic thing groups, and deploy them using in-house software deployment processes or AWS IoT Device Management Jobs. Sign up for an AWS account and refer to the technical documentation to get started immediately.