AWS CLI を使用した OTA 更新の作成 - FreeRTOS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS CLI を使用した OTA 更新の作成

AWS CLI を使用して OTA 更新を作成するときは、以下の操作を行います。

  1. ファームウェアイメージにデジタル署名します。

  2. デジタル署名されたファームウェアイメージのストリームを作成します。

  3. OTA 更新ジョブを開始します。

ファームウェアの更新にデジタル署名する

AWS CLI を使用して OTA の更新を実行する場合は、Code Signing for AWS IoT を使用するか、ファームウェア更新に署名することができます。Code Signing for AWS IoT によってサポートされている暗号化署名およびハッシュアルゴリズムのリストについては、「SigningConfigurationOverrides」を参照してください。Code Signing for AWS IoT でサポートされていない暗号化アルゴリズムを使用する場合は、Amazon S3 にアップロードする前にファームウェアバイナリに署名する必要があります。

Code Signing for AWS IoT を使用したファームウェアイメージへの署名

Code Signing for AWS IoT を使用してファームウェアイメージに署名するには、AWS SDK またはコマンドラインツールのいずれかを使用できます。Code Signing for AWS IoT の詳細については、「Code Signing for AWS IoT」を参照してください。

コード署名ツールをインストールして設定したら、署名されていないファームウェアイメージを Amazon S3 バケットにコピーし、以下の AWS CLI コマンドを使用してコード署名ジョブを開始します。put-signing-profile コマンドは、再利用可能なコード署名プロファイルを作成します。start-signing-job コマンドは、署名ジョブを開始します。

aws signer put-signing-profile \ --profile-name your_profile_name \ --signing-material certificateArn=arn:aws:acm::your-region:your-aws-account-id:certificate/your-certificate-id \ --platform your-hardware-platform \ --signing-parameters certname=your_certificate_path_on_device
aws signer start-signing-job \ --source 's3={bucketName=your_s3_bucket,key=your_s3_object_key,version=your_s3_object_version_id}' \ --destination 's3={bucketName=your_destination_bucket}' \ --profile-name your_profile_name
注記

your-source-bucket-name および your-destination-bucket-name は、同じ Amazon S3 バケットの名前に置き換えることができます。

これらは put-signing-profile および start-signing-job コマンドのパラメータです。

source

S3 バケット内の符号なしファームウェアの場所を指定します。

  • bucketName: S3 バケットの名前。

  • key: S3 バケット内のファームウェアのキー (ファイル名)。

  • version: S3 バケット内のファームウェアの S3 バージョン。これはファームウェアのバージョンとは異なります。ファームウェアのバージョンは、Amazon S3 コンソールを参照し、バケットを選択して、ページの上部にある [Versions] (バージョン) の横にある [Show] (表示) を選択すると表示されます。

destination

S3 バケット内の署名付きファームウェアがコピーされるデバイスの送信先。このパラメータの形式は、source パラメータと同じです。

signing-material

コード署名証明書の ARN。この ARN は、証明書を ACM にインポートするときに生成されます。

signing-parameters

署名のためのキーと値のペアのマップ。これらには、署名の際に使用する情報が含まれます。

注記

このパラメータは、Code Signing for AWS IoT による OTA の更新への署名で、コード署名プロファイルを作成するときに必要になります。

platform

OTA 更新を配布するハードウェアプラットフォームの platformId

使用可能なプラットフォームとそれらの platformId の値のリストを表示するには、aws signer list-signing-platforms コマンドを使用します。

署名ジョブが開始され、署名済みファームウェアイメージがコピー先の Amazon S3 バケットに書き込まれます。署名済みファームウェアイメージのファイル名は GUID です。ストリームを作成するときは、このファイル名が必要です。このファイル名は、Amazon S3 コンソールを参照し、バケットを選択すると表示されます。GUID ファイル名のファイルが表示されない場合は、ブラウザを更新してください。

このコマンドは、ジョブの ARN とジョブ ID を表示します。これらの値は後で必要になります。Code Signing for AWS IoT の詳細については、「Code Signing for AWS IoT」を参照してください。

手動でファームウェアイメージに署名する

ファームウェアイメージにデジタル署名し、署名済みファームウェアイメージを Amazon S3 バケットにアップロードします。

ファームウェアの更新のストリームを作成する

ストリームは、デバイスによって消費されるデータへの抽象インターフェイスです。ストリームは、異なる場所または異なるクラウドベースのサービスに保存されているデータにアクセスすることの複雑さを隠すことができます。OTA 更新マネージャーサービスを使用すると、Amazon S3 のさまざまな場所に保存されている複数のデータを使用して、OTA 更新を実行できます。

AWS IoT OTA 更新を作成するときに、署名済みのファームウェア更新を含むストリームを作成することもできます。署名済みファームウェアイメージを識別する JSON ファイル (stream.json) を作成します。JSON ファイルには次の内容が含まれています。

[ { "fileId":"your_file_id", "s3Location":{ "bucket":"your_bucket_name", "key":"your_s3_object_key" } } ]

これらは JSON ファイル内の属性です。

fileId

ファームウェアイメージを識別する 0〜255 の任意の整数。

s3Location

ファームウェアがストリーミングするためのバケットとキー。

bucket

署名されていないファームウェアイメージが格納されている Amazon S3 バケット。

key

Amazon S3 バケット内の署名済みファームウェアイメージのファイル名。バケットの内容を調べることによって、Amazon S3 コンソールでこの値を見つけることができます。

Code Signing for AWS IoT を使用している場合、ファイル名は Code Signing for AWS IoT によって生成された GUID になります。

create-stream AWS CLI コマンドを使用して、ストリームを作成します。

aws iot create-stream \ --stream-id your_stream_id \ --description your_description \ --files file://stream.json \ --role-arn your_role_arn

以下に示しているのは、create-stream AWS CLI コマンドの引数です。

stream-id

ストリームを識別する任意の文字列。

description

ストリームの説明 (省略可能)。

files

ストリーミングするファームウェアイメージに関するデータを含む JSON ファイルへの 1 つ以上の参照。JSON ファイルには、次の属性が含まれている必要があります。

fileId

任意のファイル ID。

s3Location

署名済ファームウェアイメージが格納されているバケット名と署名済ファームウェアイメージのキー (ファイル名)。

bucket

署名済ファームウェアイメージが格納されている Amazon S3 バケット。

key

署名済ファームウェアイメージのキー (ファイル名)。

Code Signing for AWS IoT を使用する場合、このキーは GUID になります。

次は、stream.json ファイルの例です。

[ { "fileId":123, "s3Location": { "bucket":"codesign-ota-bucket", "key":"48c67f3c-63bb-4f92-a98a-4ee0fbc2bef6" } } ]
role-arn

ファームウェアイメージが保存されている Amazon S3 バケットへのアクセス権も付与する OTA サービスロール

署名済みファームウェアイメージの Amazon S3 オブジェクトキーを検索するには、aws signer describe-signing-job --job-id my-job-id コマンドを使用します。my-job-id は、create-signing-job AWS CLI コマンドで表示されるジョブ ID です。describe-signing-job コマンドの出力には、署名済ファームウェアイメージのキーが含まれています。

... text deleted for brevity ... "signedObject": { "s3": { "bucketName": "ota-bucket", "key": "7309da2c-9111-48ac-8ee4-5a4262af4429" } } ... text deleted for brevity ...

OTA 更新の作成

OTA 更新ジョブを作成するには、create-ota-update AWS CLI コマンドを使用します。

注記

OTA 更新のジョブ ID に個人を特定できる情報 (PII) を使用しないでください。個人を特定できる情報の例は以下のとおりです。

  • 名前

  • IP アドレス

  • E メールアドレス

  • ロケーション

  • 銀行の情報

  • 医療情報

aws iot create-ota-update \ --ota-update-id value \ [--description value] \ --targets value \ [--protocols value] \ [--target-selection value] \ [--aws-job-executions-rollout-config value] \ [--aws-job-presigned-url-config value] \ [--aws-job-abort-config value] \ [--aws-job-timeout-config value] \ --files value \ --role-arn value \ [--additional-parameters value] \ [--tags value] \ [--cli-input-json value] \ [--generate-cli-skeleton]

cli-input-json 形式

{ "otaUpdateId": "string", "description": "string", "targets": [ "string" ], "protocols": [ "string" ], "targetSelection": "string", "awsJobExecutionsRolloutConfig": { "maximumPerMinute": "integer", "exponentialRate": { "baseRatePerMinute": "integer", "incrementFactor": "double", "rateIncreaseCriteria": { "numberOfNotifiedThings": "integer", "numberOfSucceededThings": "integer" } } }, "awsJobPresignedUrlConfig": { "expiresInSec": "long" }, "awsJobAbortConfig": { "abortCriteriaList": [ { "failureType": "string", "action": "string", "thresholdPercentage": "double", "minNumberOfExecutedThings": "integer" } ] }, "awsJobTimeoutConfig": { "inProgressTimeoutInMinutes": "long" }, "files": [ { "fileName": "string", "fileType": "integer", "fileVersion": "string", "fileLocation": { "stream": { "streamId": "string", "fileId": "integer" }, "s3Location": { "bucket": "string", "key": "string", "version": "string" } }, "codeSigning": { "awsSignerJobId": "string", "startSigningJobParameter": { "signingProfileParameter": { "certificateArn": "string", "platform": "string", "certificatePathOnDevice": "string" }, "signingProfileName": "string", "destination": { "s3Destination": { "bucket": "string", "prefix": "string" } } }, "customCodeSigning": { "signature": { "inlineDocument": "blob" }, "certificateChain": { "certificateName": "string", "inlineDocument": "string" }, "hashAlgorithm": "string", "signatureAlgorithm": "string" } }, "attributes": { "string": "string" } } ], "roleArn": "string", "additionalParameters": { "string": "string" }, "tags": [ { "Key": "string", "Value": "string" } ] }
cli-input-json フィールド

名前

説明

otaUpdateId

string

(最大: 128 最小: 1)

作成する OTA 更新の ID。

description

文字列

(最大: 2028)

OTA 更新の説明。

targets

list

OTA 更新を受信するターゲットデバイス。

protocols

list

OTA 更新イメージの転送に使用されるプロトコル。有効な値は、[HTTP]、[MQTT]、[HTTP, MQTT] です。HTTP と MQTT の両方が指定されている場合、対象のデバイスはプロトコルを選ぶことができます。

targetSelection

文字列

更新が継続して実行される (CONTINUOUS) か、ターゲットとして指定されたすべてのモノが更新を完了した後に完了する (SNAPSHOT) かどうかを指定します。CONTINUOUS の場合は、ターゲットで変更が検出されたときに、モノで更新を実行することもできます。たとえば、グループ内に元からあったすべてのモノによって更新が完了した後でも、そのモノがターゲットグループに追加されると、そのモノで更新が実行されます。有効な値: CONTINUOUS | SNAPSHOT

enum: CONTINUOUS | SNAPSHOT

awsJobExecutionsRolloutConfig

OTA 更新のロールアウトのための設定。

maximumPerMinute

integer

(最大: 1000 最小: 1)

1 分ごとに開始される OTA 更新ジョブの実行の最大数。

exponentialRate

ジョブのロールアウトに対する増加レート。このパラメータによりジョブのロールアウトに対する指数レートの上昇を定義できます。

baseRatePerMinute

integer

(最大: 1000 最小: 1)

保留中のジョブを 1 分間で通知する最小数 (ジョブのロールアウト開始時)。これは、ロールアウトの初期レートです。

rateIncreaseCriteria

ジョブのロールアウトでレートの増加を開始する基準。

AWS IoT では、小数点以下 1 桁 (たとえば、1.55 ではなく 1.5) までサポートします。

numberOfNotifiedThings

integer

(最小: 1)

この数のモノが通知されると、ロールアウトレートの上昇が開始します。

numberOfSucceededThings

integer

(最小: 1)

この数のモノがジョブの実行時に成功すると、ロールアウトレートの上昇が開始します。

awsJobPresignedUrlConfig

署名付き URL に関する構成情報。

expiresInSec

long

署名付き URL が有効である時間の長さ (秒) です。有効な値は 60 から 3600 で、規定値は 1800 秒です。署名付き URL は、ジョブドキュメントのリクエストを受信したときに生成されます。

awsJobAbortConfig

ジョブの停止がいつどのように行われるかを決定する基準。

abortCriteriaList

list

ジョブをいつどのように停止するかを決定する基準のリスト。

failureType

文字列

ジョブの停止を開始できるジョブ実行失敗のタイプ。

enum: FAILED | REJECTED | TIMED_OUT | ALL

action

文字列

ジョブの停止を開始するために実行するジョブアクションのタイプ。

enum: CANCEL

minNumberOfExecutedThings

integer

(最小: 1)

ジョブを停止する前に、ジョブ実行通知を受け取る必要があるモノの最小数。

awsJobTimeoutConfig

各デバイスがジョブの実行を終了する必要のある時間を指定します。ジョブの実行ステータスが IN_PROGRESS に設定されると、タイマーが開始されます。タイマーが時間切れになるまでにジョブの実行ステータスが別の終了ステータスに設定されない場合は、自動的に TIMED_OUT に設定されます。

inProgressTimeoutInMinutes

long

このデバイスがこのジョブの実行を終了する必要のある時間を分単位で指定します。タイムアウト間隔は 1 分〜 7 日 (1 〜 10,080 分) の範囲で指定できます。進捗タイマーは更新できず、ジョブのすべての実行に適用されます。ジョブの実行がこの間隔より長時間、IN_PROGRESS ステータスのままになるたびに、ジョブの実行は失敗し、終了ステータス TIMED_OUT に切り替わります。

files

list

OTA 更新によってストリーミングされるファイル。

fileName

文字列

ファイルの名前。

fileType

integer

range- max:255 min:0

クラウドから受信したファイルの種類をデバイスで識別するために、ジョブドキュメントに含めることができる整数値。

fileVersion

文字列

ファイルのバージョン。

fileLocation

更新されたファームウェアの場所。

stream

OTA 更新を含むストリーム。

streamId

文字列

(最大: 128 最小: 1)

ストリーム ID。

fileId

integer

(最大: 255 最小: 0)

ストリームに関連付けられたファイルの ID。

s3Location

S3 での更新されたファームウェアの場所。

bucket

文字列

(最小: 1)

S3 バケット。

key

文字列

(最小: 1)

S3 キー。

version

文字列

S3 バケットのバージョン。

codeSigning

ファイルのコード署名方法。

awsSignerJobId

文字列

ファイルに署名するために作成された AWSSignerJob の ID。

startSigningJobParameter

コード署名ジョブの説明。

signingProfileParameter

コード署名プロファイルの説明。

certificateArn

文字列

証明書の ARN。

platform

文字列

デバイスのハードウェアプラットフォーム。

certificatePathOnDevice

文字列

デバイス上のコード署名証明書の場所。

signingProfileName

文字列

コード署名プロファイルの名前。

destination

コード署名付きファイルを書き込む場所。

s3Destination

S3 での更新されたファームウェアの場所の説明。

bucket

文字列

(最小: 1)

更新されたファームウェアを含む S3 バケット。

prefix

文字列

S3 プレフィックス。

customCodeSigning

ファイルにコードを署名するためのカスタムメソッド。

signature

ファイルの署名。

inlineDocument

blob

コード署名の base64 でエンコードされたバイナリ表現。

certificateChain

証明書チェーン。

certificateName

文字列

証明書の名前

inlineDocument

文字列

署名証明書チェーンの base64 でエンコードされたバイナリ表現。

hashAlgorithm

文字列

ファイルに符号を付けるために使用されるハッシュアルゴリズム。

signatureAlgorithm

文字列

ファイルに符号を付けるために使用される署名アルゴリズム。

attributes

map

名前と属性のペアのリスト。

roleArn

文字列

(最大: 2048 最小: 20)

Amazon S3、AWS IoT ジョブ、および AWS コード署名リソースへのアクセスを AWS IoT に許可し、OTA 更新ジョブを作成する IAM ロール。

additionalParameters

map

名前と値のペアである追加の OTA 更新パラメータのリスト。

tags

list

アップデートを管理するために使用できるメタデータ。

Key

文字列

(最大: 128 最小: 1)

タグのキー。

Value

文字列

(最大: 256 最小: 1)

タグの値。

出力

{ "otaUpdateId": "string", "awsIotJobId": "string", "otaUpdateArn": "string", "awsIotJobArn": "string", "otaUpdateStatus": "string" }
AWS CLI 出力フィールド

名前

説明

otaUpdateId

string

(最大: 128 最小: 1)

OTA 更新 ID。

awsIotJobId

文字列

OTA 更新に関連付けられた AWS IoT ジョブ ID。

otaUpdateArn

文字列

OTA 更新 ARN。

awsIotJobArn

文字列

OTA 更新に関連付けられた AWS IoT ジョブ ARN。

otaUpdateStatus

文字列

OTA 更新のステータス。

enum: CREATE_PENDING | CREATE_IN_PROGRESS | CREATE_COMPLETE | CREATE_FAILED

Code Signing for AWS IoT を使用する create-ota-update というコマンドに渡される JSON ファイルの例を次に示します。

[ { "fileName": "firmware.bin", "fileType": 1, "fileLocation": { "stream": { "streamId": "004", "fileId":123 } }, "codeSigning": { "awsSignerJobId": "48c67f3c-63bb-4f92-a98a-4ee0fbc2bef6" } } ]

インラインファイルを使用してカスタムコード署名マテリアルを提供する create-ota-update AWS CLI コマンドに渡される JSON ファイルの例を次に示します。

[ { "fileName": "firmware.bin", "fileType": 1, "fileLocation": { "stream": { "streamId": "004", "fileId": 123 } }, "codeSigning": { "customCodeSigning":{ "signature":{ "inlineDocument":"your_signature" }, "certificateChain": { "certificateName": "your_certificate_name", "inlineDocument":"your_certificate_chain" }, "hashAlgorithm":"your_hash_algorithm", "signatureAlgorithm":"your_signature_algorithm" } } } ]

FreeRTOS OTA がコード署名ジョブを開始し、コード署名のプロファイルとストリームを作成できるようにする create-ota-update AWS CLI コマンドに渡される JSON ファイルの例を以下に示します。

[ { "fileName": "your_firmware_path_on_device", "fileType": 1, "fileVersion": "1", "fileLocation": { "s3Location": { "bucket": "your_bucket_name", "key": "your_object_key", "version": "your_S3_object_version" } }, "codeSigning":{ "startSigningJobParameter":{ "signingProfileName": "myTestProfile", "signingProfileParameter": { "certificateArn": "your_certificate_arn", "platform": "your_platform_id", "certificatePathOnDevice": "certificate_path" }, "destination": { "s3Destination": { "bucket": "your_destination_bucket" } } } } } ]

既存のプロファイルを使用してコード署名ジョブを開始し、指定されたストリームを使用する OTA 更新を作成する create-ota-update AWS CLI コマンドに渡される JSON ファイルの例を以下に示します。

[ { "fileName": "your_firmware_path_on_device", "fileType": 1, "fileVersion": "1", "fileLocation": { "s3Location": { "bucket": "your_s3_bucket_name", "key": "your_object_key", "version": "your_S3_object_version" } }, "codeSigning":{ "startSigningJobParameter":{ "signingProfileName": "your_unique_profile_name", "destination": { "s3Destination": { "bucket": "your_destination_bucket" } } } } } ]

FreeRTOS OTA が既存のコード署名ジョブ ID でストリームを作成できるようにする create-ota-update AWS CLI コマンドに渡される JSON ファイルの例を以下に示します。

[ { "fileName": "your_firmware_path_on_device", "fileType": 1, "fileVersion": "1", "codeSigning":{ "awsSignerJobId": "your_signer_job_id" } } ]

OTA 更新を作成する create-ota-update AWS CLI コマンドに渡される JSON ファイルの例を次に示します。この更新では、指定された S3 オブジェクトからストリームが作成され、カスタムコード署名が使用されます。

[ { "fileName": "your_firmware_path_on_device", "fileType": 1, "fileVersion": "1", "fileLocation": { "s3Location": { "bucket": "your_bucket_name", "key": "your_object_key", "version": "your_S3_object_version" } }, "codeSigning":{ "customCodeSigning": { "signature":{ "inlineDocument":"your_signature" }, "certificateChain": { "inlineDocument":"your_certificate_chain", "certificateName": "your_certificate_path_on_device" }, "hashAlgorithm":"your_hash_algorithm", "signatureAlgorithm":"your_sig_algorithm" } } } ]

OTA 更新を一覧表示する

すべての OTA 更新のリストを取得するには、list-ota-updates AWS CLI コマンドを使用できます。

aws iot list-ota-updates

コマンド list-ota-updates の出力は次のようになります。

{ "otaUpdates": [ { "otaUpdateId": "my_ota_update2", "otaUpdateArn": "arn:aws:iot:us-west-2:123456789012:otaupdate/my_ota_update2", "creationDate": 1522778769.042 }, { "otaUpdateId": "my_ota_update1", "otaUpdateArn": "arn:aws:iot:us-west-2:123456789012:otaupdate/my_ota_update1", "creationDate": 1522775938.956 }, { "otaUpdateId": "my_ota_update", "otaUpdateArn": "arn:aws:iot:us-west-2:123456789012:otaupdate/my_ota_update", "creationDate": 1522775151.031 } ] }

OTA 更新に関する情報の取得

get-ota-update AWS CLI コマンドを使用して、OTA 更新の作成または削除のステータスを取得できます。

aws iot get-ota-update --ota-update-id your-ota-update-id

get-ota-update コマンドからの出力は以下のようになります。

{ "otaUpdateInfo": { "otaUpdateId": "ota-update-001", "otaUpdateArn": "arn:aws:iot:region:123456789012:otaupdate/ota-update-001", "creationDate": 1575414146.286, "lastModifiedDate": 1575414149.091, "targets": [ "arn:aws:iot:region:123456789012:thing/myDevice" ], "protocols": [ "HTTP" ], "awsJobExecutionsRolloutConfig": { "maximumPerMinute": 0 }, "awsJobPresignedUrlConfig": { "expiresInSec": 1800 }, "targetSelection": "SNAPSHOT", "otaUpdateFiles": [ { "fileName": "my_firmware.bin", "fileType": 1, "fileLocation": { "s3Location": { "bucket": "my-bucket", "key": "my_firmware.bin", "version": "AvP3bfJC9gyqnwoxPHuTqM5GWENt4iii" } }, "codeSigning": { "awsSignerJobId": "b7a55a54-fae5-4d3a-b589-97ed103737c2", "startSigningJobParameter": { "signingProfileParameter": {}, "signingProfileName": "my-profile-name", "destination": { "s3Destination": { "bucket": "some-ota-bucket", "prefix": "SignedImages/" } } }, "customCodeSigning": {} } } ], "otaUpdateStatus": "CREATE_COMPLETE", "awsIotJobId": "AFR_OTA-ota-update-001", "awsIotJobArn": "arn:aws:iot:region:123456789012:job/AFR_OTA-ota-update-001" } }

otaUpdateStatus に戻される値には次のものがあります。

CREATE_PENDING

OTA 更新の作成は保留中です。

CREATE_IN_PROGRESS

OTA 更新が作成されています。

CREATE_COMPLETE

OTA 更新が作成されました。

CREATE_FAILED

OTA 更新の作成に失敗しました。

DELETE_IN_PROGRESS

OTA 更新が削除中です。

DELETE_FAILED

OTA 更新の削除に失敗しました。

注記

OTA 更新の作成後にその実行ステータスを取得するには、describe-job-execution コマンドを使用する必要があります。詳細については、ジョブ実行の説明を参照してください。

OTA 関連データの削除

現時点では、AWS IoT コンソールを使用してストリームまたは OTA 更新を削除することはできません。AWS CLI を使用して、OTA 更新中に作成されたストリーム、OTA 更新、AWS IoT ジョブを削除できます。

OTA ストリームを削除する

MQTT を使用する OTA 更新を作成する場合、コマンドラインまたは AWS IoT コンソールを使用して、ファームウェアをチャンクに分割して MQTT 経由で送信できるようにストリームを作成できます。次の例に示すように、delete-stream AWS CLI コマンドを使用してこのストリームを削除できます。

aws iot delete-stream --stream-id your_stream_id

OTA ストリームの削除

OTA 更新の作成時、以下が作成されます。

  • OTA 更新ジョブデータベース内のエントリ。

  • 更新を実行する AWS IoT ジョブ。

  • 更新される各デバイスの AWS IoT ジョブ実行。

delete-ota-update コマンドは、OTA 更新ジョブデータベース内のエントリのみを削除します。AWS IoT ジョブを削除するには、delete-job コマンドを使用する必要があります。

delete-ota-update コマンドを使用して、OTA 更新を削除します。

aws iot delete-ota-update --ota-update-id your_ota_update_id
ota-update-id

削除する OTA 更新の ID。

delete-stream

OTA 更新に関連付けられたストリームを削除します。

force-delete-aws-job

OTA 更新に関連付けられた AWS IoT ジョブを削除します。このフラグが設定されておらず、ジョブが In_Progress 状態の場合、ジョブは削除されません。

OTA 更新用に作成された IoT ジョブを削除する

FreeRTOS は、OTA 更新を作成するときに AWS IoT ジョブを作成します。ジョブの実行は、ジョブを処理するデバイスごとにも作成されます。delete-job AWS CLI コマンドを使用して、ジョブおよび関連するジョブの実行を削除できます。

aws iot delete-job --job-id your-job-id --no-force

no-force パラメータは、終了状態のジョブ (COMPLETED または CANCELLED) のみを削除できるように指定します。force パラメータを渡すことによって、非ターミナルステータスにあるジョブを削除することができます。詳細については、DeleteJob API を参照してください。

注記

ステータスが IN_PROGRESS のジョブを削除すると、デバイスの IN_PROGRESS であるジョブの実行が中断され、デバイスが非決定的な状態になる場合があります。削除されたジョブを実行している各デバイスが既知の状態に回復できることを確認します。

ジョブ用に作成されたジョブ実行の数およびその他の要素に応じて、ジョブの削除に時間がかかる場合があります。ジョブが削除されている間、そのステータスは DELETION_IN_PROGRESS です。ステータスがすでに DELETION_IN_PROGRESS のジョブを削除あるいはキャンセルしようとすると、エラーになります。

delete-job-execution を使用してジョブの実行を削除できます。いくらかのデバイスがジョブを処理できない場合、ジョブの実行を削除することをお勧めします。これにより、次の例に示すように、単一のデバイスのジョブ実行が削除されます。

aws iot delete-job-execution --job-id your-job-id --thing-name your-thing-name --execution-number your-job-execution-number --no-force

delete-job AWS CLI コマンドの場合と同様に、delete-job-execution--force パラメータを渡して強制的にジョブの実行を削除できます。詳細については、DeleteJobExecution API を参照してください。

注記

ステータスが IN_PROGRESS のジョブの実行を削除すると、デバイスの IN_PROGRESS であるジョブの実行が中断され、デバイスが非決定的な状態になる場合があります。削除されたジョブを実行している各デバイスが既知の状態に回復できることを確認します。

OTA 更新デモアプリケーションを使用する方法の詳細については、「無線通信経由更新デモアプリケーション」を参照してください。