使用 建立OTA更新 AWS CLI - 免費RTOS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 建立OTA更新 AWS CLI

當您使用 AWS CLI 建立OTA更新時,您會:

  1. 數位簽署您的韌體映像。

  2. 建立您數位簽署韌體映像的串流。

  3. 啟動OTA更新任務。

數位簽署您的韌體更新

當您使用 AWS CLI 執行OTA更新時,您可以使用 的程式碼簽署 AWS IoT,也可以自行簽署韌體更新。如需 Code Signing for 支援的密碼編譯簽署和雜湊演算法清單 AWS IoT,請參閱 SigningConfigurationOverrides。如果您想要使用 Code Signing for 不支援的密碼編譯演算法 AWS IoT,您必須先簽署韌體二進位檔,才能將其上傳至 Amazon S3。

使用 Code Signing for 簽署您的韌體映像 AWS IoT

若要使用 的程式碼簽署來簽署韌體映像 AWS IoT,您可以使用其中一個 AWS SDKs或 命令列工具 。如需 程式碼簽署的詳細資訊 AWS IoT,請參閱 程式碼簽署 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-profilestart-signing-job 命令的參數:

source

指定 S3 儲存貯體中未簽署韌體的位置。

  • bucketName:您 S3 儲存貯體的名稱。

  • key:您 S3 儲存貯體中韌體的金鑰 (檔案名稱)。

  • version:您 S3 儲存貯體中韌體的 S3 版本。這與您的韌體版本不同。您可以瀏覽至 Amazon S3 主控台、選擇儲存貯體,並在頁面頂端的版本 旁選擇顯示 來尋找它。

destination

S3 儲存貯體中簽署的韌體將複製到其裝置上的目的地。此參數的格式與 source 參數相同。

signing-material

您程式碼簽署憑證ARN的 。當您將憑證匯入 時ARN,就會產生此值ACM。

signing-parameters

用於簽署的鍵/值對映射。這些可包含任何您希望在簽署期間使用的資訊。

注意

當您建立程式碼簽署設定檔以使用 的程式碼簽署簽署OTA更新時,需要此參數 AWS IoT。

platform

您要向其分發OTA更新的硬體平台platformId的 。

若要傳回可用平台及其 platformId 值的清單,請使用 aws signer list-signing-platforms 命令。

簽署任務會啟動並將簽署的韌體映像寫入目的地 Amazon S3 儲存貯體。已簽署韌體映像的檔案名稱為 GUID。當您建立串流時,會需要此檔案名稱。您可以瀏覽至 Amazon S3 主控台並選擇儲存貯體來尋找檔案名稱。如果您看不到檔案名稱為 的檔案GUID,請重新整理瀏覽器。

命令會顯示任務ARN和任務 ID。您稍後會需要這些值。如需 程式碼簽署的詳細資訊 AWS IoT,請參閱 程式碼簽署 AWS IoT

手動簽署您的韌體映像

以數位方式簽署您的韌體映像,並將已簽章的韌體映像上傳至您的 Amazon S3 儲存貯體。

建立您韌體更新的串流

串流是可以由裝置使用之資料的抽象介面。串流可以隱藏下列動作的複雜性:存取在不同位置或不同雲端型服務中存放的資料。OTA Update Manager 服務可讓您使用儲存在 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 主控台中找到此值,方法是查看儲存貯體的內容。

如果您使用的是 的程式碼簽署 AWS IoT,則檔案名稱是由 的程式碼簽署GUID產生的 AWS IoT。

使用 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檔案,其中包含要串流之韌體映像的資料。JSON 檔案必須包含下列屬性:

fileId

任意的檔案 ID。

s3Location

儲存貯體名稱,其中存放了已簽署的韌體映像及已簽署韌體映像的鍵 (檔案名稱)。

bucket

存放已簽署韌體映像的 Amazon S3 儲存貯體。

key

已簽署韌體映像的鍵 (檔案名稱)。

當您使用 的程式碼簽署時 AWS IoT,此金鑰是 GUID。

以下是範例 stream.json 檔案。

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

OTA 服務角色也會授予儲存韌體映像的 Amazon S3 儲存貯體存取權。

若要尋找已簽署韌體映像的 Amazon S3 物件金鑰,請使用 aws signer describe-signing-job --job-id my-job-id命令,其中 my-job-idcreate-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更新

使用 create-ota-update AWS CLI 命令來建立OTA更新任務。

注意

請勿在OTA更新任務 ID 中使用任何個人身分資訊 (PII)。個人識別資訊的範例包括:

  • 名稱。

  • IP 地址。

  • 電子郵件地址。

  • 位置

  • 銀行詳細資訊。

  • 醫療資訊。

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 欄位

名稱

Type

描述

otaUpdateId

string

(上限:128;下限:1)

要建立的OTA更新 ID。

description

string

(上限:2028)

OTA 更新的說明。

targets

列出

以接收OTA更新為目標的裝置。

protocols

列出

用於傳輸OTA更新映像的通訊協定。有效值為 【HTTP】、【MQTT】、【HTTP、MQTT】。同時指定 MQTT HTTP和 時,目標裝置可以選擇通訊協定。

targetSelection

string

指定更新是否會繼續執行 (CONTINUOUS),或在指定為目標的所有項目完成更新 () 之後完成SNAPSHOT。如果是 CONTINUOUS,則在目標中偵測到變更時,更新也可能會運作於物件上。例如,當物件新增至目標群組,更新就會在物件上運作,即使該更新已被原本就在群組中的所有物件完成。有效值: CONTINUOUS | SNAPSHOT。

列舉: CONTINUOUS | SNAPSHOT

awsJobExecutionsRolloutConfig

推出OTA更新的組態。

maximumPerMinute

integer

(上限:1000;下限:1)

每分鐘啟動的OTA更新任務執行次數上限。

exponentialRate

任務推展的增加率。此參數可讓您為任務推展定義指數增加率。

baseRatePerMinute

integer

(上限:1000;下限:1)

在任務推展開始時,每分鐘通知待處理任務的最低物件數量。這是推展的初始率。

rateIncreaseCriteria

任務啟動增加推展速率的條件。

AWS IoT 支援十進位後最多一個數字 (例如 1.5,但不支援 1.55)。

numberOfNotifiedThings

integer

(下限:1)

收到此物件數量通知時,它會啟動推展率的增加。

numberOfSucceededThings

integer

(下限:1)

當此物件數量已在其任務執行中成功時,它會啟動推展率的增加。

awsJobPresignedUrlConfig

預先簽署 的組態資訊URLs。

expiresInSec

long

預先簽署的時間長度 (以秒為單位) URLs 有效。有效值為 60 - 3600,預設值為 1800 秒。收到任務文件的請求時,URLs會產生預先簽署。

awsJobAbortConfig

決定任務停止發生的時間和方式的標準。

abortCriteriaList

列出

決定何時以及如何停止任務的條件清單。

failureType

string

可以啟動任務停止的任務執行失敗類型。

列舉: FAILED | REJECTED | TIMED_OUT | ALL

action

string

啟動任務停止時要採取的任務動作類型。

列舉: CANCEL

minNumberOfExecutedThings

integer

(下限:1)

在停止任務之前,必須接收任務執行通知的物件數量下限。

awsJobTimeoutConfig

指定每個裝置必須完成其任務執行的時間量。任務執行狀態設定為 IN_PROGRESS 時,計時器即會開始。在計時器到期之前,如果任務執行狀態未設定為其他結束狀態,就會自動設為 TIMED_OUT

inProgressTimeoutInMinutes

long

指定此裝置必須完成這項任務執行的時間 (以分鐘為單位)。逾時間隔可介於 1 分鐘到 7 天之間 (1 到 10080 分鐘)。進行中的計時器無法更新,並會套用到任務的所有任務執行。當任務執行保持 IN_PROGRESS 狀態超過此間隔時,任務執行將會失敗並切換到終端機TIMED_OUT狀態。

files

列出

OTA 更新要串流的檔案。

fileName

string

檔案名稱。

fileType

integer

範圍 - 上限:255;下限:0

您可以包含在任務文件中的整數值,讓裝置識別從雲端接收的檔案類型。

fileVersion

string

檔案版本。

fileLocation

已更新韌體的位置。

stream

包含OTA更新的串流。

streamId

string

(上限:128;下限:1)

串流 ID。

fileId

integer

(上限:255;下限:0)

與串流建立關聯的檔案 ID。

s3Location

S3 中已更新韌體的位置。

bucket

string

(下限:1)

S3 儲存貯體。

key

string

(下限:1)

S3 金鑰。

version

string

S3 儲存貯體版本。

codeSigning

檔案的代碼簽署方式。

awsSignerJobId

string

為簽署 檔案而建立的 AWSSignerJob 的 ID。

startSigningJobParameter

描述程式碼簽署任務。

signingProfileParameter

描述程式碼簽署描述檔。

certificateArn

string

憑證 ARN。

platform

string

您裝置的硬體平台。

certificatePathOnDevice

string

程式碼簽署憑證在您裝置上的位置。

signingProfileName

string

程式碼簽署描述檔名稱。

destination

撰寫程式碼簽章檔案的位置。

s3Destination

描述 S3 中已更新韌體的位置。

bucket

string

(下限:1)

內含已更新韌體的 S3 儲存貯體。

prefix

string

S3 字首。

customCodeSigning

代碼簽署檔案的自訂方式。

signature

檔案的簽章。

inlineDocument

blob

以 base64 編碼呈現的二進位代碼簽署簽章。

certificateChain

憑證鏈。

certificateName

string

憑證名稱。

inlineDocument

string

以 base64 編碼呈現的二進位代碼簽署憑證鏈。

hashAlgorithm

string

用於以代碼簽署檔案的雜湊演算法。

signatureAlgorithm

string

用於以代碼簽署檔案的簽章演算法。

attributes

映射

名稱/屬性對清單。

roleArn

string

(上限:2048;下限:20)

授予 Amazon S3、 AWS IoT 工作和 AWS 程式碼簽署資源 AWS IoT 存取權IAM的角色,以建立OTA更新任務。

additionalParameters

映射

其他OTA更新參數的清單,這些參數是 name-value 對。

tags

列出

用於管理更新的中繼資料。

Key

string

(上限:128;下限:1)

標籤的金鑰。

Value

string

(上限:256;下限:1)

標籤的值。

輸出

{ "otaUpdateId": "string", "awsIotJobId": "string", "otaUpdateArn": "string", "awsIotJobArn": "string", "otaUpdateStatus": "string" }
AWS CLI 輸出欄位

名稱

Type

描述

otaUpdateId

string

(上限:128;下限:1)

OTA 更新 ID。

awsIotJobId

string

與OTA更新相關聯的 AWS IoT 任務 ID。

otaUpdateArn

string

OTA 更新 ARN。

awsIotJobArn

string

與OTA更新ARN相關聯的 AWS IoT 任務。

otaUpdateStatus

string

OTA 更新狀態。

列舉:CREATE_PENDING | CREATE_IN_PROGRESS | CREATE_COMPLETE | CREATE_FAILED

以下是傳入 create-ota-update命令JSON的檔案範例,該命令使用 的程式碼簽署 AWS IoT。

[ { "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" } } } ]

以下是傳入 create-ota-update AWS CLI 命令JSON的檔案範例,允許 FreeRTOS OTA啟動程式碼簽署任務並建立程式碼簽署設定檔和串流。

[ { "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" } } } } } ]

以下是傳入 create-ota-update AWS CLI 命令JSON的檔案範例,該命令會建立使用現有設定檔啟動程式碼簽署任務並使用指定串流的OTA更新。

[ { "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" } } } } } ]

以下是傳入 create-ota-update AWS CLI 命令JSON的檔案範例,允許 FreeRTOS OTA建立具有現有程式碼簽署任務 ID 的串流。

[ { "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更新

您可以使用 list-ota-updates AWS CLI 命令來取得所有OTA更新的清單。

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更新和 AWS IoT 任務OTA。

刪除OTA串流

當您建立使用 的OTA更新時MQTT,您可以使用命令列或 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更新任務資料庫中的項目。您必須使用 delete-job 命令來刪除 AWS IoT 任務。

使用 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 任務

建立OTA更新時,可免費RTOS建立 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 命令一樣,您可以將 --force 參數傳遞至 delete-job-execution,以強制刪除任務執行。如需詳細資訊,請參閱 DeleteJobExecution API

注意

刪除狀態為 IN_PROGRESS 的任務執行會中斷裝置上的 IN_PROGRESS 的任何任務執行,並可能導致裝置處於非確定性狀態。請確保每個執行遭刪除任務的裝置都能復原至已知狀態。

如需使用OTA更新示範應用程式的詳細資訊,請參閱 Over-the-air 更新演示應用