元件 - AWS IoT Greengrass

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

元件

使用開AWS IoT Greengrass發套件component命令列介面 (GDK CLI) 中的命令來建立、建置和發佈自訂 Greengrass 元件。

init

從元件範本或社群元件初始化 Greengrass 元件資料夾。

GDK CLI 會從 Greengrass 軟體目錄擷取社群元件,並從上的元件範本存放庫擷取元AWS IoT Greengrass件範本。 GitHub

注意

如果您使用 GDK CLI v1.0.0,則必須在空白資料夾中執行此命令。GDK CLI 會將範本或社群元件下載到目前的資料夾。

如果您使用 GDK CLI v1.1.0 或更新版本,您可以指定--name引數來指定 GDK CLI 下載範本或社群元件的資料夾。如果您使用此引數,請指定不存在的資料夾。GDK CLI 會為您建立資料夾。如果您未指定此引數,GDK CLI 會使用目前的資料夾,該資料夾必須為空白。

如果元件使用 zip 建置系統,GDK CLI 會將元件資料夾中的某些檔案壓縮為與元件資料夾名稱相同的 zip 檔案。例如,如果元件資料夾的名稱是HelloWorld,GDK CLI 會建立名HelloWorld.zip為的 zip 檔案。在元件方案中,zip 人工因素名稱必須與元件資料夾的名稱相符。如果您在 Windows 裝置上使用 GDK CLI 1.0.0 版,元件資料夾和壓縮檔案名稱必須只包含小寫字母。

如果您將使用 zip 建置系統的範本或社群元件初始化到名稱不同於範本或元件的資料夾,您必須變更元件方案中的 zip 成品名稱。更新Artifacts和定Lifecycle義,使 zip 檔案名稱與元件資料夾的名稱相符。下列範例會反白ArtifactsLifecycle定義中的 zip 檔案名稱。

JSON
{ ... "Manifests": [ { "Platform": { "os": "all" }, "Artifacts": [ { "URI": "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip", "Unarchive": "ZIP" } ], "Lifecycle": { "run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}" } } ] }
YAML
--- ... Manifests: - Platform: os: all Artifacts: - URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip" Unarchive: ZIP Lifecycle: run: "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
概要
$ gdk component init [--language] [--template] [--repository] [--name]
參數(從組件模板初始化)
  • -l--language — 用於指定範本的程式設計語言。

    您必須指定--repository--language--template

  • -t--template — 用於本機元件專案的元件範本。若要檢視可用的樣板,請使用 list 指令。

    您必須指定--repository--language--template

  • -n, --name — (選擇性) GDK CLI 初始化元件的本機資料夾名稱。指定不存在的資料夾。GDK CLI 會為您建立資料夾。

    此功能適用於 GDK CLI 1.1.0 版及更新版本。

參數(從社區組件初始化)
  • -r--repository — 要簽出至本機資料夾的社群元件。若要檢視可用的社群元件,請使用 list 指令。

    您必須指定--repository--language--template

  • -n, --name — (選擇性) GDK CLI 初始化元件的本機資料夾名稱。指定不存在的資料夾。GDK CLI 會為您建立資料夾。

    此功能適用於 GDK CLI 1.1.0 版及更新版本。

輸出

下面的例子顯示當您運行此命令從 Python Hello World 模板初始化組件文件夾產生的輸出。

$ gdk component init -l python -t HelloWorld [2021-11-29 12:51:40] INFO - Initializing the project directory with a python component template - 'HelloWorld'. [2021-11-29 12:51:40] INFO - Fetching the component template 'HelloWorld-python' from Greengrass Software Catalog.

下列範例顯示執行此命令以從社群元件初始化元件資料夾時產生的輸出。

$ gdk component init -r aws-greengrass-labs-database-influxdb [2022-01-24 15:44:33] INFO - Initializing the project directory with a component from repository catalog - 'aws-greengrass-labs-database-influxdb'. [2022-01-24 15:44:33] INFO - Fetching the component repository 'aws-greengrass-labs-database-influxdb' from Greengrass Software Catalog.

build

將元件的來源建置到可發佈至AWS IoT Greengrass服務的方案和成品中。GDK CLI 會執行您在 GDK CLI 設定檔中指定的建置系統。gdk-config.json您必須在gdk-config.json檔案所在的相同資料夾中執行此命令。

當您執行此命令時,GDK CLI 會在元件資料夾的greengrass-build資料夾中建立方案和成品。GDK CLI 會將配方儲存在greengrass-build/recipes資料夾中,並將成品儲存在greengrass-build/artifacts/componentName/componentVersion資料夾中。

如果您使用 GDK CLI v1.1.0 或更新版本,元件方案可以指定存在於 S3 儲存貯體中但不存在於本機元件建置資料夾中的成品。當您開發含有大型成品的元件 (例如機器學習模型) 時,您可以使用此功能來減少頻寬使用量。

構建組件之後,您可以執行以下操作之一來在 Greengrass 核心設備上對其進行測試:

  • 如果您在與執行 AWS IoT Greengrass Core 軟體的裝置不同的裝置上進行開發,則必須發佈元件以將其部署到 Greengrass 核心裝置。將元件發佈到AWS IoT Greengrass服務,並將其部署到 Greengrass 核心裝置。如需詳細資訊,請參閱發佈命令和建立部署

  • 如果您在執行 AWS IoT Greengrass Core 軟體的相同裝置上進行開發,則可以將元件發佈到要部署的AWS IoT Greengrass服務,或者您可以建立本機部署以安裝並執行元件。若要建立本機部署,請使用 Greengrass CLI。如需詳細資訊,請參閱 綠色命令行界面使用本機部署測試AWS IoT Greengrass元件。當您建立本機部署時,請指定greengrass-build/recipes為 recipe 資料夾和greengrass-build/artifacts成品資料夾。

概要
$ gdk component build
Arguments (引數)

輸出

下列範例顯示執行此命令時產生的輸出。

$ gdk component build [2021-11-29 13:18:49] INFO - Getting project configuration from gdk-config.json [2021-11-29 13:18:49] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2021-11-29 13:18:49] INFO - Building the component 'com.example.PythonHelloWorld' with the given project configuration. [2021-11-29 13:18:49] INFO - Using 'zip' build system to build the component. [2021-11-29 13:18:49] WARNING - This component is identified as using 'zip' build system. If this is incorrect, please exit and specify custom build command in the 'gdk-config.json'. [2021-11-29 13:18:49] INFO - Zipping source code files of the component. [2021-11-29 13:18:49] INFO - Copying over the build artifacts to the greengrass component artifacts build folder. [2021-11-29 13:18:49] INFO - Updating artifact URIs in the recipe. [2021-11-29 13:18:49] INFO - Creating component recipe in 'C:\Users\MyUser\Documents\greengrass-components\python\HelloWorld\greengrass-build\recipes'.

發布

將此元件發佈至AWS IoT Greengrass服務。此命令會將組建成品上傳到 S3 儲存貯體、更新方案中的成品 URI,並從方案建立新版本的元件。GDK CLI 會使用您在 GDK CLI 組態檔案中指定的 S3 儲存貯體和AWS區域。gdk-config.json您必須在gdk-config.json檔案所在的相同資料夾中執行此命令。

如果您使用 GDK CLI v1.1.0 或更新版本,則可以指定--bucket引數來指定 GDK CLI 上傳元件成品的 S3 儲存貯體。如果您未指定此引數,GDK CLI 會上傳至名稱為的 S3 儲存貯體bucket-region-accountId,其中儲存體和區域是您在中指定的值gdk-config.json,而 accountId 就是您AWS 帳戶的 ID。GDK CLI 會建立值區 (如果值區不存在)。

如果您使用 GDK CLI v1.2.0 或更新版本,您可以使用參數覆寫 GDK CLI 組態檔中AWS 區域指定的。--region您也可以使用--options參數指定其他選項。如需可用選項的清單,請參閱Greengrass 開發工具包 CLI 配置文件

當您執行此命令時,GDK CLI 會以您在方案中指定的版本發行元件。如果您指定NEXT_PATCH,GDK CLI 會使用下一個尚未存在的修補程式版本。語義版本使用一個主要的。 未成年人補丁編號系統。如需詳細資訊,請參閱語意版本規格

注意

如果您使用 GDK CLI v1.1.0 或更新版本,當您執行此命令時,GDK CLI 會檢查元件是否已建置。如果未建置元件,GDK CLI 會在發佈元件之前建立元件。

概要
$ gdk component publish [--bucket] [--region] [--options]
Arguments (引數)
  • -b--bucket— (選擇性) 指定 GDK CLI 發佈元件成品所在 S3 儲存貯體的名稱。

    如果您未指定此引數,GDK CLI 會上傳至名稱為的 S3 儲存貯體bucket-region-accountId,其中儲存體和區域是您在中指定的值gdk-config.json,而 accountId 就是您AWS 帳戶的 ID。GDK CLI 會建立值區 (如果值區不存在)。

    GDK CLI 會建立值區 (如果值區不存在)。

    此功能適用於 GDK CLI 1.1.0 版及更新版本。

  • -r--region— (選擇性) 指定建立元AWS 區域件時的目標名稱。此引數會覆寫 GDK CLI 組態中的區域名稱。

    此功能適用於 GDK CLI 1.2.0 版及更新版本。

  • -o--options(選擇性) 指定用於發佈元件的選項清單。引數必須是包含發佈選項的 JSON 檔案的有效 JSON 字串或檔案路徑。此引數會覆寫 GDK CLI 組態中的選項。

    此功能適用於 GDK CLI 1.2.0 版及更新版本。

輸出

下列範例顯示執行此命令時產生的輸出。

$ gdk component publish [2021-11-29 13:45:29] INFO - Getting project configuration from gdk-config.json [2021-11-29 13:45:29] INFO - Found component recipe file 'recipe.yaml' in the project directory. [2021-11-29 13:45:29] INFO - Found credentials in shared credentials file: ~/.aws/credentials [2021-11-29 13:45:30] INFO - Publishing the component 'com.example.PythonHelloWorld' with the given project configuration. [2021-11-29 13:45:30] INFO - No private version of the component 'com.example.PythonHelloWorld' exist in the account. Using '1.0.0' as the next version to create. [2021-11-29 13:45:30] INFO - Uploading the component built artifacts to s3 bucket. [2021-11-29 13:45:30] INFO - Uploading component artifacts to S3 bucket: {bucket}. If this is your first time using this bucket, add the 's3:GetObject' permission to each core device's token exchange role to allow it to download the component artifacts. For more information, see https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html. [2021-11-29 13:45:30] INFO - Not creating an artifacts bucket as it already exists. [2021-11-29 13:45:30] INFO - Updating the component recipe com.example.PythonHelloWorld-1.0.0. [2021-11-29 13:45:30] INFO - Creating a new greengrass component com.example.PythonHelloWorld-1.0.0 [2021-11-29 13:45:30] INFO - Created private version '1.0.0' of the component in the account.'com.example.PythonHelloWorld'.

列出

擷取可用元件範本和社群元件的清單。

GDK CLI 會從 Greengrass 軟體目錄擷取社群元件,並從上的元件範本存放庫擷取元AWS IoT Greengrass件範本。 GitHub

您可以將此命令的輸出傳遞給 init 命令,以從模板和社區組件初始化組件存儲庫。

概要
$ gdk component list [--template] [--repository]
Arguments (引數)
  • -t, --template — (選擇性) 指定此引數以列出可用的元件範本。此指令會以格式輸出每個範本的名稱和語言name-language。例如,在中HelloWorld-python,範本名稱為HelloWorld,語言為python

  • -r, --repository — (選擇性) 指定此引數以列出可用的社群元件存放庫。

輸出

下列範例顯示執行此命令時產生的輸出。

$ gdk component list --template [2021-11-29 12:29:04] INFO - Listing all the available component templates from Greengrass Software Catalog. [2021-11-29 12:29:04] INFO - Found '2' component templates to display. 1. HelloWorld-python 2. HelloWorld-java