Organize your IoT software packages and versions using Amazon Web Services IoT Software Package Catalog

by Maxim Chernyshev and Ryan Dsouza | on

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. Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services IoT Software Package Catalog

You can implement a holistic IoT device software package and version management process using this feature and integrated capabilities of Amazon Web Services 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. As Software Package Catalog integrates with Amazon Web Services IoT Device Management Fleet Indexing , you can search and aggregate package and version information to gain a complete overview of package versions and aggregated metrics across your fleet centrally.
  3. You can use the integration with Amazon Web Services 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.
  4. Amazon Web Services IoT Device Management Jobs performs the required remote operations to download and install new package versions to target devices.
  5. Once the Amazon Web Services IoT Device Management Job completes successfully, your devices update the associated reserved Amazon Web Services IoT Named Shadow to reflect the changed state of software packages and versions installed on the device.
  6. Amazon Web Services IoT Device Management Fleet Indexing also uses the reserved Amazon Web Services 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.
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 Amazon Web Services IoT Device Management Software Package Catalog

Integrating Amazon Web Services IoT Software Package Catalog with an established in-house software deployment process

If you use Amazon Web Services 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 Amazon Web Services IoT Named Shadow, providing change auditing and package and version monitoring capabilities. Furthermore, you can create event-driven integrations with other Amazon Web Services services in response to changes to device packages and versions deployed to your fleet. You can achieve this by subscribing to the relevant Amazon Web Services 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 Amazon Web Services 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

  • Access to an Amazon Web Services account
  • An IoT device connected to Amazon Web Services IoT Core
    • For ease of testing, you can use a virtual Amazon Web Services IoT Device Client running in a Docker container.
    • You can also refer to the Get Started with Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services IoT thing groups

To use the new Amazon Web Services IoT Device Management Software Package Catalog feature, you can access the Software packages section within your Amazon Web Services 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 Amazon Web Services Console

You can follow the steps listed in the Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services IoT things with a specific software package version

Once package version information has been associated, you can use the data collected with Amazon Web Services 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 Amazon Web Services IoT Device Management console showing package version association with Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services IoT Job integrated with Amazon Web Services IoT Device Management Software Package Catalog to deploy a package version to the target Amazon Web Services 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 Amazon Web Services 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 Amazon Web Services IoT Job

In addition to the Amazon Web Services Console, you can also use the Amazon Web Services IoT API or Amazon Web Services CLI directly to manage packages and package versions in your Software Package Catalog.

Conclusion

Amazon Web Services IoT Device Management Software Package Catalog can now be used with devices connecting to Amazon Web Services 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 Amazon Web Services IoT dynamic thing groups, and deploy them using in-house software deployment processes or Amazon Web Services IoT Device Management Jobs . Sign up for an Amazon Web Services 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 Amazon Web Services. Based in New York City, Ryan helps customers design, develop, and operate more secure, scalable, and innovative solutions using the breadth and depth of Amazon Web Services 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 Amazon Web Services, 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 Amazon Web Services. Based in Perth, Western Australia, Maxim helps customers devise solutions to complex and novel problems using a broad range of applicable Amazon Web Services services and features. Maxim is passionate about industrial IoT, scalable IT/OT convergence, and cyber security.