本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
發佈元件以部署到您的核心裝置
建置或完成元件版本之後,您可以將其發佈至 AWS IoT Greengrass 服務。然後,您可以將其部署到 Greengrass 核心設備。
如果您使用 Greengrass 開發套件 CLI (GDKCLI) 來開發和建置元件,您可以使用將元件發行GDKCLI到. AWS 雲端否則,請使用內建的 shell 命令和 AWS CLI來發佈元件。
您也可以使 AWS CloudFormation 用從範本建立元件和其他 AWS 資源。如需詳細資訊,請參閱什麼是 AWS CloudFormation? 以及AWS::GreengrassV2::ComponentVersion在《用AWS CloudFormation 戶指南》中。
發佈元件 (GDKCLI)
遵循本節中的指示,使用發佈元件GDKCLI。將建置成品GDKCLI上傳到 S3 儲存貯體、更新方案URIs中的成品,並從配方建立元件。您可以指定要在GDKCLI組態檔案中使用的 S3 儲存貯體和區域。
如果您使用 GDK CLI v1.1.0 或更新版本,則可以指定--bucket
引數來指定上GDKCLI傳元件成品的 S3 儲存貯體。如果您未指定此引數,則會上GDKCLI傳到名稱為的 S3 儲存貯體
,其中 bucket
-region
-accountId
bucket
以及 region
是您在中指定的值gdk-config.json
,以及 accountId
是您的 AWS 帳戶 身份證。 如果值區不存在,則GDKCLI會建立值區。
重要
核心裝置角色預設不允許存取 S3 儲存貯體。如果這是您第一次使用此 S3 儲存貯體,則必須向角色新增許可,以允許核心裝置從此 S3 儲存貯體擷取元件成品。如需詳細資訊,請參閱允許存取元件成品的 S3 儲存貯體。
若要發佈 Greengrass 件 () GDK CLI
-
在指令提示字元或端子中開啟元件資料夾。
-
如果你還沒有,建立 Greengrass 組件。元件建置指令會在元件資料夾的
greengrass-build
資料夾中產生配方和成品。執行下列命令。gdk component build
-
將元件發佈到 AWS 雲端. 元件發佈命令會將元件的成品上傳到 Amazon S3,並使用每個成品更新元件的配方URI。然後,它會在 AWS IoT Greengrass 服務中建立元件。
注意
AWS IoT Greengrass 當您建立元件時,會計算每個成品的摘要。這表示您無法在建立元件之後修改 S3 儲存貯體中的成品檔案。如果這樣做,包含此元件的部署將會失敗,因為檔案摘要不相符。如果修改人工因素檔案,則必須建立元件的新版本。
如果您在GDKCLI組態檔中指定
NEXT_PATCH
元件版本,則會GDKCLI使用 AWS IoT Greengrass 服務中尚未存在的下一個修補程式版本。執行下列命令。
gdk component publish
輸出會告訴您所GDKCLI建立之元件的版本。
發佈元件之後,您可以將元件部署到核心裝置。如需詳細資訊,請參閱將AWS IoT Greengrass元件部署到裝置。
發佈元件 (薄殼指令)
請使用下列程序,使用 shell 指令和 AWS Command Line Interface (AWS CLI) 來發佈元件。當您發佈元件時,請執行下列動作:
-
將元件成品發佈到 S3 儲存貯體。
-
將每個成品的 Amazon S3 新增URI至元件配方。
-
從元件方案 AWS IoT Greengrass 中建立元件版本。
注意
您上傳的每個元件版本都必須是唯一的。請務必上傳正確的元件版本,因為上傳後就無法進行編輯。
您可以按照以下步驟從開發計算機或 Greengrass 核心設備發布組件。
發佈元件 (薄殼指令) 的步驟
-
如果元件使用的是 AWS IoT Greengrass 服務中存在的版本,則您必須變更元件的版本。在文字編輯器中開啟配方,增加版本,然後儲存檔案。選擇反映您對元件所做變更的新版本。
注意
AWS IoT Greengrass 使用語義版本的組件。語義版本遵循一個主要的。 未成年人。 修補程式編號系統。例如,版本
1.0.0
代表元件的第一個主要發行版本。如需詳細資訊,請參閱語意版本規格。 -
如果您的元件有人工因素,請執行下列動作:
-
將元件的成品發佈到 AWS 帳戶.
提示
建議您在 S3 儲存貯體中的成品路徑中包含元件名稱和版本。此命名配置可協助您維護舊版元件所使用的人工因素,以便您可以繼續支援先前的元件版本。
執行下列命令,將成品檔案發佈到 S3 儲存貯體。用存儲桶的名稱替換 amzn-s3-演示桶,並更換
artifacts/com.example.HelloWorld/1.0.0/artifact.py
與人工因素檔案的路徑。aws s3 cp
artifacts/com.example.HelloWorld/1.0.0/artifact.py
s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.py
重要
核心裝置角色預設不允許存取 S3 儲存貯體。如果這是您第一次使用此 S3 儲存貯體,則必須向角色新增許可,以允許核心裝置從此 S3 儲存貯體擷取元件成品。如需詳細資訊,請參閱允許存取元件成品的 S3 儲存貯體。
-
添加一個名為的列表
Artifacts
到組件配方,如果它不存在。此Artifacts
清單會顯示在每個資訊清單中,其中定義元件在其支援的每個平台上的需求 (或元件對所有平台的預設需求)。 -
將每個人工因素新增至人工因素清單,或更新現有人工因素URI的成品。Amazon S3 URI 由儲存貯體名稱和儲存貯體中成品物件的路徑組成。您人工品的 Amazon S3 看起來URIs應該類似於下列範例。
s3://amzn-s3-demo-bucket/artifacts/com.example.HelloWorld/1.0.0/artifact.py
完成這些步驟後,您的方案應該會有如下所示的
Artifacts
清單。如需配方的詳細資訊,請參閱AWS IoT Greengrass 元件配方參考。
-
-
使用 AWS IoT Greengrass 主控台從 recipe 檔案建立元件。
執行下列指令,從 recipe 檔案建立元件。此指令會建立元件,並將其作為私有 AWS IoT Greengrass 元件發佈在 AWS 帳戶. Replace (取代)
path/to/recipeFile
與配方文件的路徑。aws greengrassv2 create-component-version --inline-recipe fileb://
path/to/recipeFile
arn
從響應中複製以在下一個步驟中檢查組件的狀態。注意
AWS IoT Greengrass 當您建立元件時,會計算每個成品的摘要。這表示您無法在建立元件之後修改 S3 儲存貯體中的成品檔案。如果這樣做,包含此元件的部署將會失敗,因為檔案摘要不相符。如果修改人工因素檔案,則必須建立元件的新版本。
-
AWS IoT Greengrass 服務中的每個元件都有一個狀態。執行下列命令,以確認您在此程序中發佈的元件版本狀態。Replace (取代)
com.example.HelloWorld
以及1.0.0
使用要查詢的元件版本。arn
使用上一個步驟ARN中的取代。aws greengrassv2 describe-component --arn "arn:aws:greengrass:
region
:account-id
:components:com.example.HelloWorld
:versions:1.0.0
"此作業會傳回包含元件中繼資料的回應。中繼資料包含一個
status
物件,其中包含元件狀態和任何錯誤 (如果適用)。當元件狀態為時
DEPLOYABLE
,您可以將元件部署到裝置。如需詳細資訊,請參閱將AWS IoT Greengrass元件部署到裝置。