ファームウェアの更新
すべての IoT ソリューションでは、デバイスのファームウェアの更新が許可されている必要があります。セキュリティ、スケーラビリティ、新機能の提供には、人間による介入なしでファームウェアのアップグレードをサポートすることが不可欠です。
AWS IoT Device Management は、ファームウェアアップデートの実行とステータスの追跡など、IoT デプロイを管理するための安全で簡単な方法を提供します。AWS IoT Device Management は、AWS IoT メッセージブローカーと AWS IoT ジョブで MQTT プロトコルを使用して、ファームウェア更新コマンドをデバイスに送信するとともに、それらのファームウェア更新のステータスを経時的に受信します。
IoT ソリューションでは、この機能を提供するために、次の図に示す AWS IoT ジョブを使用してファームウェア更新を実装する必要があります。

図 5: デバイスのファームウェアの更新
-
デバイスは、IoT ジョブ通知メッセージが到着する IoT ジョブ通知トピック deviceId/jobs/notify-next にサブスクライブします。
-
デバイスは deviceId/jobs/start-next にメッセージをパブリッシュして、次のジョブを開始し、次のジョブ、ジョブドキュメント、および statusDetails に保存された状態を含むその他の詳細を取得します。
-
AWS IoT Jobs サービスは、特定のデバイスの次のジョブドキュメントを取得し、サブスクライブされたトピック deviceId/jobs/start-next/accepted にこのドキュメントを送信します。
-
デバイスは、 deviceId/jobs/jobId/update MQTT トピックを使用してジョブドキュメントで指定されたアクションを実行し、ジョブの進行状況をレポートします。
-
アップグレードプロセス中に、デバイスは Amazon S3 の署名付き URL を使用してファームウェアをダウンロードします。Amazon S3 にアップロードするときに、コード署名を使用してファームウェアに署名します。エンドデバイスは、ファームウェアにコード署名することで、インストール前にファームウェアの信頼性を検証できます。Amazon FreeRTOS デバイスは MQTT 経由でファームウェアイメージを直接ダウンロードできるため、個別の HTTPS 接続が不要になります。
-
デバイスは、成功または失敗を報告するジョブトピック deviceId/jobs/jobId/update に更新ステータスメッセージをパブリッシュします。
-
このジョブの実行ステータスは最終状態に変更されているため、実行可能な次の IoT ジョブ (存在する場合) が変更されます。