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:

  1. 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.
  2. 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.
  3. AWS IoT Device Management Jobs performs the required remote operations to download and install new package versions to target devices.
  4. 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.
  5. 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.

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 IoT devices and use AWS IoT jobs to perform package version deployments.

Figure 1. Holistic software package and version management process using the AWS IoT Device Management Software Package Catalog

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:

  1. 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.
  2. 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.
  3. 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.
IoT device fleet operators combine AWS IoT Device Management Software Package Catalog with an existing in-house software deployment process to achieve centralised visibility,

Figure 2. Steps to integrating AWS IoT Software Package Catalog with an established in-house software deployment process

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

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:

AWS Console showing a sample fleet of 10 IoT devices assigned to two different static AWS IoT thing groups

AWS Console showing a sample fleet of 10 IoT devices assigned to two different static AWS IoT thing groups

Figure 3. Sample fleet of 10 IoT devices assigned to two different static AWS IoT thing groups

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.

The new “Software packages” section in the AWS Console

Figure 4. The new “Software packages” section in the AWS Console

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.

Using AWS Console to create and publish a new software package “samplePackage01” and an associated default package version “v1.0.0“

Using AWS Console to create and publish a new software package “samplePackage01” and an associated default package version “v1.0.0“

Figure 5. Creation and publishing of a new software package “samplePackage01” and an associated default package version “v1.0.0“

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.

Using AWS console to associate AWS IoT things with a specific software package version

Figure 6. Associating AWS IoT things with a specific software package version

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:

Metrics displayed in the AWS IoT Device Management console showing package version association with AWS IoT things

Figure 7. Metrics displayed in the AWS IoT Device Management console showing package version association with AWS IoT things

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:

Creation of a new AWS IoT Job integrated with AWS IoT Device Management Software Package Catalog to deploy a package version to the target AWS IoT thing group using AWS Console

Figure 8. Creation of a new AWS IoT Job integrated with AWS IoT Device Management Software Package Catalog to deploy a package version to the target AWS IoT thing group

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:

AWS Console showing current version distribution and historical chart in Discovery console of Software Package Catalog

Figure 9. Current version distribution and historical chart in Discovery console

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:

Reserved named Shadow reporting an updated version information for samplePackage01 version v2.0.0 following successful completion of the AWS IoT Job

Reserved named Shadow reporting an updated version information for samplePackage01 version v2.0.0 following successful completion of the AWS IoT Job

Figure 10. Reserved named Shadow reporting an updated version information for samplePackage01 version v2.0.0 following successful completion of the AWS IoT Job

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.

Author bio

Ryan Dsouza Headshot

Ryan Dsouza

Ryan Dsouza is a Principal Solutions Architect for IoT at AWS. Based in New York City, Ryan helps customers design, develop, and operate more secure, scalable, and innovative solutions using the breadth and depth of AWS capabilities to deliver measurable business outcomes. Ryan has over 25 years of experience in digital platforms, smart manufacturing, energy management, building and industrial automation, and OT/IIoT security across a diverse range of industries. Before AWS, Ryan worked for Accenture, SIEMENS, General Electric, IBM, and AECOM, serving customers for their digital transformation initiatives.

Maxim Chernyshev Headshot

Maxim Chernyshev

Maxim Chernyshev is a Senior Solutions Architect working with mining, energy, and industrial customers at AWS. Based in Perth, Western Australia, Maxim helps customers devise solutions to complex and novel problems using a broad range of applicable AWS services and features. Maxim is passionate about industrial IoT, scalable IT/OT convergence, and cyber security.