

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Greengrass CLI コマンド
<a name="gg-cli-reference"></a>

Greengrass CLI は、AWS IoT Greengrass コアデバイスとの対話を可能にするコマンドラインインターフェイスを提供します。Greengrass CLI コマンドは次の形式を使用します。

```
$ greengrass-cli <command> <subcommand> [arguments]
```

デフォルトでは、`/greengrass/v2/bin/` フォルダ内の `greengrass-cli` 実行可能ファイルは、`/greengrass/v2` フォルダ内で動作している AWS IoT Greengrass Core ソフトウェアのバージョンと対話します。この場所にない実行ファイルを呼び出す場合、または別の場所にある AWS IoT Greengrass Core ソフトウェアとやり取りする場合は、以下のいずれかの方法を使用して、やり取りする AWS IoT Greengrass Core ソフトウェアのルートパスを明示的に指定する必要があります。<a name="greengrass-cli-set-root-path"></a>
+ `GGC_ROOT_PATH` 環境変数を `/greengrass/v2` に設定します。
+ 次の例のように、コマンドに `--ggcRootPath /greengrass/v2` 引数を追加します。

  ```
  greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]
  ```

すべてのコマンドに対して、次の引数を使用できます。
+ 特定の Greengrass CLI コマンドに関する情報には、`--help` を使用します。
+ Greengrass CLI のバージョンに関する情報には、`--version` を使用します。

このセクションでは、Greengrass CLI コマンドについて説明し、各コマンドの例を示します。各コマンドの概要には、その引数とその使用法が示されています。オプションの引数は角括弧で囲んで表示しています。

**Topics**
+ [コンポーネント](gg-cli-component.md)
+ [デプロイ](gg-cli-deployment.md)
+ [ログ](gg-cli-logs.md)
+ [get-debug-password](gg-cli-get-debug-password.md)

# コンポーネント
<a name="gg-cli-component"></a>

`component` コマンドを使用することで、コアデバイス上のローカルコンポーネントとやり取りすることができます。

**サブコマンド**
+ [詳細](#component-details)
+ [リスト](#component-list)
+ [restart](#component-restart)
+ [停止](#component-stop)

## 詳細
<a name="component-details"></a>

1 つのコンポーネントのバージョン、ステータス、および設定を取得します。

**概要**  

```
greengrass-cli component details --name <component-name> 
```

**引数**:  
`--name`、`-n`。コンポーネントの名前。

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ sudo greengrass-cli component details --name MyComponent 

Component Name: MyComponent 
Version: 1.0.0
State: RUNNING
Configuration: null
```

## リスト
<a name="component-list"></a>

デバイスにインストールされている各コンポーネントの名前、バージョン、ステータス、および設定を取得します。

**概要**  

```
greengrass-cli component list
```

**引数**:  
なし

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ sudo greengrass-cli component list

Components currently running in Greengrass:
Component Name: FleetStatusService
Version: 0.0.0
State: RUNNING
Configuration: {"periodicUpdateIntervalSec":86400.0}
Component Name: UpdateSystemPolicyService
Version: 0.0.0
State: RUNNING
Configuration: null
Component Name: aws.greengrass.Nucleus
Version: 2.0.0
State: FINISHED
Configuration: {"awsRegion":"region","runWithDefault":{"posixUser":"ggc_user:ggc_group"},"telemetry":{}}
Component Name: DeploymentService
Version: 0.0.0
State: RUNNING
Configuration: null
Component Name: TelemetryAgent
Version: 0.0.0
State: RUNNING
Configuration: null
Component Name: aws.greengrass.Cli
Version: 2.0.0
State: RUNNING
Configuration: {"AuthorizedPosixGroups":"ggc_user"}
```

## restart
<a name="component-restart"></a>

コンポーネントを再起動します。

**概要**  

```
greengrass-cli component restart --names <component-name>,...
```

**引数**:  
`--names`、`-n`。コンポーネントの名前。少なくとも 1 つのコンポーネント名が必要です。各名前をカンマで区切ることで、追加のコンポーネント名を指定できます。

**出力**:  
なし

## 停止
<a name="component-stop"></a>

実行中のコンポーネントを停止します。

**概要**  

```
greengrass-cli component stop --names <component-name>,...
```

**引数**  
`--names`、`-n`。コンポーネントの名前。少なくとも 1 つのコンポーネント名が必要です。必要に応じて、各名前をカンマで区切ることで、追加のコンポーネント名を指定できます。

**出力**:  
なし

# デプロイ
<a name="gg-cli-deployment"></a>

`deployment` コマンドを使用することで、コアデバイス上のローカルコンポーネントとやり取りすることができます。

ローカルデプロイの進行状況を監視するには、`status` サブコマンドを使用します。コンソールを使用してローカルデプロイの進行状況を監視することはできません。

**サブコマンド**
+ [作成](#deployment-create)
+ [キャンセル](#deployment-cancel)
+ [リスト](#deployment-list)
+ [ステータス](#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]>]
```

**引数**:  
+ `--recipeDir`、`-r`。コンポーネントレシピファイルが格納されているフォルダへのフルパス。
+ `--artifactDir`、`-a`。デプロイに含めるアーティファクトファイルが含まれるフォルダへのフルパス。アーティファクトフォルダには、以下のディレクトリ構造が含まれている必要があります。

  ```
  /path/to/artifact/folder/<component-name>/<component-version>/<artifacts>
  ```
+ `--update-config`、`-c`。デプロイの設定引数。JSON 文字列または JSON ファイルとして提供されます。JAON 文字列の形式は次のようになります。

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

  `MERGE` および `RESET` は大文字と小文字を区別するため、大文字にする必要があります。
+ `--groupId`、`-g`。デプロイのターゲットとなるモノグループ。
+ `--merge`、`-m`。追加または更新するターゲットコンポーネントの名前とバージョン。コンポーネント情報は、`<component>=<version>` の形式で提供する必要があります。指定する追加コンポーネントごとに個別の引数を使用します。必要に応じて、`--runWith` 引数を指定して、コンポーネントを実行するための `posixUser`、`posixGroup`、および `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% の使用率に制限することができます。CPU コアが 1 つのデバイスの場合は、この値を `0.25` に設定することで、このコンポーネントのプロセスを CPU の 25% の使用率に制限することができます。この値を CPU コア数よりも大きい値に設定すると、AWS IoT Greengrass Core ソフトウェアは、コンポーネントの CPU 使用率に制限をかけません。
  + `memory` – <a name="system-resource-limits-memory-definition-this"></a>このコンポーネントのプロセスがコアデバイスで使用できる RAM の最大量 (キロバイト単位)。

  詳細については、「[コンポーネントのシステムリソース制限を設定する](configure-greengrass-core-v2.md#configure-component-system-resource-limits)」を参照してください。

  この機能は、[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)の v2.4.0 以降および Linux コアデバイスの Greengrass CLI に利用できます。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`。デプロイが失敗したときに実行されるアクションを定義します。指定できるアクションは次の 2 つです。
  + `ROLLBACK` – 
  + `DO_NOTHING` – 

  この機能は [Greengrass nucleus](greengrass-nucleus-component.md) の v2.11.0 以降で使用できます。

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ 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` コマンドの出力で返されます。

Output  
+ なし

## リスト
<a name="deployment-list"></a>

過去 10 回分のローカルデプロイのステータスを取得します。

**概要**  

```
greengrass-cli deployment list
```

**引数**:  
なし

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。デプロイのステータスに応じて、出力には `IN_PROGRESS`、`SUCCEEDED`、または `FAILED` のいずれかのステータス値が表示されます。  

```
$ sudo greengrass-cli deployment list

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

## ステータス
<a name="deployment-status"></a>

特定のデプロイのステータスを取得します。

**概要**  

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

**引数**  
`-i`。 デプロイの ID。

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。デプロイのステータスに応じて、出力には `IN_PROGRESS`、`SUCCEEDED`、または `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
```

# ログ
<a name="gg-cli-logs"></a>

`logs` コマンドを使用して、コアデバイスの Greengrass ログを分析します。

**サブコマンド**
+ [get](#logs-get)
+ [list-keywords](#logs-list-keywords)
+ [list-log-files](#logs-list-log-files)

## get
<a name="logs-get"></a>

Greengrass ログファイルを収集、フィルタリング、視覚化します。このコマンドは JSON 形式のログファイルのみをサポートします。nucleus 設定の[ログ記録形式](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)を指定できます。

**概要**  

```
greengrass-cli logs get
    [--log-dir path/to/a/log/folder]
    [--log-file path/to/a/log/file]
    [--follow true | false ]
    [--filter <filter> ]
    [--time-window <start-time>,<end-time> ]
    [--verbose ]
    [--no-color ]
    [--before <value> ]
    [--after <value> ]
    [--syslog ]
    [--max-long-queue-size <value> ]
```

**引数**:  
+ `--log-dir`、`-ld`。ログファイルをチェックするディレクトリのパス (例:**`/greengrass/v2`/logs** )。`--syslog` と併用しないでください。指定する追加ディレクトリに個別の引数を使用します。少なくくとも `--log-dir`、`--log-file` の内いずれかを指定する必要があります。1 つのコマンドで 両方の引数を使用することもできます。
+ `--log-file`、`-lf`。使用するログディレクトリへのパス。指定する追加ディレクトリに個別の引数を使用します。少なくくとも `--log-dir`、`--log-file` の内いずれかを指定する必要があります。1 つのコマンドで 両方の引数を使用することもできます。
+ `--follow`、`-fol`。発生するに従って、ログの更新を表示します。Greengrass CLI は引き続き実行され、指定されたログから読み取られます。時間ウィンドウを指定している場合、Greengrass CLI はすべての時間ウィンドウが終了した後にログのモニタリングを停止します。
+ `--filter`、`-f`。フィルターとして使用するキーワード、正規表現、またはキーと値のペア。この値は、文字列、正規表現、またはキーと値のペアとして指定します。指定する追加フィルターごとに個別の引数を使用します。

  評価後、単一の引数内に指定されている複数のフィルターは OR 演算子で区切られ、追加の引数で指定されたフィルターは AND 演算子で結合されます。たとえば、コマンドに `--filter "installed" --filter "name=alpha,name=beta"` を含めた場合、Greengrass CLI は、`alpha` または `beta` を値に持つ `installed` キーワードと `name` キーの両方が含まれるログメッセージをフィルタリングして表示します。
+ `--time-window`、`-t`。ログ情報を表示する時間ウィンドウ。正確なタイムスタンプと相対オフセットの両方を使用できます。`<begin-time>,<end-time>` 形式でこの情報を提供する必要があります。開始時間または終了時間を指定しなかった場合、そのオプションの値はデフォルトで、現在のシステムの日付と時刻に設定されます。指定する追加時間ウィンドウごとに個別の引数を使用します。

  Greengrass CLI では、次の形式のタイムスタンプがサポートされています。
  + `yyyy-MM-DD`、例えば `2020-06-30` など。この形式を使用すると、時間のデフォルトは 00:00:00 になります。

    `yyyyMMDD`、例えば `20200630` など。この形式を使用すると、時間のデフォルトは 00:00:00 になります。

    `HH:mm:ss`、例えば `15:30:45` など。この形式を使用すると、日付は現在のシステム日付にデフォルト設定されます。

    `HH:mm:ssSSS`、例えば `15:30:45` など。この形式を使用すると、日付は現在のシステム日付にデフォルト設定されます。

    `YYYY-MM-DD'T'HH:mm:ss'Z'`、例えば `2020-06-30T15:30:45Z` など。

    `YYYY-MM-DD'T'HH:mm:ss`、例えば `2020-06-30T15:30:45` など。

    `yyyy-MM-dd'T'HH:mm:ss.SSS`、例えば `2020-06-30T15:30:45.250` など。

  相対オフセットは、現在のシステム時刻からの時間オフセットを指定します。Greengrass CLI は、相対オフセットに次の形式をサポートしています：`+|-[<value>h|hr|hours][valuem|min|minutes][value]s|sec|seconds`。

  例えば、現在時刻の 1 時間前から 2 時間 15 分前までの時間帯を指定する以下の引数は、`--time-window -2h15min,-1hr` です。
+ `--verbose`。 ログメッセージのすべてのフィールドを表示します。`--syslog` と併用しないでください。
+ `--no-color`、`-nc`。カラーコーディングを削除します。ログメッセージのデフォルトのカラーコードでは、太字の赤いテキストが使用されます。ANSI エスケープシーケンスを使用するため、UNIX 互換の端末のみをサポートします。
+ `--before`、`-b`。一致したログエントリの前に表示する行数。デフォルトは 0 です。
+ `--after`、`-a`。一致したログエントリの後に表示する行数。デフォルトは 0 です。
+ `--syslog`。RFC3164 で定義された syslog プロトコルを使用して、すべてのログファイルを処理します。`--log-dir` および`--verbose` と併用しないでください。syslog プロトコルでは、次の形式を使用します: `"<$Priority>$Timestamp $Host $Logger ($Class): $Message"`。ログファイルを指定しなかった場合、Greengrass CLI は次の場所からログメッセージを読み取ります: `/var/log/messages`、`/var/log/syslog`、または`/var/log/system.log`。

  AWS IoT Greengrass は、現在 Windows コアデバイスにこの機能をサポートしていません。
+ `--max-log-queue-size`、`-m`。メモリに割り当てるログエントリの最大数。このオプションを使用して、メモリ使用量を最適化します。デフォルトは 100 です。

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ sudo greengrass-cli logs get --verbose \
    --log-file /greengrass/v2/logs/greengrass.log \
    --filter deployment,serviceName=DeploymentService \
    --filter level=INFO \
    --time-window 2020-12-08T01:11:17,2020-12-08T01:11:22

2020-12-08T01:11:17.615Z [INFO] (pool-2-thread-14) com.aws.greengrass.deployment.DeploymentService: Current deployment finished. {DeploymentId=44d89f46-1a29-4044-ad89-5151213dfcbc, serviceName=DeploymentService, currentState=RUNNING}
2020-12-08T01:11:17.675Z [INFO] (pool-2-thread-14) com.aws.greengrass.deployment.IotJobsHelper: Updating status of persisted deployment. {Status=SUCCEEDED, StatusDetails={detailed-deployment-status=SUCCESSFUL}, ThingName=MyThing, JobId=22d89f46-1a29-4044-ad89-5151213dfcbc
```

## list-keywords
<a name="logs-list-keywords"></a>

ログファイルのフィルタリングに使用できる推奨キーワードを表示します。

**概要**  

```
greengrass-cli logs list-keywords [arguments]
```

**引数**:  
なし

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ sudo greengrass-cli logs list-keywords

Here is a list of suggested keywords for Greengrass log:
level=$str
thread=$str
loggerName=$str
eventType=$str
serviceName=$str
error=$str
```

```
$ sudo greengrass-cli logs list-keywords --syslog

Here is a list of suggested keywords for syslog:
priority=$int
host=$str
logger=$str
class=$str
```

## list-log-files
<a name="logs-list-log-files"></a>

指定したディレクトリにあるログファイルを表示します。

**概要**  

```
greengrass-cli logs list-log-files [arguments]
```

**引数**:  
`--log-dir`、`-ld`。ログファイルをチェックするディレクトリのパス。

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ sudo greengrass-cli logs list-log-files -ld /greengrass/v2/logs/

/greengrass/v2/logs/aws.greengrass.Nucleus.log
/greengrass/v2/logs/main.log
/greengrass/v2/logs/greengrass.log
Total 3 files found.
```

# get-debug-password
<a name="gg-cli-get-debug-password"></a>

`get-debug-password` コマンドを使用すると、[ローカルデバッグコンソールコンポーネント](local-debug-console-component.md) (`aws.greengrass.LocalDebugConsole`) 向けにランダムに生成されたパスワードが出力されます。パスワードは、生成されてから 8 時間後に期限切れになります。

**概要**  

```
greengrass-cli get-debug-password
```

**引数**:  
なし

**出力**:  
次の例は、このコマンドを実行したときに生成される出力を示しています。  

```
$ sudo greengrass-cli get-debug-password

Username: debug
Password: bEDp3MOHdj8ou2w5de_sCBI2XAaguy3a8XxREXAMPLE
Password expires at: 2021-04-01T17:01:43.921999931-07:00
The local debug console is configured to use TLS security. The certificate is self-signed so you will need to bypass your web browser's security warnings to open the console.
Before you bypass the security warning, verify that the certificate fingerprint matches the following fingerprints.
SHA-256: 15 0B 2C E2 54 8B 22 DE 08 46 54 8A B1 2B 25 DE FB 02 7D 01 4E 4A 56 67 96 DA A6 CC B1 D2 C4 1B
SHA-1: BC 3E 16 04 D3 80 70 DA E0 47 25 F9 90 FA D6 02 80 3E B5 C1
```