發佈元件以部署到您的核心裝置 - AWS IoT Greengrass

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

發佈元件以部署到您的核心裝置

建置或完成元件版本之後,您可以將其發佈至 AWS IoT Greengrass 服務。然後,您可以將其部署到 Greengrass 核心設備。

如果您使用 Greengrass 開發套件 CLI (GDK CLI)開發和建置元件,您可以使用 GDK CLI 將元件發行到. AWS 雲端否則,請使用內建的 shell 命令和 AWS CLI來發佈元件。

您也可以使 AWS CloudFormation 用從範本建立元件和其他 AWS 資源。如需詳細資訊,請參閱什麼是 AWS CloudFormation? 以及AWS::GreengrassV2::ComponentVersion在《用AWS CloudFormation 戶指南》中。

發佈元件 (GDK CLI)

請遵循本節中的指示,使用 GDK CLI 發佈元件。GDK CLI 會將組建成品上傳到 S3 儲存貯體、更新方案中的成品 URI,並從配方建立元件。您可以指定要在 GDK CLI 組態檔中使用的 S3 儲存貯體和區域。

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

重要

核心裝置角色預設不允許存取 S3 儲存貯體。如果這是您第一次使用此 S3 儲存貯體,則必須向角色新增許可,以允許核心裝置從此 S3 儲存貯體擷取元件成品。如需詳細資訊,請參閱 允許存取元件成品的 S3 儲存貯體

若要發佈 Greengrass 元件 (GDK CLI)
  1. 在指令提示字元或端子中開啟元件資料夾。

  2. 如果你還沒有,建立 Greengrass 組件。元件建置指令會在元件資料夾的greengrass-build資料夾中產生配方和成品。執行下列命令。

    gdk component build
  3. 將元件發佈到 AWS 雲端. 元件發佈命令會將元件的成品上傳到 Amazon S3,並使用每個成品的 URI 更新元件的配方。然後,它會在 AWS IoT Greengrass 服務中建立元件。

    注意

    AWS IoT Greengrass 當您建立元件時,會計算每個成品的摘要。這表示您無法在建立元件之後修改 S3 儲存貯體中的成品檔案。如果這樣做,包含此元件的部署將會失敗,因為檔案摘要不相符。如果修改人工因素檔案,則必須建立元件的新版本。

    如果您在 GDK CLI 組態檔中指定NEXT_PATCH元件版本,GDK CLI 會使用服務中尚未存在的下一個修補程式版本。 AWS IoT Greengrass

    執行下列命令。

    gdk component publish

    輸出會告訴您 GDK CLI 建立的元件版本。

    發佈元件之後,您可以將元件部署到核心裝置。如需詳細資訊,請參閱 將AWS IoT Greengrass元件部署到裝置

發佈元件 (薄殼指令)

請使用下列程序,使用 shell 指令和 AWS Command Line Interface (AWS CLI) 來發佈元件。當您發佈元件時,請執行下列動作:

  1. 將元件成品發佈到 S3 儲存貯體。

  2. 將每個成品的 Amazon S3 URI 新增至元件配方。

  3. 從元件方案 AWS IoT Greengrass 中建立元件版本。

注意

您上傳的每個元件版本都必須是唯一的。請務必上傳正確的元件版本,因為上傳後就無法編輯它。

您可以按照以下步驟從開發計算機或 Greengrass 核心設備發布組件。

發佈元件 (薄殼指令) 的步驟
  1. 如果元件使用 AWS IoT Greengrass 服務中存在的版本,則您必須變更元件的版本。在文字編輯器中開啟配方,增加版本,然後儲存檔案。選擇反映您對元件所做變更的新版本。

    注意

    AWS IoT Greengrass 使用語義版本的組件。語義版本遵循一個主要的。 未成年人修補程式編號系統。例如,版本1.0.0代表元件的第一個主要發行版本。如需詳細資訊,請參閱語意版本規格

  2. 如果您的元件有人工因素,請執行下列動作:

    1. 將元件的成品發佈到 AWS 帳戶.

      提示

      建議您在 S3 儲存貯體中的成品路徑中包含元件名稱和版本。此命名配置可協助您維護舊版元件所使用的人工因素,以便您可以繼續支援先前的元件版本。

      執行下列命令,將成品檔案發佈到 S3 儲存貯體。將文檔示例存儲桶替換為存儲桶的名稱,並替換人工件/組合。 HelloWorld/1.0.0/神器 .py 與工件文件的路徑。

      aws s3 cp artifacts/com.example.HelloWorld/1.0.0/artifact.py s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/artifact.py
      重要

      核心裝置角色預設不允許存取 S3 儲存貯體。如果這是您第一次使用此 S3 儲存貯體,則必須向角色新增許可,以允許核心裝置從此 S3 儲存貯體擷取元件成品。如需詳細資訊,請參閱 允許存取元件成品的 S3 儲存貯體

    2. 添加一個名為的列表Artifacts到組件配方,如果它不存在。此Artifacts清單會顯示在每個資訊清單中,其中定義元件在其支援的每個平台上的需求 (或元件對所有平台的預設需求)。

    3. 將每個人工因素新增至人工因素清單,或更新現有成品的 URI。Amazon S3 URI 由儲存貯體名稱和儲存貯體中成品物件的路徑組成。您人工品的 Amazon S3 URI 看起來應該類似於下列範例。

      s3://DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/artifact.py

    完成這些步驟後,您的方案應該會有如下所示的Artifacts清單。

    JSON
    { ... "Manifests": [ { "Lifecycle": { ... }, "Artifacts": [ { "URI": "s3://DOC-EXAMPLE-BUCKET/artifacts/MyGreengrassComponent/1.0.0/artifact.py", "Unarchive": "NONE" } ] } ] }
    注意

    您可以新增 ZIP 人工因素的"Unarchive": "ZIP"選項,以便將 AWS IoT Greengrass 核心軟體設定為在元件部署時解壓縮成品。

    YAML
    ... Manifests: - Lifecycle: ... Artifacts: - URI: s3://DOC-EXAMPLE-BUCKET/artifacts/MyGreengrassComponent/1.0.0/artifact.py Unarchive: NONE
    注意

    您可以使用Unarchive: ZIP此選項來設定 AWS IoT Greengrass 核心軟體,以便在部署元件時解壓縮 ZIP 加工品。如需如何在組件中使用 ZIP 加工品的詳細資訊,請參閱人工因素:解壓縮路徑方法變數。

    如需配方的詳細資訊,請參閱AWS IoT Greengrass 元件配方參考

  3. 使用 AWS IoT Greengrass 主控台從 recipe 檔案建立元件。

    執行下列指令,從 recipe 檔案建立元件。此指令會建立元件,並將其發佈為 AWS 帳戶. AWS IoT Greengrass 用 recipe 文件的路徑替換路徑/到/收集文件

    aws greengrassv2 create-component-version --inline-recipe fileb://path/to/recipeFile

    arn從響應中複製以在下一個步驟中檢查組件的狀態。

    注意

    AWS IoT Greengrass 當您建立元件時,會計算每個成品的摘要。這表示您無法在建立元件之後修改 S3 儲存貯體中的成品檔案。如果這樣做,包含此元件的部署將會失敗,因為檔案摘要不相符。如果修改人工因素檔案,則必須建立元件的新版本。

  4. AWS IoT Greengrass 服務中的每個元件都有一個狀態。執行下列命令,以確認您在此程序中發佈的元件版本狀態。例如替換。 HelloWorld1.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元件部署到裝置