發佈元件以部署至核心裝置 - 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 儲存貯體。使用儲存貯體的名稱來取代 DOC/EXAMPLE- BUCKET,並取代人工件。 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 成品的詳細資訊,請參閱人工因素:解壓縮 Path 方案變數

    如需配方的詳細資訊,請參閱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元件部署到裝置