

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

# 部署
<a name="gg-cli-deployment"></a>

使用 `deployment`命令與核心裝置上的本機元件互動。

若要監控本機部署的進度，請使用 `status`子命令。您無法使用 主控台監控本機部署的進度。

**子命令**
+ [建立](#deployment-create)
+ [取消](#deployment-cancel)
+ [列出](#deployment-list)
+ [status](#deployment-status)

## 建立
<a name="deployment-create"></a>

使用指定的元件配方、成品和執行期引數建立或更新本機部署。

**概要**  

```
greengrass-cli deployment create 
    --recipeDir path/to/component/recipe
    [--artifactDir path/to/artifact/folder ]
    [--update-config {component-configuration}]
    [--groupId <thing-group>]
    [--merge "<component-name>=<component-version>"]...
    [--runWith "<component-name>:posixUser=<user-name>[:<group-name>]"]...
    [--systemLimits "{component-system-resource-limits}]"]...
    [--remove <component-name>,...]
    [--failure-handling-policy <policy name[ROLLBACK, DO_NOTHING]>]
```

**Arguments (引數)**  
+ `--recipeDir`、`-r`。 包含元件配方檔案之資料夾的完整路徑。
+ `--artifactDir`、`-a`。 資料夾的完整路徑，其中包含您要包含在部署中的成品檔案。成品資料夾必須包含下列目錄結構：

  ```
  /path/to/artifact/folder/<component-name>/<component-version>/<artifacts>
  ```
+ `--update-config`、`-c`。 部署的組態引數，以 JSON 字串或 JSON 檔案的形式提供。JSON 字串的格式應該如下：

  ```
  { \
    "componentName": { \ 
      "MERGE": {"config-key": "config-value"}, \
      "RESET": ["path/to/reset/"] \
    } \
  }
  ```

  `MERGE` 和 區分`RESET`大小寫，且必須是大寫。
+ `--groupId`、`-g`。 部署的目標物件群組。
+ `--merge`、`-m`。 您要新增或更新的目標元件名稱和版本。您必須以 格式提供元件資訊`<component>=<version>`。為每個要指定的額外元件使用單獨的引數。如有需要，請使用 `--runWith`引數提供執行元件的 `posixGroup`、 `posixUser`和 `windowsUser`資訊。
+ `--runWith`。 執行一般或 Lambda 元件的 `posixUser``posixGroup`、 和 `windowsUser`資訊。您必須以 格式提供此資訊`<component>:{posixUser|windowsUser}=<user>[:<=posixGroup>]`。例如，您可以指定 **HelloWorld:posixUser=ggc\$1user:ggc\$1group**或 **HelloWorld:windowsUser=ggc\$1user**。為每個要指定的其他選項使用單獨的引數。

  如需詳細資訊，請參閱[設定執行元件的使用者](configure-greengrass-core-v2.md#configure-component-user)。
+ `--systemLimits`。 系統資源限制，適用於核心裝置上的一般和非容器 Lambda 元件程序。您可以設定每個元件程序可以使用的 CPU 和 RAM 用量上限。指定序列化 JSON 物件或 JSON 檔案的檔案路徑。JSON 物件必須具有下列格式。

  ```
  {  \
    "componentName": { \ 
      "cpus": cpuTimeLimit, \
      "memory": memoryLimitInKb \
    } \
  }
  ```

  您可以為每個元件設定下列系統資源限制：
  + `cpus` – <a name="system-resource-limits-cpu-definition-this"></a>此元件的程序可在核心裝置上使用的 CPU 時間上限。核心裝置的 CPU 總時間等於裝置的 CPU 核心數。例如，在具有 4 個 CPU 核心的核心裝置上，您可以將此值設定為 `2`，以將此元件的程序限制為每個 CPU 核心的 50% 用量。在具有 1 個 CPU 核心的裝置上，您可以將此值設定為 `0.25`，以將此元件的程序限制為 CPU 的 25% 用量。如果您將此值設定為大於 CPU 核心數量的數字，則 AWS IoT Greengrass Core 軟體不會限制元件的 CPU 用量。
  + `memory` – <a name="system-resource-limits-memory-definition-this"></a>此元件的程序可在核心裝置上使用的 RAM 數量上限 （以 KB 為單位）。

  如需詳細資訊，請參閱[設定元件的系統資源限制](configure-greengrass-core-v2.md#configure-component-system-resource-limits)。

  此功能適用於 Linux 核心裝置上的 [Greengrass 核元件](greengrass-nucleus-component.md)和 Greengrass CLI 的 v2.4.0 和更新版本。目前 AWS IoT Greengrass 不支援 Windows 核心裝置上的此功能。
+ `--remove`。 您要從本機部署中移除的目標元件名稱。若要移除從雲端部署合併的元件，您必須以下列格式提供目標物件群組的群組 ID：

------
#### [ Greengrass nucleus v2.4.0 and later ]

  ```
  --remove <component-name> --groupId <group-name>
  ```

------
#### [ Earlier than v2.4.0 ]

  ```
  --remove <component-name> --groupId thinggroup/<group-name>
  ```

------
+ `--failure-handling-policy`。 定義部署失敗時所採取的動作。您可以指定兩個動作：
  + `ROLLBACK` – 
  + `DO_NOTHING` – 

  此功能適用於 的 v2.11.0 和更新版本。 [Greengrass 核](greengrass-nucleus-component.md)

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

```
$ sudo greengrass-cli deployment create \
    --merge MyApp1=1.0.0 \
    --merge MyApp2=1.0.0 --runWith MyApp2:posixUser=ggc_user \
    --remove MyApp3 \
    --recipeDir recipes/ \ 
    --artifactDir artifacts/

Local deployment has been submitted! Deployment Id: 44d89f46-1a29-4044-ad89-5151213dfcbc
```

## 取消
<a name="deployment-cancel"></a>

取消指定的部署。

概要  

```
greengrass-cli deployment cancel
    -i <deployment-id>
```

引數  
`-i`。 要取消之部署的唯一識別符。部署 ID 會在 `create`命令的輸出中傳回。

輸出  
+ 無

## 列出
<a name="deployment-list"></a>

擷取最近 10 個本機部署的狀態。

**概要**  

```
greengrass-cli deployment list
```

**Arguments (引數)**  
無

**輸出**  
下列範例顯示執行此命令時產生的輸出。根據您的部署狀態，輸出會顯示下列其中一個狀態值：`SUCCEEDED`、 `IN_PROGRESS`或 `FAILED`。  

```
$ sudo greengrass-cli deployment list

44d89f46-1a29-4044-ad89-5151213dfcbc: SUCCEEDED
Created on: 6/27/23 11:05 AM
```

## status
<a name="deployment-status"></a>

擷取特定部署的狀態。

**概要**  

```
greengrass-cli deployment status -i <deployment-id>
```

**Arguments (引數)**  
`-i`。 部署的 ID。

**輸出**  
下列範例顯示執行此命令時產生的輸出。根據您的部署狀態，輸出會顯示下列其中一個狀態值：`SUCCEEDED`、 `IN_PROGRESS`或 `FAILED`。  

```
$ sudo greengrass-cli deployment status -i 44d89f46-1a29-4044-ad89-5151213dfcbc

44d89f46-1a29-4044-ad89-5151213dfcbc: FAILED
Created on: 6/27/23 11:05 AM
Detailed Status: <Detailed deployment status>
Deployment Error Stack: List of error codes
Deployment Error Types: List of error types
Failure Cause: Cause
```