準備使用軟體套件目錄 - AWS IoT Core

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

準備使用軟體套件目錄

下節提供 Package 件版本生命週期的概觀,以及使用「 AWS IoT Device Management 軟體套件目錄」的資訊。

套件版本生命週期

套件版本可以經歷下列生命週期狀態:draftpublished、和 deprecated。也可以為 deleted

包含「草稿」、「已發佈」和「已棄用」的套件版本生命週期。也可以為「已刪除」。
  • 草稿

    當您建立套件版本時,它draft處於狀態。此狀態表示軟體套件正在準備中或不完整。

    當套件版本處於此狀態時,您無法部署它。您可以編輯套件版本的描述、屬性和標籤。

    您可以使用主控台或發出publishedDeletePackageVersionAPI作業,將draftdeleted狀態為狀態的套件版本轉換為UpdatePackageVersion或。

  • 已發佈

    當您的套件版本已準備好部署時,請將套件版本轉換為published狀態。處於此狀態時,您可以在主控台中編輯軟體套件或透過UpdatePackageAPI作業,選擇將套件版本識別為預設版本。在此狀態下,您只能編輯描述和標籤。

    您可以使用主控台或發出deprecatedDeletePackageVersionAPI作業,將publisheddeleted狀態為狀態的套件版本轉換為UpdatePackageVersion或。

  • 已棄用

    若有新的套件版本可用,您可以將較早的套件版本轉換為 deprecated。您仍然可以使用已取代的套件版本部署工作。您也可以將已取代的套件版本命名為預設版本,並僅編輯描述和標籤。

    請考慮將套件版本轉換為版本已過期的deprecated時間,但由於執行階段的相依性,您仍然擁有使用舊版本的裝置,或者需要維護套件版本。

    您可以使用主控台或發出publishedDeletePackageVersionAPI作業,將deprecated deleted狀態為狀態的套件版本轉換為UpdatePackageVersion或。

  • Deleted (已刪除)

    當您不想再使用套件版本時,您可以使用主控台或發出DeletePackageVersionAPI作業將其刪除。

    注意

    若您在有待處理任務參照套件版本時刪除該套件版本,當任務成功完成並嘗試更新預留已命名影子時,您會收到錯誤訊息。

    若您要刪除的軟體套件版本已指定為預設套件版本,您必須先更新該套件,將其他版本指定為預設版本,或將該欄位保留為未指定狀態。您可以使用控制台或操作來執行此UpdatePackageVersionAPI操作。(要刪除任何命名的軟件包版本作為默認值,請在發出UpdatePackageAPI操作時將unsetDefaultVersion參數設置為 true)。

    若您透過主控台刪除軟體套件,則會刪除與該套件相關聯的所有套件版本,除非某個套件版本已指定為預設版本。

套件版本命名慣例

命名套件版本時,請務必規劃並套用邏輯命名策略,以便您和其他人員皆可輕易識別最新的套件版本和版本進度。建立套件版本時,您必須提供版本名稱,但策略和格式主要取決於您的商業案例。

最佳作法是建議使用語意版本控制SemVer格式。例如,1.2.3,其中 1 是功能上不相容變更的主要版本,2 是功能上相容變更的主要版本,3 是修補程式版本 (用於錯誤修正)。如需詳細資訊,請參閱語意版本控制 2.0.0。如需有關套件版本名稱需求的詳細資訊,請參閱 AWS IoT API參考指南versionName中的。

預設版本

您不一定要將版本設定為預設版本。您可以新增或移除預設套件版本。您也可以部署未指定為預設版本的套件版本。

套件版本在建立時會處於 draft 狀態,在您將套件版本轉換為「已發佈」之前,無法將其指定為預設版本。軟體套件目錄不會自動選取某個版本作為預設版本,也不會自動將較新的套件版本更新為預設版本。您必須故意命名您通過控制台選擇的軟件包版本或發出UpdatePackageVersionAPI操作。

版本屬性

版本屬性及其值皆包含套件版本的重要資訊。建議您定義套件或套件版本的一般用途屬性。例如,您可以為平台、架構、作業系統、發行日期、作者或 Amazon S3 建立名稱-值配對。URL

當您使用 AWS IoT 工作文件建立工作時,您也可以選擇使用參照屬性值的替代變數 ($parameter)。如需詳細資訊,請參閱準備 AWS IoT 工作

封裝版本中使用的版本屬性不會自動新增至保留的名為 shadow,也無法透過叢集索引直接建立索引或查詢。若要透過叢集索引建立索引或查詢封裝版本屬性,您可以在保留的已命名 shadow 中填入 version 屬性。

我們建議在保留的版本屬性參數中命名為陰影捕獲設備報告的屬性,例如操作系統和安裝時間。您也可以透過「叢集索引」建立索引和查詢它們。

版本屬性不需要遵循特定的命名慣例。您可以建立名稱/值配對,以滿足您的商業需求。套件版本上所有屬性的整體大小限制為 3 KB。如需詳細資訊,請參閱軟體 Package 件目錄軟體套件和套件版本限制

啟用 AWS IoT 叢集索引

您必須啟動軟體套件目錄的機群索引,才能建立或更新軟體套件和套件版本。叢集索引提供支援, AWS IoT 可透過依版本篩選的動態物件群組來分組物件。例如,機群索引可以識別已安裝或未安裝特定套件版本、未安裝任何套件版本或符合特定名稱/值配對的物件。最後,機群索引也提供標準和自訂指標,您可以使用這些指標來深入瞭解機群狀態。如需詳細資訊,請參閱準備機群索引

注意

啟用軟體套件目錄的機群索引會產生標準服務費用。如需詳細資訊,請參閱 AWS IoT Device Management定價

預留已命名影子

預留已命名影子 $package 會反映安裝於裝置的軟體套件和套件版本狀態。機群索引使用預留已命名影子做為資料來源,以建立標準和自訂指標,讓您可以查詢機群狀態。如需詳細資訊,請參閱準備機群索引

預留已命名影子類似已命名影子,但其名稱為預先定義,無法變更。此外,預留已命名影子不會隨中繼資料更新,且只會使用 versionattributes 關鍵字。

包含其他關鍵字 (例如description) 的更新要求會在rejected主題下收到錯誤回應。如需詳細資訊,請參閱裝置影子錯誤訊息

當您透過主控台建立 AWS IoT 物件、 AWS IoT 工作成功完成並更新陰影,以及發出UpdateThingShadowAPI作業時,都可以建立它。如需詳細資訊,請參閱UpdateThingShadow開 AWS IoT Core 發人員指南中的。

注意

索引預留已命名影子不會計入機群索引可以索引的已命名影子數量。如需詳細資訊,請參閱 AWS IoT Device Management 機群索引限制和配額。此外,如果您選擇讓工作在 AWS IoT 工作順利完成時更新保留的具名陰影,則API呼叫會計入 Device Shadow 和登錄作業,並可能產生費用。如需詳細資訊,請參閱AWS IoT Device Management 工作限制和配額以及資IndexingFilterAPI料類型。

$package 影子的結構

預留已命名影子包含以下內容:

{ "state": { "reported": { "<packageName>": { "version": "", "attributes": { } } } }, "version" : 1 "timestamp" : 1672531201 }

影子屬性會更新為下列資訊:

  • <packageName>:已安裝軟體套件的名稱,會使用packageName參數更新。

  • version:已安裝軟件包版本的名稱,該版本將使用versionName參數更新。

  • attributes:由裝置儲存並依機群索引編製索引的選用中繼資料。這可讓客戶根據儲存的資料查詢其索引。

  • version:影子的版本號碼。每次影子更新並開始於 1 時,皆會自動遞增。

  • timestamp:顯示上次影子更新時間並以 Unix 時間記錄。

如需詳細了解已命名影子的格式和行為,請參閱 AWS IoT Device Shadow 服務 訊息順序

刪除軟體套件及其套件版本

刪除軟體套件之前,請執行下列動作:

  • 確認套件及其版本並未主動部署。

  • 先刪除所有相關版本。若其中一個版本為預設版本,您必須從套件中移除具名預設版本。因為您不一定要指定預設版本,移除預設版本並不會造成衝突。若要從軟體套件中移除預設版本,請透過主控台編輯套件或使用該 UpdatePackageVersionAPI作業。

只要沒有具名預設套件版本,您便可以使用主控台刪除軟體套件,且其所有套件版本也將一併刪除。如果您使用API呼叫刪除軟體套件,您必須先刪除套件版本,然後再刪除軟體套件。