Does your IoT device use AWS IoT OTA to manage software or firmware updates? Do you want to use advanced job features such as automated retry, scheduled jobs, recurring maintenance windows and Software Package Catalog? This article explains two approaches you can take to enrich your OTA updates with these advanced features.
Introduction
AWS IoT OTA update (also known as "FreeRTOS OTA update") is a feature built on top of AWS IoT Jobs. AWS IoT Jobs offer some advanced job configuration features that are not yet directly supported by AWS IoT OTA updates, such as automated retries, job scheduling, recurring maintenance windows and Software Package Catalog versions. You can enrich your AWS IoT OTA updates with these features, using the following two methods:
- Custom job composition
- Job templates
The main advantage of the job templates method is that it's a procedure that you can follow in either the console, or with the AWS CLI, without needing to develop any code. By contrast, the custom job composition method is a programmatic solution.
Custom job composition
An AWS IoT OTA update is created using the CreateOTAUpdate API operation. This operation is used by the AWS IoT console, the AWS CLI and the AWS SDKs (such as boto3) to create an OTA update job. Depending on the parameters you pass, CreateOTAUpdate may in turn call:
The aws-samples/aws-iot-create-ota-update-deconstructed GitHub repository demonstrates how you can make these calls to compose an OTA update yourself, but also access the retry configuration, scheduling configuration, maintenance windows configuration and the Software Package Catalog versions that are exposed by the CreateJob operation.
Job templates
AWS IoT job templates allow you to preconfigure your jobs. You can create a custom job template as an original template or create it from an existing job. You can use job templates in a three step procedure to create an OTA job that is enriched with advanced job configurations:
- Create your OTA update in the normal way.
- Create a job template from your OTA update job.
- Create a new job from your job template.
At steps 2 and 3, you can enrich the job template or the new job with advanced job configurations. These steps can be performed using the console or the AWS CLI, and the console method is outlined below.
Step 1: Create your OTA update job
Firstly, you need a dummy thing registered in the IoT Core registry, or you need a device that you know is offline. You can then create your desired OTA Update job in the normal way, but targeting the dummy or inactive thing, as shown in Figure 1. We create this job, purely to have a job from which to create a template.
Figure 1: Create your OTA Update job
Step 2: Create your job template from your OTA update job
You can then cancel the dummy job and create a job template from it, as show in Figure 2.
Figure 2: Create your job template from your OTA update job
As per Figure 3, when creating the template you can already enrich it with advanced job configuration options.
Figure 3: Enriching your job template
Step 3: Create a new job from your job template
Using the template, you can create a new job as shown in Figure 4.
Figure 4: Create a new job from your job template
You can then add package versions, as highlighted in Figure 5.
Figure 5: Enriching your job with package versions
And finally, you can further modify or enrich the advanced job configuration before completing the job creation, as seen in Figure 6.
Figure 6: Enriching your job with scheduling and retries
Related questions