

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

# AWS IoT Greengrass 開發套件命令列介面
<a name="greengrass-development-kit-cli"></a>

 AWS IoT Greengrass 開發套件命令列界面 (GDK CLI) 提供可協助您開發[自訂 Greengrass 元件](develop-greengrass-components.md)的功能。您可以使用 GDK CLI 來建立、建置和發佈自訂元件。當您使用 GDK CLI 建立元件儲存庫時，您可以從範本或 [Greengrass 軟體目錄中](greengrass-software-catalog.md)的社群元件開始。然後，您可以選擇建置系統，將檔案封裝為 ZIP 封存檔、使用 Maven 或 Gradle 建置指令碼，或執行自訂建置命令。建立元件後，您可以使用 GDK CLI 將其發佈至 AWS IoT Greengrass 服務，以便您可以使用 AWS IoT Greengrass 主控台或 API 將元件部署至 Greengrass 核心裝置。

當您在沒有 GDK CLI 的情況下開發 Greengrass 元件時，每次建立新的元件版本時，都必須更新[元件配方檔案中](component-recipe-reference.md)的版本和成品 URIs。當您使用 GDK CLI 時，它可以在每次發佈新版本的元件時自動為您更新版本和成品 URIs。

GDK CLI 是開放原始碼，可在 GitHub 上使用。您可以自訂和擴展 GDK CLI，以滿足元件開發需求。我們邀請您在 GitHub 儲存庫上開啟問題並提取請求。您可以在以下連結找到 GDK CLI 來源：https：//[https://github.com/aws-greengrass/aws-greengrass-gdk-cli](https://github.com/aws-greengrass/aws-greengrass-gdk-cli)。

## 先決條件
<a name="gdk-cli-prerequisites"></a>

若要安裝和使用 Greengrass 開發套件 CLI，您需要下列項目：
+  AWS 帳戶：如果您沒有帳戶，請參閱 [設定 AWS 帳戶](setting-up.md#set-up-aws-account)。
+ 具有網際網路連線的 Windows、macOS 或類似 Unix 的開發電腦。
+ 對於 GDK CLI 1.1.0 版或更新版本，[Python](https://www.python.org/downloads/) 3.6 或更新版本會安裝在開發電腦上。

  對於 GDK CLI 1.0.0 版，[Python](https://www.python.org/downloads/) 3.8 或更新版本安裝在開發電腦上。
+ 安裝在開發電腦上的 [Git](https://git-scm.com/)。
+ <a name="development-component-aws-cli-prerequisite"></a>AWS Command Line Interface (AWS CLI) 在開發電腦上安裝並設定 憑證。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[安裝、更新和解除安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 和[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。
**注意**  
如果您使用 Raspberry Pi 或其他 32 位元 ARM 裝置，則 install AWS CLI V1. AWS CLI V2 不適用於 32 位元 ARM 裝置。如需詳細資訊，請參閱[安裝、更新和解除安裝 AWS CLI 版本 1](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html)。
+ 若要使用 GDK CLI 將元件發佈至 AWS IoT Greengrass 服務，您必須具有下列許可：
  + `s3:CreateBucket`
  + `s3:GetBucketLocation`
  + `s3:PutObject`
  + `greengrass:CreateComponentVersion`
  + `greengrass:ListComponentVersions`
+ 若要使用 GDK CLI 來建置其成品存在於 S3 儲存貯體而非本機檔案系統中的元件，您必須具有下列許可：
  + `s3:ListBucket`

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

## 變更記錄
<a name="gdk-cli-changelog"></a>

下表說明每個 GDK CLI 版本中的變更。如需詳細資訊，請參閱 GitHub 上的 [GDK CLI 版本頁面](https://github.com/aws-greengrass/aws-greengrass-gdk-cli/releases)。


|  **版本**  |  **變更**  | 
| --- | --- | 
| 1.6.2 |  **錯誤修正和改善**<br />   修正 Windows gradlew.bat 因相對路徑而無法運作的問題。   記錄、測試和封裝的小幅度改進。     | 
| 1.6.1 |  **錯誤修正和改善**<br />   新增 CLI 引數剖析的安全修正。   讓 GDK 取得最新的 Greengrass 測試架構 (GTF) 版本名稱做為預設 GTF 版本。   可讓 GDK 使用客戶更新至最新版本的舊版 GTF 來建議客戶。     | 
| 1.6.0 |  **新功能**<br />   在 `component build`和 `component publish`命令期間，針對 Greengrass 配方結構描述新增配方驗證檢查。此更新可協助開發人員在元件建立程序中稍早在其元件配方中識別可採取動作的問題。   將可信度測試套件新增至 範本，該範本可由 `test-e2e init`命令下拉。此可信度測試套件包含八項一般測試，可用於並擴充以滿足基本元件測試需求。   <br />**錯誤修正和改善**<br />   將 `test-e2e` 命令使用的預設 Greengrass 測試架構 (GTF) 版本更新為 1.2.0 版。     | 
| 1.5.0 |  **錯誤修正和改善**<br /> 當 `build_system`為 時，更新`excludes`建置選項所辨識的模式`zip`。此版本現在會根據其萬用字元來辨識符合路徑名稱的 glob 模式。這會啟用要排除哪些目錄的自訂規格。   | 
| 1.4.0 |  **新功能**<br />   新增新`config`命令，以啟動互動式提示來修改現有 GDK 組態檔案中的欄位。   修改 `gdk component build`和 `gdk component publish`命令，以確認配方大小在 Greengrass 要求 (<=16000 位元組） 內，然後再繼續。   <br />**錯誤修正和改善**<br />   當配方語法錯誤導致建置無法完成以保持意識時， 會在`gdk component build`命令的輸出中新增額外的記錄。   由於 Open Test Framework 已重新命名`otf-options``otf-version`為 Greengrass Testing Framework，因此將 `gtf-options`和 `gtf-version`分別重新命名為 和 。     | 
| 1.3.0 |  **新功能**<br />   新增`test-e2e`命令，以支援使用 Open Test Framework 進行元件的end-to-end測試。   新增新的組態選項 `zip_name`，以支援具有 zip 組建系統的可設定 zip 檔案名稱。   將 GDK 組態檔案中的 `region` 屬性設為選用。   <br />**錯誤修正和改善**<br />   修正即使使用 `--name`引數初始化 GDK 專案時不存在指定的範本或儲存庫，也會建立新目錄的問題。     | 
| 1.2.3 |  **錯誤修正和改善**<br />   修正儲存貯體建立因錯誤處理而失敗的問題。   修正元件配方中清單結構移除的問題。     | 
| 1.2.2 |  **錯誤修正和改善**<br />   配方索引鍵不再區分大小寫。   新增檢查，以判斷儲存貯體是否存在於 中， AWS 區域 且使用者可以在建立新儲存貯體之前存取。要求使用者擁有 `GetBucketLocation`許可。   修正 GDK CLI 組態檔案中`excludes`關鍵字的問題。     | 
| 1.2.1 |  **錯誤修正和改善**<br />   接受`gdk-config.json`檔案中區域組態項目 AWS 區域 中的加拿大 （中部） (`ca-central-1`)。   將 `--region` GDK CLI 引數的問題修正為 `publish`命令。     | 
| 1.2.0 |  **新功能**<br />   將`options`項目新增至 GDK CLI `build`組態檔案中的組態。支援 `excludes` `options`在使用`zip`建置系統時，從 zip 成品中排除特定檔案。   新增`gradlew`建置系統以使用 Gradle Wrapper 來建置元件。   為建置選項新增對 Kotlin DSL `gradle` 組建檔案的支援。   將`options`項目新增至 GDK CLI `publish`組態檔案中的組態。支援`file_upload_args`下方 `options`，以在將檔案上傳至 Amazon S3 時提供額外的引數。    **錯誤修正和改善**<br />   修正執行建置命令之前 Gradle 組建未清除的問題。   修正建置命令失敗時，組建未結束的問題。   改善`gdk component list`命令的輸出格式。     | 
| 1.1.0 |  **新功能**<br />   新增對 Gradle [建置系統的](gdk-cli-configuration-file.md#gdk-cli-configuration-file-build-system)支援。   在 Windows 裝置上新增對 Maven [建置系統的](gdk-cli-configuration-file.md#gdk-cli-configuration-file-build-system)支援。   將`--bucket`引數新增至[元件發佈](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-publish)命令。您可以使用此引數指定 GDK CLI 上傳元件成品的確切儲存貯體。   將`--name`引數新增至[元件 init](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-init) 命令。您可以使用此選項來指定 GDK CLI 初始化元件的資料夾。   新增對 S3 儲存貯體中存在但不在本機元件建置資料夾中之元件成品的支援。您可以使用此功能來降低大型元件成品的頻寬成本，例如機器學習模型。   <br />**錯誤修正和改善**<br />   更新[元件發佈](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-publish)命令，以檢查元件是否已在發佈元件之前建置。如果未建置元件，此命令現在會為您[建置元件](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-build)。   修正當 ZIP 檔案名稱包含大寫字母時， zip 組建系統無法在 Windows 裝置上組建的問題。   改善日誌訊息格式，並在執行 Python 3.8 版之前的`INFO`裝置上將預設日誌層級變更為 。   將最低 Python 版本需求變更為 Python 3.6。     | 
| 1.0.0 | 初始版本。 | 