本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
準備 AWS IoT 工作
AWS IoT Device Management 「軟體 Package 件目錄」透過替代參數擴充 AWS IoT 工作,並與 AWS IoT 叢集索引、動態物件群組以及 AWS IoT 物件的保留命名 shadow 整合。
注意
若要使用「軟體 Package 件目錄」提供的所有功能,您必須建立以下 AWS Identity and Access Management (IAM) 角色和原則:部署套件版本的AWS IoT 工AWS IoT 作權限,以及更新保留的具名陰影的工作權限。如需詳細資訊,請參閱準備安全性。
AWS IoT 工作的替代參數
您可以使用替代參數作為 AWS IoT 工作文件中的預留位置。當任務服務遇到替換參數時,會將任務指向參數值的具名軟體版本屬性。您可以使用此程序建立單一任務文件,並透過一般用途屬性將中繼資料傳遞至任務。例如,您可以透過套件版本屬性將 Amazon 簡單儲存服務 (Amazon S3ARN) URL、軟體套件 Amazon 資源名稱 () 或簽名傳遞至任務文件。
替換參數應於任務文件如下格式化:
${aws:iot:package:
<packageName>
:version:<versionName>
:attributes:<anyAttributeName>
}
在此範例中,有一個名為 samplePackage
的軟體套件,其名為 2.1.5
的套件版本具有下列屬性:
-
名稱:
s3URL
,值:https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile
-
此屬性會識別儲存於 Amazon S3 的程式碼檔案位置。
-
-
名稱:
signature
,值:aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj
-
此屬性會提供裝置做為安全措施所需的程式碼簽章值。如需詳細資訊,請參閱適用於任務的程式碼簽署。注意:此屬性僅為範例,不是軟體套件目錄或任務的必要部分。
-
針對 downloads
,任務文件參數的寫入方式如下:
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
}
針對 signature
,任務文件參數的寫入方式如下:
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
}
完整的任務文件寫入方式如下:
{
...
"Steps": {
"uninstall": ["samplePackage"],
"download": [
{
"samplePackage": "${aws:iot:package:samplePackage1:version:2.1.5:attributes:s3URL}"
},
],
"signature": [
"samplePackage" : "${aws:iot:package:samplePackage1:version:2.1.5:attributes:signature}"
]
}
}
進行替換後,下列任務文件會部署至裝置:
{
...
"Steps": {
"uninstall": ["samplePackage"],
"download": [
{
"samplePackage": "https://EXAMPIEBUCKET.s3.us-west-2.amazonaws.com/exampleCodeFile"
},
],
"signature": [
"samplePackage" : "aaaaabbbbbcccccdddddeeeeefffffggggghhhhhiiiiijjjj"
]
}
}
如需有關 AWS IoT 工作、建立工作文件和部署工作的詳細資訊,請參閱工作。
準備任務文件和套件版本以進行部署
建立套件版本時,它會處於draft
狀態,表示它正在準備進行部署。若要準備要部署的套件版本,您必須建立工作文件,將文件儲存在任務可存取的位置 (例如 Amazon S3),並確認套件版本具有您希望工作文件使用的屬性值。(注意:您只能在套件版本處於draft
狀態時更新它的屬性。)
當您對套件版本感到滿意時,請透過 AWS IoT 主控台中的軟體套件詳細資料頁面或發出UpdatePackageVersionAPI作業來發佈套件版本。然後,您可以在透過 AWS IoT 主控台或發出作業來建立工CreateJobAPI作時參照套件版本。
部署時命名套件和版本
部署 AWS IoT 工作時,必須命名與工作部署 (destinationPackageVersions
) 中工作文件中命名的相同軟體套件和套件版本。若不執行此動作,您會收到錯誤訊息,顯示遺失的套件版本。
您可以納入任務文件中未包含的其他軟體套件和套件版本。如此一來,任務不會向裝置提供說明,解釋如何處理這些檔案,設備應能自行處理檔案。例如,若其他檔案包含裝置可能參考的資料,您可能會將其他檔案傳送至裝置。
透過 AWS IoT 動態物件群組鎖定工作
軟體套件目錄可與機群索引、AWS IoT 任務和AWS IoT 動態物件群組搭配使用,以篩選並鎖定機群中的裝置,選取要部署至裝置的套件版本。您可以根據裝置目前的套件資訊執行叢集索引查詢,並針對 AWS IoT 工作指定這些項目。您也可以發行軟體更新,但僅限符合資格的目標裝置。例如,您可以指定只要將組態部署到目前執行 iot-device-client 1.5.09
的裝置。如需詳細資訊,請參閱建立動態物件群組。
預留已命名影子和套件版本
如果已設定,則 AWS IoT 作業可在工作順利完成時,更新物件的保留名為 shadow ($package
)。如此一來,您便不需要手動將套件版本與物件的預留已命名影子建立關聯。
在下列情況下,您可以選擇手動更新套件版本,或將其與物件的預留已命名影子建立關聯:
-
您可以在 AWS IoT Core 不關聯已安裝套件版本的情況下註冊物件。
-
AWS IoT 工作未設定為更新物件的保留名為 shadow。
-
您可以使用內部程序將套件版本傳送至您的叢集,而該程序在完成 AWS IoT Core 時不會更新。
注意
我們建議您使用 AWS IoT 工作來更新保留名為 shadow ($package
) 中的套件版本。當 AWS IoT 工作也設定為更新$package
陰影時,透過其他處理程序 (例如手動或程式設計API呼叫) 更新陰影中的 version 參數,可能會造成裝置上的實際版本與回報給保留命名 shadow 的版本之間的不一致。
您可以透過主控台或作業,將套件版本新增或更新至保留名為 shadow ($package
) 的物UpdateThingShadow
API件。如需詳細資訊,請參閱將封裝版本與 AWS IoT 物件相關聯。
注意
將套件版本與 AWS IoT 物件相關聯並不會直接更新裝置軟體。您必須將套件版本部署至裝置,才能更新裝置軟體。
解除安裝軟體套件及其套件版本
$null
是預留的預留位置,會提示 AWS IoT Jobs 服務從裝置保留的命名 shadow 中移除現有的軟體套件和套件版本$package
。如需詳細資訊,請參閱預留已命名影子。
若要使用此功能,請將 destinationPackageVersionAmazon 資源名稱 (ARN) 結尾的版本名稱取代為$null
。之後,您必須指示服務從設備中刪除軟件。
授權ARN使用以下格式:
arn:aws:iot:
<regionCode>
:111122223333
:package/<packageName>
/version/$null
例如
$ aws iot create-job \ ... \ --destinationPackageVersions ["arn:aws:iot:us-east-1:111122223333:package/samplePackage/version/$null"]