本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
準備使用軟體套件目錄
下節提供封裝版本生命週期的概觀,以及使用的資訊 AWS IoT Device Management 軟體 Package 件目錄。
套件版本生命週期
套件版本可以經歷下列生命週期狀態:draft
、published
、和 deprecated
。也可以為 deleted
。
草稿
當您建立套件版本時,它
draft
處於狀態。此狀態表示軟體套件正在準備中或不完整。當套件版本處於此狀態時,您無法部署它。您可以編輯套件版本的描述、屬性和標籤。
您可以使用主控台或發出
published
或DeletePackageVersionAPI作業,將draft
deleted
狀態為狀態的套件版本轉換為UpdatePackageVersion或。已發佈
當您的套件版本已準備好部署時,請將套件版本轉換為
published
狀態。處於此狀態時,您可以在主控台中編輯軟體套件或透過UpdatePackageAPI作業,選擇將套件版本識別為預設版本。在此狀態下,您只能編輯描述和標籤。您可以使用主控台或發出
deprecated
或DeletePackageVersionAPI作業,將published
deleted
狀態為狀態的套件版本轉換為UpdatePackageVersion或。已棄用
若有新的套件版本可用,您可以將較早的套件版本轉換為
deprecated
。您仍然可以使用已取代的套件版本部署工作。您也可以將已取代的套件版本命名為預設版本,並僅編輯描述和標籤。請考慮將套件版本轉換為版本已過期的
deprecated
時間,但由於執行階段的相依性,您仍然擁有使用舊版本的裝置,或者需要維護套件版本。您可以使用主控台或發出
published
或DeletePackageVersionAPI作業,將deprecated
deleted
狀態為狀態的套件版本轉換為UpdatePackageVersion或。Deleted (已刪除)
當您不想再使用套件版本時,您可以使用主控台或發出DeletePackageVersionAPI作業將其刪除。
注意
若您在有待處理任務參照套件版本時刪除該套件版本,當任務成功完成並嘗試更新預留已命名影子時,您會收到錯誤訊息。
若您要刪除的軟體套件版本已指定為預設套件版本,您必須先更新該套件,將其他版本指定為預設版本,或將該欄位保留為未指定狀態。您可以使用控制台或操作來執行此UpdatePackageVersionAPI操作。(要刪除任何命名的軟件包版本作為默認值,請在發出UpdatePackageAPI操作時將unsetDefaultVersion參數設置為 true)。
若您透過主控台刪除軟體套件,則會刪除與該套件相關聯的所有套件版本,除非某個套件版本已指定為預設版本。
套件版本命名慣例
命名套件版本時,請務必規劃並套用邏輯命名策略,以便您和其他人員皆可輕易識別最新的套件版本和版本進度。建立套件版本時,您必須提供版本名稱,但策略和格式主要取決於您的商業案例。
最佳作法是建議使用語意版本控制SemVer1.2.3
,其中 1
是功能上不相容變更的主要版本,2
是功能上相容變更的主要版本,3
是修補程式版本 (用於錯誤修正)。如需詳細資訊,請參閱語意版本控制 2.0.0
預設版本
您不一定要將版本設定為預設版本。您可以新增或移除預設套件版本。您也可以部署未指定為預設版本的套件版本。
套件版本在建立時會處於 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
會反映安裝於裝置的軟體套件和套件版本狀態。機群索引使用預留已命名影子做為資料來源,以建立標準和自訂指標,讓您可以查詢機群狀態。如需詳細資訊,請參閱準備機群索引。
預留已命名影子類似已命名影子,但其名稱為預先定義,無法變更。此外,預留已命名影子不會隨中繼資料更新,且只會使用 version
和 attributes
關鍵字。
包含其他關鍵字 (例如description
) 的更新要求會在rejected
主題下收到錯誤回應。如需詳細資訊,請參閱裝置影子錯誤訊息。
它可以在創建時創建 AWS IoT 通過控制台的事情,當 AWS IoT 工作成功完成並更新陰影,如果您發出UpdateThingShadow
API作業。若要取得更多資訊,請參閱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呼叫刪除軟體套件,您必須先刪除套件版本,然後再刪除軟體套件。