AWS CLI を使用した OTA 更新の作成
AWS CLI を使用して OTA 更新を作成するときは、以下の操作を行います。
-
ファームウェアイメージにデジタル署名します。
-
デジタル署名されたファームウェアイメージのストリームを作成します。
-
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 またはコマンドラインツール
コード署名ツールをインストールして設定したら、署名されていないファームウェアイメージを Amazon S3 バケットにコピーし、以下の AWS CLI コマンドを使用してコード署名ジョブを開始します。put-signing-profile コマンドは、再利用可能なコード署名プロファイルを作成します。start-signing-job コマンドは、署名ジョブを開始します。
aws signer put-signing-profile \ --profile-nameyour_profile_name\ --signing-material certificateArn=arn:aws:acm::your-region:your-aws-account-id:certificate/your-certificate-id\ --platformyour-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-nameyour_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-idyour_stream_id\ --descriptionyour_description\ --files file://stream.json\ --role-arnyour_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-idvalue\ [--descriptionvalue] \ --targetsvalue\ [--protocolsvalue] \ [--target-selectionvalue] \ [--aws-job-executions-rollout-configvalue] \ [--aws-job-presigned-url-configvalue] \ [--aws-job-abort-configvalue] \ [--aws-job-timeout-configvalue] \ --filesvalue\ --role-arnvalue\ [--additional-parametersvalue] \ [--tagsvalue] \ [--cli-input-jsonvalue] \ [--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" } ] }
名前 |
型 |
説明 |
|---|---|---|
|
string (最大: 128 最小: 1) |
作成する OTA 更新の ID。 |
|
string (最大: 2028) |
OTA 更新の説明。 |
|
リスト |
OTA 更新を受信するターゲットデバイス。 |
|
リスト |
OTA 更新イメージの転送に使用されるプロトコル。有効な値は、[HTTP]、[MQTT]、[HTTP, MQTT] です。HTTP と MQTT の両方が指定されている場合、対象のデバイスはプロトコルを選ぶことができます。 |
|
string |
更新が継続して実行される (CONTINUOUS) か、ターゲットとして指定されたすべてのモノが更新を完了した後に完了する (SNAPSHOT) かどうかを指定します。CONTINUOUS の場合は、ターゲットで変更が検出されたときに、モノで更新を実行することもできます。たとえば、グループ内に元からあったすべてのモノによって更新が完了した後でも、そのモノがターゲットグループに追加されると、そのモノで更新が実行されます。有効な値: CONTINUOUS | SNAPSHOT enum: CONTINUOUS | SNAPSHOT |
|
OTA 更新のロールアウトのための設定。 |
|
|
integer (最大: 1000 最小: 1) |
1 分ごとに開始される OTA 更新ジョブの実行の最大数。 |
|
ジョブのロールアウトに対する増加レート。このパラメータによりジョブのロールアウトに対する指数レートの上昇を定義できます。 |
|
|
integer (最大: 1000 最小: 1) |
保留中のジョブを 1 分間で通知する最小数 (ジョブのロールアウト開始時)。これは、ロールアウトの初期レートです。 |
|
|
ジョブのロールアウトでレートの増加を開始する基準。 AWS IoT では、小数点以下 1 桁 (たとえば、1.55 ではなく 1.5) までサポートします。 |
|
|
|
integer (最小: 1) |
この数のモノが通知されると、ロールアウトレートの上昇が開始します。 |
|
|
integer (最小: 1) |
この数のモノがジョブの実行時に成功すると、ロールアウトレートの上昇が開始します。 |
|
署名付き URL に関する構成情報。 |
|
|
|
long |
署名付き URL が有効である時間の長さ (秒) です。有効な値は 60 から 3600 で、規定値は 1800 秒です。署名付き URL は、ジョブドキュメントのリクエストを受信したときに生成されます。 |
|
|
ジョブの停止がいつどのように行われるかを決定する基準。 |
|
|
|
リスト |
ジョブをいつどのように停止するかを決定する基準のリスト。 |
|
|
string |
ジョブの停止を開始できるジョブ実行失敗のタイプ。 enum: FAILED | REJECTED | TIMED_OUT | ALL |
|
|
string |
ジョブの停止を開始するために実行するジョブアクションのタイプ。 enum: CANCEL |
|
|
integer (最小: 1) |
ジョブを停止する前に、ジョブ実行通知を受け取る必要があるモノの最小数。 |
|
|
各デバイスがジョブの実行を終了する必要のある時間を指定します。ジョブの実行ステータスが |
|
|
|
long |
このデバイスがこのジョブの実行を終了する必要のある時間を分単位で指定します。タイムアウト間隔は 1 分〜 7 日 (1 〜 10,080 分) の範囲で指定できます。進捗タイマーは更新できず、ジョブのすべての実行に適用されます。ジョブの実行がこの間隔より長時間、IN_PROGRESS ステータスのままになるたびに、ジョブの実行は失敗し、終了ステータス |
|
|
リスト |
OTA 更新によってストリーミングされるファイル。 |
|
|
string |
ファイルの名前。 |
|
|
integer range- max:255 min:0 |
クラウドから受信したファイルの種類をデバイスで識別するために、ジョブドキュメントに含めることができる整数値。 |
|
|
string |
ファイルのバージョン。 |
|
|
更新されたファームウェアの場所。 |
|
|
|
OTA 更新を含むストリーム。 |
|
|
|
string (最大: 128 最小: 1) |
ストリーム ID。 |
|
|
integer (最大: 255 最小: 0) |
ストリームに関連付けられたファイルの ID。 |
|
|
S3 での更新されたファームウェアの場所。 |
|
|
|
string (最小: 1) |
S3 バケット。 |
|
|
string (最小: 1) |
S3 キー。 |
|
|
string |
S3 バケットのバージョン。 |
|
|
ファイルのコード署名方法。 |
|
|
|
string |
ファイルに署名するために作成された AWSSignerJob の ID。 |
|
|
コード署名ジョブの説明。 |
|
|
|
コード署名プロファイルの説明。 |
|
|
|
string |
証明書の ARN。 |
|
|
string |
デバイスのハードウェアプラットフォーム。 |
|
|
string |
デバイス上のコード署名証明書の場所。 |
|
|
string |
コード署名プロファイルの名前。 |
|
|
コード署名付きファイルを書き込む場所。 |
|
|
|
S3 での更新されたファームウェアの場所の説明。 |
|
|
|
string (最小: 1) |
更新されたファームウェアを含む S3 バケット。 |
|
|
string |
S3 プレフィックス。 |
|
|
ファイルにコードを署名するためのカスタムメソッド。 |
|
|
|
ファイルの署名。 |
|
|
|
blob |
コード署名の base64 でエンコードされたバイナリ表現。 |
|
|
証明書チェーン。 |
|
|
|
string |
証明書の名前 |
|
|
string |
署名証明書チェーンの base64 でエンコードされたバイナリ表現。 |
|
|
string |
ファイルに符号を付けるために使用されるハッシュアルゴリズム。 |
|
|
string |
ファイルに符号を付けるために使用される署名アルゴリズム。 |
|
|
マップ |
名前と属性のペアのリスト。 |
|
|
string (最大: 2048 最小: 20) |
Amazon S3、AWS IoT ジョブ、および AWS コード署名リソースへのアクセスを AWS IoT に許可し、OTA 更新ジョブを作成する IAM ロール。 |
|
|
マップ |
名前と値のペアである追加の OTA 更新パラメータのリスト。 |
|
|
リスト |
アップデートを管理するために使用できるメタデータ。 |
|
|
string (最大: 128 最小: 1) |
タグのキー。 |
|
|
string (最大: 256 最小: 1) |
タグの値。 |
Output
{ "otaUpdateId": "string", "awsIotJobId": "string", "otaUpdateArn": "string", "awsIotJobArn": "string", "otaUpdateStatus": "string" }
|
名前 |
型 |
説明 |
|---|---|---|
|
|
string (最大: 128 最小: 1) |
OTA 更新 ID。 |
|
|
string |
OTA 更新に関連付けられた AWS IoT ジョブ ID。 |
|
|
string |
OTA 更新 ARN。 |
|
|
string |
OTA 更新に関連付けられた AWS IoT ジョブ ARN。 |
|
|
string |
OTA 更新のステータス。 enum: CREATE_PENDING | CREATE_IN_PROGRESS | CREATE_COMPLETE | CREATE_FAILED |
Code Signing for create-ota-update を使用する AWS IoT というコマンドに渡される 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-idyour-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-idyour_stream_id
OTA ストリームの削除
OTA 更新の作成時、以下が作成されます。
-
OTA 更新ジョブデータベース内のエントリ。
-
更新を実行する AWS IoT ジョブ。
-
更新される各デバイスの AWS IoT ジョブ実行。
delete-ota-update コマンドは、OTA 更新ジョブデータベース内のエントリのみを削除します。delete-job ジョブを削除するには、AWS IoT コマンドを使用する必要があります。
delete-ota-update コマンドを使用して、OTA 更新を削除します。
aws iot delete-ota-update --ota-update-idyour_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-idyour-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-idyour-job-id--thing-nameyour-thing-name--execution-numberyour-job-execution-number--no-force
delete-job AWS CLI コマンドの場合と同様に、delete-job-execution に --force パラメータを渡して強制的にジョブの実行を削除できます。詳細については、DeleteJobExecution API を参照してください。
注記
ステータスが IN_PROGRESS のジョブの実行を削除すると、デバイスの IN_PROGRESS であるジョブの実行が中断され、デバイスが非決定的な状態になる場合があります。削除されたジョブを実行している各デバイスが既知の状態に回復できることを確認します。
OTA 更新デモアプリケーションを使用する方法の詳細については、「無線通信経由更新デモアプリケーション」を参照してください。