

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

# AWS IoT Greengrass Development Kit Command-Line Interface
<a name="greengrass-development-kit-cli"></a>

AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) は、[カスタム Greengrass コンポーネント](develop-greengrass-components.md)の開発に役立つ機能を提供します。GDK CLI を使用して、カスタムコンポーネントを作成、ビルドおよびパブリッシュできます。GDK CLI でコンポーネントリポジトリを作成する場合、[Greengrass Software Catalog](greengrass-software-catalog.md) (Greengrass ソフトウェアカタログ) のテンプレートまたはコミュニティコンポーネントから開始できます。次に、ファイルを ZIP アーカイブとしてパッケージ化する、Maven または Gradle 構築スクリプトを使用する、またはカスタム構築コマンドを実行する構築システムを選択できます。コンポーネントの作成後、GDK CLI を使用して AWS IoT Greengrass サービスにパブリッシュして、Greengrass コアデバイスにコンポーネントをデプロイするための AWS IoT Greengrass コンソールまたは API を使用できるようにします。

GDK CLI を使用せずに Greengrass コンポーネントを開発する場合は、コンポーネントの新しいバージョンを作成するたびに[コンポーネント recipe ファイル](component-recipe-reference.md)でバージョンとアーティファクト URI を更新する必要があります。GDK CLI を使用すると、新しいバージョンのコンポーネントをパブリッシュするたびに、自動的にバージョンとアーティファクト URI を更新できます。

GDK CLI はオープンソースであり、GitHub で利用できます。GDK CLI は、コンポーネント開発のニーズに合わせてカスタマイズおよび拡張できます。GitHub リポジトリで Issue やプルリクエストを開くことをお勧めます。GDK CLI ソースは、次のリンク先で見つけることができます。[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 Development Kit 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 デバイスを使用する場合は、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 v1.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  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
|  1.6.1  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.6.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
|  1.5.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.4.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.3.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.2.3 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.2.2 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.2.1 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
| 1.2.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
|  1.1.0  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/greengrass/v2/developerguide/greengrass-development-kit-cli.html)  | 
|  1.0.0  |  当初のバージョン  | 

# AWS IoT Greengrass Development Kit Command-Line Interface をインストールまたは更新する
<a name="install-greengrass-development-kit-cli"></a>

AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) は Python 上に構築されているため、開発用コンピュータへのインストールには `pip` を使用できます。

**ヒント**  
GDK CLI は、[venv](https://docs.python.org/3/library/venv.html#module-venv) などの Python 仮想環境にインストールすることもできます。詳細については、「Python 3 ドキュメント」の「[仮想環境とパッケージ](https://docs.python.org/3/tutorial/venv.html)」を参照してください。

**GDK CLI のインストールまたは更新**

1. [GitHub リポジトリ](https://github.com/aws-greengrass/aws-greengrass-gdk-cli)から GDK CLI の最新バージョンをインストールするには、以下のコマンドを実行します。

   ```
   python3 -m pip install -U git+https://github.com/aws-greengrass/aws-greengrass-gdk-cli.git@v1.6.2
   ```
**注記**  
GDK CLI の特定のバージョンをインストールするには、*VersionTag* をインストールするバージョンタグに置き換えます。GDK CLI のバージョンタグは、[GitHub リポジトリ](https://github.com/aws-greengrass/aws-greengrass-gdk-cli/tags)で確認できます。  

   ```
   python3 -m pip install -U git+https://github.com/aws-greengrass/aws-greengrass-gdk-cli.git@versionTag
   ```

1. <a name="gdk-cli-verify-installation"></a>GDK CLI が正常にインストールされたことを確認するには、次のコマンドを実行します。

   ```
   gdk --help
   ```

   `gdk` コマンドが見つからない場合は、コマンドのフォルダを PATH に追加してください。
   + Linux デバイスの場合、`/home/MyUser/.local/bin` を PATH に追加して、*MyUser* をユーザーの名前に置き換えます。
   + Windows デバイスの場合、`PythonPath\\Scripts` を PATH に追加して、*PythonPath* をデバイスの Python フォルダへのパスに置き換えます。

GDK CLI を使用して、Greengrass コンポーネントを作成、ビルドおよびパブリッシュできるようになりました。GDK CLI の使用方法の詳細については、「[AWS IoT Greengrass Development Kit Command-Line Interface コマンド](greengrass-development-kit-cli-commands.md)」を参照してください。

# AWS IoT Greengrass Development Kit Command-Line Interface コマンド
<a name="greengrass-development-kit-cli-commands"></a>

AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) は、開発コンピュータで Greengrass コンポーネントを作成、ビルド、パブリッシュするために使用できるコマンドラインインターフェイスを提供します。GDK CLI コマンドは次の形式を使用します。

```
gdk <command> <subcommand> [arguments]
```

[GDK CLI をインストールする](install-greengrass-development-kit-cli.md)際に、コマンドラインから GDK CLI を実行できるように、インストーラでパスに `gdk` が追加されます。

すべてのコマンドに対して、次の引数を使用できます。
+ GDK CLI コマンドの詳細については、`-h` または `--help` を使用します。
+ GDK CLI のどのバージョンがインストールされているかを確認するには、`-v` または `--version` を使用します。
+ GDK CLI のデバッグに使用できる詳細なログを出力するには、`-d` または `--debug` を使用します。

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

**Topics**
+ [コンポーネント](greengrass-development-kit-cli-component.md)
+ [config](greengrass-development-kit-cli-config.md)
+ [test-e2e](greengrass-development-kit-cli-test.md)

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

Greengrass コンポーネントの作成、ビルド、パブリッシュには、AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) の `component` コマンドを使用します。

**Topics**
+ [初期化](#greengrass-development-kit-cli-component-init)
+ [ビルド](#greengrass-development-kit-cli-component-build)
+ [公開](#greengrass-development-kit-cli-component-publish)
+ [リスト](#greengrass-development-kit-cli-component-list)

## 初期化
<a name="greengrass-development-kit-cli-component-init"></a>

コンポーネントテンプレートまたはコミュニティコンポーネントから Greengrass コンポーネントフォルダを初期化します。

<a name="gdk-cli-component-templates-community-components"></a>GDK CLI は、[Greengrass Software Catalog](greengrass-software-catalog.md) および [GitHub 上の AWS IoT Greengrass コンポーネントテンプレートリポジトリ](https://github.com/aws-greengrass/aws-greengrass-component-templates)のコンポーネントテンプレートからコミュニティコンポーネントを取得します。

**注記**  
<a name="gdk-cli-component-init-empty-folder-requirement"></a>GDK CLI v1.0.0 を使用している場合は、このコマンドは空のフォルダで実行する必要があります。GDK CLI がテンプレートまたはコミュニティコンポーネントを現在のフォルダにダウンロードします。  
<a name="gdk-cli-component-init-empty-folder-requirement-gdk-cli-v1.1.0"></a>GDK CLI v1.1.0 以降を使用する場合、`--name` 引数を使用して、GDK CLI がテンプレートまたはコミュニティコンポーネントをダウンロードするフォルダを指定することができます。この引数を使用する場合は、存在しないフォルダを指定します。GDK CLI によってフォルダが作成されます。この引数を指定しなかった場合、GDK CLI は現在のフォルダを使用しますが、このフォルダは空である必要があります。  
コンポーネントが [Zip ビルドシステム](gdk-cli-configuration-file.md#gdk-cli-configuration-file-build-system)を使用する場合、GDK CLI は、コンポーネントのフォルダ内の特定のファイルを、コンポーネントフォルダと同じ名前の zip ファイルに圧縮します。例えば、コンポーネントフォルダの名前が `HelloWorld` の場合、GDK CLI は `HelloWorld.zip` という名前の zip ファイルを作成します。コンポーネント recipe では、zip アーティファクト名はコンポーネントフォルダの名前と一致する必要があります。Windows デバイスで GDK CLI バージョン 1.0.0 を使用する場合、コンポーネントフォルダと zip ファイル名には小文字のみを含める必要があります。  
zip ビルドシステムを使用するテンプレートまたはコミュニティコンポーネントをテンプレートまたはコンポーネントとは異なる名前のフォルダに初期化する場合は、コンポーネント recipe で zip アーティファクト名を変更する必要があります。ZIP ファイル名がコンポーネントフォルダの名前と一致するように `Artifacts` および `Lifecycle` の定義を更新します。次の例では、`Artifacts` と `Lifecycle` の定義内の zip ファイル名を強調表示しています。  

```
{
  ...
  "Manifests": [
    {
      "Platform": {
        "os": "all"
      },
      "Artifacts": [
        {
          "URI": "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip",
          "Unarchive": "ZIP"
        }
      ],
      "Lifecycle": {
        "Run": "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
      }
    }
  ]
}
```

```
---
...
Manifests:
  - Platform:
      os: all
    Artifacts:
      - URI: "s3://BUCKET_NAME/COMPONENT_NAME/COMPONENT_VERSION/HelloWorld.zip"
        Unarchive: ZIP
    Lifecycle:
      Run: "python3 -u {artifacts:decompressedPath}/HelloWorld/main.py {configuration:/Message}"
```

**概要**  

```
$ gdk component init
    [--language]
    [--template]
    [--repository]
    [--name]
```

**引数 (コンポーネントテンプレートから初期化)**  
+ `-l`、`--language` - 指定したテンプレートに使用するプログラミング言語。

  `--repository` または `--language` および `--template` を指定する必要があります。
+ `-t`、`--template` - ローカルコンポーネントプロジェクトに使用するコンポーネントテンプレート。利用可能なテンプレートを表示するには、[list](#greengrass-development-kit-cli-component-list) コマンドを使用します。

  `--repository` または `--language` および `--template` を指定する必要があります。
+ `-n`、`--name` - (オプション) GDK CLI がコンポーネントを初期化するローカルフォルダの名前。存在しないフォルダを指定します。GDK CLI によってフォルダが作成されます。

  この機能は GDK CLI v1.1.0 以降で利用できます。

**引数 (コミュニティコンポーネントから初期化)**  
+ `-r`、`--repository` - ローカルフォルダにチェックアウトするコミュニティコンポーネント。利用可能なコミュニティコンポーネントを表示するには、[list](#greengrass-development-kit-cli-component-list) コマンドを使用します。

  `--repository` または `--language` および `--template` を指定する必要があります。
+ `-n`、`--name` - (オプション) GDK CLI がコンポーネントを初期化するローカルフォルダの名前。存在しないフォルダを指定します。GDK CLI によってフォルダが作成されます。

  この機能は GDK CLI v1.1.0 以降で利用できます。

**出力**:  
次の例は、このコマンドを実行して Python Hello World テンプレートからコンポーネントフォルダを初期化したときに生成される出力を示しています。  

```
$ gdk component init -l python -t HelloWorld
[2021-11-29 12:51:40] INFO - Initializing the project directory with a python component template - 'HelloWorld'.
[2021-11-29 12:51:40] INFO - Fetching the component template 'HelloWorld-python' from Greengrass Software Catalog.
```
次の例は、このコマンドを実行してコミュニティコンポーネントからコンポーネントフォルダを初期化したときに生成される出力を示しています。  

```
$ gdk component init -r aws-greengrass-labs-database-influxdb
[2022-01-24 15:44:33] INFO - Initializing the project directory with a component from repository catalog - 'aws-greengrass-labs-database-influxdb'.
[2022-01-24 15:44:33] INFO - Fetching the component repository 'aws-greengrass-labs-database-influxdb' from Greengrass Software Catalog.
```

## ビルド
<a name="greengrass-development-kit-cli-component-build"></a>

AWS IoT Greengrass サービスにパブリッシュできる recipe とアーティファクトにコンポーネントのソースを構築します。GDK CLI は、[GDK CLI configuration file](gdk-cli-configuration-file.md) (GDK CLI 設定ファイル) で指定した `gdk-config.json` で構築システムを実行します。このコマンドは、`gdk-config.json` ファイルが存在するフォルダと同じフォルダで実行する必要があります。

このコマンドを実行すると、GDK CLI は、コンポーネントフォルダ内の `greengrass-build` フォルダに recipe とアーティファクトを作成します。GDK CLI は、recipe を `greengrass-build/recipes` フォルダに保存し、アーティファクトを `greengrass-build/artifacts/componentName/componentVersion` フォルダに保存します。

GDK CLI v1.1.0 以降を使用すると、コンポーネント recipe で S3 バケットには存在して、ローカルコンポーネントの構築フォルダには存在しないアーティファクトを指定できます。この機能を使用すると、機械学習モデルなどの大きなアーティファクトを有するコンポーネントを開発するときに、帯域幅の使用量を減らすことができます。

コンポーネントの構築後は、以下のいずれかの操作を実行すると Greengrass コアデバイス上でコンポーネントをテストできます。
+ AWS IoT Greengrass Core ソフトウェアの実行場所とは異なるデバイスで開発する場合、Greengrass コアデバイスにデプロイするには、コンポーネントをパブリッシュする必要があります。コンポーネントを AWS IoT Greengrass サービスにパブリッシュし、Greengrass コアデバイスにデプロイします。詳細については、「[パブリッシュ](#greengrass-development-kit-cli-component-build)コマンド」および「[デプロイの作成](create-deployments.md)」を参照してください。
+ AWS IoT Greengrass Core ソフトウェアを実行しているデバイスと同じデバイスで開発する場合、コンポーネントを AWS IoT Greengrass サービスにデプロイするか、ローカルデプロイを作成してコンポーネントをインストールして実行することができます。ローカルデプロイを作成するには、Greengrass CLI を使用します。詳細については、「[Greengrass コマンドラインインターフェイス](gg-cli.md)」および「[ローカルデプロイで AWS IoT Greengrass コンポーネントをテストする](test-components.md)」を参照してください。ローカルデプロイを作成するときは、`greengrass-build/recipes` を recipe フォルダとして、`greengrass-build/artifacts` をアーティファクトフォルダとして使用します。

**概要**  

```
$ gdk component build
```

**引数**:  
なし

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

```
$ gdk component build
[2021-11-29 13:18:49] INFO - Getting project configuration from gdk-config.json
[2021-11-29 13:18:49] INFO - Found component recipe file 'recipe.yaml' in the  project directory.
[2021-11-29 13:18:49] INFO - Building the component 'com.example.PythonHelloWorld' with the given project configuration.
[2021-11-29 13:18:49] INFO - Using 'zip' build system to build the component.
[2021-11-29 13:18:49] WARNING - This component is identified as using 'zip' build system. If this is incorrect, please exit and specify custom build command in the 'gdk-config.json'.
[2021-11-29 13:18:49] INFO - Zipping source code files of the component.
[2021-11-29 13:18:49] INFO - Copying over the build artifacts to the greengrass component artifacts build folder.
[2021-11-29 13:18:49] INFO - Updating artifact URIs in the recipe.
[2021-11-29 13:18:49] INFO - Creating component recipe in 'C:\Users\MyUser\Documents\greengrass-components\python\HelloWorld\greengrass-build\recipes'.
```

## 公開
<a name="greengrass-development-kit-cli-component-publish"></a>

このコンポーネントを AWS IoT Greengrass サービスにパブリッシュします。このコマンドは、構築したアーティファクトを S3 バケットにアップロードし、recipe 内のアーティファクト URI を更新し、recipe からコンポーネントの新しいバージョンを作成します。GDK CLI は S3 バケットと、[GDK CLI configuration file](gdk-cli-configuration-file.md) (GDK CLI 設定ファイル) の `gdk-config.json` で指定した AWS リージョンを使用します。このコマンドは、`gdk-config.json` ファイルが存在するフォルダと同じフォルダで実行する必要があります。

<a name="gdk-cli-s3-bucket-name-formation"></a>GDK CLI v1.1.0 以降を使用する場合、`--bucket` 引数を指定して、GDK CLI がコンポーネントのアーティファクトをアップロードする S3 バケットを指定します。<a name="gdk-cli-s3-bucket-name-formation-format"></a>この引数を指定しない場合、GDK CLI は名前が `bucket-region-accountId` である S3 バケットにアップロードします。ここでは、`gdk-config.json` で指定する値は *bucket* と *region* であり、*accountId* は AWS アカウント ID です。GDK CLI は、バケットが存在しない場合に作成します。

GDK CLI v1.2.0 以降を使用する場合には、`--region` パラメータを使用して、GDK CLI 設定ファイル内で指定されている AWS リージョン を上書きできます。`--options` パラメータを使用すると、追加のオプションを指定することも可能です。使用可能なオプションのリストについては、「[Greengrass Development Kit CLI 設定ファイル](gdk-cli-configuration-file.md)」を参照してください。

このコマンドを実行すると、GDK CLI は、recipe で指定したバージョンでコンポーネントをパブリッシュします。`NEXT_PATCH` を指定した場合、GDK CLI は、まだ存在しない次のパッチバージョンを使用します。セマンティックバージョンは、major.minor.patch という番号方式になっています。詳細については、「[セマンティックバージョンの仕様](https://semver.org/)」を参照してください。

**注記**  
GDK CLI v1.1.0 以降を使用する場合、このコマンドを実行すると、GDK CLI はコンポーネントが構築されているかどうかをチェックします。コンポーネントが構築されていない場合は、GDK CLI はコンポーネントをパブリッシュする前に[コンポーネントを構築](#greengrass-development-kit-cli-component-build)します。

**概要**  

```
$ gdk component publish
    [--bucket] [--region] [--options]
```

**引数**:  
+ `-b`,`--bucket` - (オプション) GDK CLI がコンポーネントアーティファクトを公開する先の S3 バケットの名前を指定します。

   <a name="gdk-cli-s3-bucket-name-formation-format"></a>この引数を指定しない場合、GDK CLI は名前が `bucket-region-accountId` である S3 バケットにアップロードします。ここでは、`gdk-config.json` で指定する値は *bucket* と *region* であり、*accountId* は AWS アカウント ID です。GDK CLI は、バケットが存在しない場合に作成します。

  GDK CLI は、バケットが存在しない場合に作成します。

  この機能は GDK CLI v1.1.0 以降で利用できます。
+ `-r`、`--region` – (オプション) コンポーネントを作成する際の、送り先となる AWS リージョン の名前を指定します。この引数は、GDK CLI 設定内にあるリージョン名を上書きしま

  この機能は GDK CLI v1.2.0 以降で利用できます。
+ `-o`、`--options` (オプション) コンポーネントを公開するためのオプションのリストを指定します。この引数は、有効な JSON 文字列か、公開オプションが記載されている JSON ファイルへのファイルパスにする必要があります。この引数は、GDK CLI 設定内のオプションよりも優先されます。

  この機能は GDK CLI v1.2.0 以降で利用できます。

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

```
$ gdk component publish
[2021-11-29 13:45:29] INFO - Getting project configuration from gdk-config.json
[2021-11-29 13:45:29] INFO - Found component recipe file 'recipe.yaml' in the  project directory.
[2021-11-29 13:45:29] INFO - Found credentials in shared credentials file: ~/.aws/credentials
[2021-11-29 13:45:30] INFO - Publishing the component 'com.example.PythonHelloWorld' with the given project configuration.
[2021-11-29 13:45:30] INFO - No private version of the component 'com.example.PythonHelloWorld' exist in the account. Using '1.0.0' as the next version to create.
[2021-11-29 13:45:30] INFO - Uploading the component built artifacts to s3 bucket.
[2021-11-29 13:45:30] INFO - Uploading component artifacts to S3 bucket: {bucket}. If this is your first time using this bucket, add the 's3:GetObject' permission to each core device's token exchange role to allow it to download the component artifacts. For more information, see https://docs.aws.amazon.com/greengrass/v2/developerguide/device-service-role.html.
[2021-11-29 13:45:30] INFO - Not creating an artifacts bucket as it already exists.
[2021-11-29 13:45:30] INFO - Updating the component recipe com.example.PythonHelloWorld-1.0.0.
[2021-11-29 13:45:30] INFO - Creating a new greengrass component com.example.PythonHelloWorld-1.0.0
[2021-11-29 13:45:30] INFO - Created private version '1.0.0' of the component in the account.'com.example.PythonHelloWorld'.
```

## リスト
<a name="greengrass-development-kit-cli-component-list"></a>

利用可能なコンポーネントテンプレートとコミュニティコンポーネントのリストを取得します。

<a name="gdk-cli-component-templates-community-components"></a>GDK CLI は、[Greengrass Software Catalog](greengrass-software-catalog.md) および [GitHub 上の AWS IoT Greengrass コンポーネントテンプレートリポジトリ](https://github.com/aws-greengrass/aws-greengrass-component-templates)のコンポーネントテンプレートからコミュニティコンポーネントを取得します。

このコマンドの出力を [init](#greengrass-development-kit-cli-component-init) コマンドにパスすることで、テンプレートとコミュニティコンポーネントからコンポーネントリポジトリを初期化できます。

**概要**  

```
$ gdk component list
    [--template]
    [--repository]
```

**引数**:  
+ `-t`、`--template` - (オプション) 利用可能なコンポーネントテンプレートを一覧表示するには、この引数を指定します。このコマンドは、各テンプレートの名前と言語を `name-language` の形式で出力します。たとえば、`HelloWorld-python` の場合、テンプレート名は `HelloWorld` そして言語は `python` になります。
+ `-r`、`--repository` - (オプション) 利用可能なコミュニティコンポーネントリポジトリを一覧表示するには、この引数を指定します。

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

```
$ gdk component list --template
[2021-11-29 12:29:04] INFO - Listing all the available component templates from Greengrass Software Catalog.
[2021-11-29 12:29:04] INFO - Found '2' component templates to display.
1. HelloWorld-python
2. HelloWorld-java
```

# config
<a name="greengrass-development-kit-cli-config"></a>

AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) の `config` コマンドを使用して、設定ファイル `gdk-config.json` の GDK の設定を変更します。

**Topics**
+ [更新](#greengrass-development-kit-cli-config-update)

## 更新
<a name="greengrass-development-kit-cli-config-update"></a>

インタラクティブプロンプトを起動して、既存の GDK 設定ファイル内のフィールドを変更します。

**概要**  

```
$ gdk config update
    [--component]
```

**引数**:  
+ `-c`、`--component` - `gdk-config.json` ファイル内のコンポーネント関連のフィールドを更新します。この引数は唯一のオプションのため必須です。

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

```
$ gdk config update --component
Current value of the REQUIRED component_name is (default: com.example.PythonHelloWorld): 
Current value of the REQUIRED author is (default: author): 
Current value of the REQUIRED version is (default: NEXT_PATCH): 
Do you want to change the build configurations? (y/n) 
Do you want to change the publish configurations? (y/n)
[2023-09-26 10:19:48] INFO - Config file has been updated. Exiting...
```

# test-e2e
<a name="greengrass-development-kit-cli-test"></a>

AWS IoT Greengrass Development Kit コマンドラインインターフェイス (GDK CLI) の `test-e2e` コマンドを使用して、GDK プロジェクトのエンドツーエンドのテストモジュールを初期化、構築、実行します。

**Topics**
+ [初期化](#greengrass-development-kit-cli-test-init)
+ [ビルド](#greengrass-development-kit-cli-test-build)
+ [run](#greengrass-development-kit-cli-test-run)

## 初期化
<a name="greengrass-development-kit-cli-test-init"></a>

Greengrass Testing Framework (GTF) を使用するテストモジュールを使用して、既存の GDK CLI プロジェクトを初期化します。

デフォルトでは、GDK CLI は [GitHub の AWS IoT Greengrass コンポーネントテンプレートリポジトリ](https://github.com/aws-greengrass/aws-greengrass-component-templates)から Maven モジュールテンプレートを取得します。この Maven モジュールには、`aws-greengrass-testing-standalone` JAR ファイルに対する依存関係が含まれています。

このコマンドは、GDK プロジェクト内に `gg-e2e-tests` という新しいディレクトリを作成します。テストモジュールディレクトリが既に存在しており、かつ、空でない場合、コマンドは何もせずに終了します。この `gg-e2e-tests` フォルダには、Maven プロジェクトで構造化された Cucumber 機能とステップ定義が含まれています。

デフォルトでは、このコマンドは最新バージョンの GTF を使用しようとします。

**概要**  

```
$ gdk test-e2e init
    [--gtf-version]
```

**引数**:  
+ `-ov`、`--gtf-version` – (オプション) GDK プロジェクトのエンドツーエンドのテストモジュールで使用する GTF のバージョン。この値は、[リリース](https://github.com/aws-greengrass/aws-greengrass-testing/releases)の GTF バージョンの 1 つである必要があります。この引数は、GDK CLI 設定内の `gtf_version` よりも優先されます。

**出力**:  
次の例は、このコマンドを実行し、テストモジュールを使用して GDK プロジェクトを初期化したときに生成される出力を示しています。  

```
$ gdk test-e2e init
[2023-12-06 12:20:28] INFO - Using the GTF version provided in the GDK test config 1.2.0
[2023-12-06 12:20:28] INFO - Downloading the E2E testing template from GitHub into gg-e2e-tests directory...
```

## ビルド
<a name="greengrass-development-kit-cli-test-build"></a>

**注記**  
エンドツーエンドのテストモジュールを構築する前に、**gdk component build** を実行してコンポーネントを構築する必要があります。

エンドツーエンドのテストモジュールを構築します。GDK CLI は、`test-e2e` プロパティの下の [GDK CLI 設定ファイル](gdk-cli-configuration-file.md) `gdk-config.json` で指定したビルドシステムを使用してテストモジュールを構築します。このコマンドは、`gdk-config.json` ファイルが存在するフォルダと同じフォルダで実行する必要があります。

デフォルトでは、GDK CLI は Maven ビルドシステムを使用してテストモジュールを構築します。`gdk test-e2e build` コマンドを実行するには [Maven](https://maven.apache.org/) が必要です。

テスト機能ファイルに補間する `GDK_COMPONENT_NAME` や `GDK_COMPONENT_RECIPE_FILE` などの変数がある場合は、テストモジュールを構築する前に **gdk-component-build** を実行してコンポーネントを構築する必要があります。

このコマンドを実行すると、GDK CLI は GDK プロジェクト設定からすべての変数を補間し、`gg-e2e-tests` モジュールを構築して最終的なテスト JAR ファイルを生成します。

**概要**  

```
$ gdk test-e2e build
```

**引数**:  
なし

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

```
$ gdk test-e2e build
[2023-07-20 15:36:48] INFO - Updating feature file: file:///path/to//HelloWorld/greengrass-build/gg-e2e-tests/src/main/resources/greengrass/features/component.feature
[2023-07-20 15:36:48] INFO - Creating the E2E testing recipe file:///path/to/HelloWorld/greengrass-build/recipes/e2e_test_recipe.yaml
[2023-07-20 15:36:48] INFO - Building the E2E testing module
[2023-07-20 15:36:48] INFO - Running the build command 'mvn package'
.........
```

## run
<a name="greengrass-development-kit-cli-test-run"></a>

GDK 設定ファイル内のテストオプションを使用してテストモジュールを実行します。

**注記**  
エンドツーエンドのテストを実行する前に、**gdk test-e2e build** を実行してテストモジュールを構築する必要があります。

**概要**  

```
$ gdk test-e2e run
    [--gtf-options]
```

**引数**:  
+ `-oo`、`--gtf-options` – (オプション) エンドツーエンドのテストを実行するためのオプションのリストを指定します。この引数は、有効な JSON 文字列か、GTF オプションが記載されている JSON ファイルへのファイルパスにする必要があります。設定ファイルで指定されたオプションは、コマンド引数で指定されたオプションとマージされます。両方の場所にオプションが存在する場合、引数内のオプションが設定ファイルのオプションよりも優先されます。

  このコマンドで `tags` オプションが指定されていない場合、GDK はタグに `Sample` を使用します。`ggc-archive` が指定されない場合、GDK は最新バージョンの Greengrass nucleus アーカイブをダウンロードします。

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

```
$ gdk test-e2e run
[2023-07-20 16:35:53] INFO - Downloading latest nucleus archive from url https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-latest.zip
[2023-07-20 16:35:57] INFO - Running test jar with command java -jar /path/to/greengrass-build/gg-e2e-tests/target/uat-features-1.0.0.jar —ggc-archive=/path/to/aws-greengrass-gdk-cli/HelloWorld/greengrass-build/greengrass-nucleus-latest.zip —tags=Sample

16:35:59.693 [] [] [] [INFO] com.aws.greengrass.testing.modules.GreengrassContextModule - Extracting /path/to/workplace/aws-greengrass-gdk-cli/HelloWorld/greengrass-build/greengrass-nucleus-latest.zip into /var/folders/7g/ltzcb_3s77nbtmkzfb6brwv40000gr/T/gg-testing-7718418114158172636/greengrass
16:36:00.534 [gtf-1.1.0-SNAPSHOT] [] [] [INFO] com.aws.greengrass.testing.features.LoggerSteps - GTF Version is gtf-1.1.0-SNAPSHOT
.......
```

# Greengrass Development Kit CLI 設定ファイル
<a name="gdk-cli-configuration-file"></a>

AWS IoT Greengrass Development Kit Command-Line Interface (GDK CLI) は、`gdk-config.json` という名前の設定ファイルから読み込んで、コンポーネントを構築およびパブリッシュします。この設定ファイルは、コンポーネントリポジトリのルートに存在する必要があります。GDK CLI [init コマンド](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-init)を使用して、この設定ファイルでコンポーネントリポジトリを初期化することができます。

**Topics**
+ [GDK CLI 設定ファイルの形式](#gdk-config-format)
+ [GDK CLI 設定ファイルの例](#gdk-config-examples)

## GDK CLI 設定ファイルの形式
<a name="gdk-config-format"></a>

コンポーネントの GDK CLI 設定ファイルを定義する場合、次の情報を JSON 形式で指定します。

`gdk_version`  
このコンポーネントとの互換性がある GDK CLI の最小バージョン。この値は、[リリース](https://github.com/aws-greengrass/aws-greengrass-gdk-cli/releases)の GDK CLI バージョンの 1 つである必要があります。

`component`  
このコンポーネントの設定。    
`componentName`    
`author`  
コンポーネントの作成者またはパブリッシャー。  
`version`  
コンポーネントのバージョン。次のいずれかを指定します。  <a name="gdk-cli-configuration-file-component-version-options"></a>
+ `NEXT_PATCH` - このオプションを選択すると、コンポーネントをパブリッシュするときに GDK CLI がバージョンを設定します。GDK CLI は AWS IoT Greengrass サービスを照会して、コンポーネントの最新のパブリッシュバージョンを特定します。次に、そのバージョンの後の次のパッチバージョンにバージョンを設定します。コンポーネントをまだパプリッシュしていない場合は、GDK CLI はバージョン`1.0.0` を使用します。

  このオプションを選択する場合、AWS IoT Greengrass Core ソフトウェアが動作するローカル開発用コンピュータにコンポーネントをデプロイしテストするために、[Greengrass CLI](greengrass-cli-component.md) を使用することはできません。ローカルデプロイを有効にするには、代わりにセマンティックバージョンを指定する必要があります。
+ **1.0.0** などのセマンティックバージョンです。セマンティックバージョンでは、*major*.*minor*.*patch* の番号付けシステムが使用されます。詳細については、「[セマンティックバージョンの仕様](https://semver.org/)」を参照してください。

  コンポーネントをデプロイしてテストする Greengrass コアデバイスでコンポーネントを開発する場合は、このオプションを選択します。[Greengrass CLI](greengrass-cli-component.md) を使用してローカルデプロイを作成する場合は、特定のバージョンでコンポーネントを構築する必要があります。  
`build`  
このコンポーネントのソースをアーティファクトに構築するために使用する設定。このオブジェクトには、次の情報が含まれます。    
  `build_system`   
使用するビルドシステム。次のオプションから選択します。  <a name="gdk-cli-configuration-file-component-build-system-options"></a>
+ `zip` - コンポーネントのフォルダを ZIP ファイルにパッケージ化し、コンポーネントの唯一のアーティファクトとして定義します。次のタイプのコンポーネントには、このオプションを選択します。
  + Python や JavaScript などのインタプリタ形式のプログラミング言語を使用するコンポーネント。
  + 機械学習モデルやその他のリソースなどの、コード以外のファイルをパッケージ化するコンポーネント。

  GDK CLI は、コンポーネントのフォルダをコンポーネントフォルダと同じ名前の zip ファイルに圧縮します。例えば、コンポーネントフォルダの名前が `HelloWorld` の場合、GDK CLI は `HelloWorld.zip` という名前の zip ファイルを作成します。
**注記**  
Windows デバイスで GDK CLI バージョン 1.0.0 を使用する場合、コンポーネントフォルダと zip ファイル名には小文字のみを含める必要があります。

  GDK CLI がコンポーネントのフォルダを zip ファイルに圧縮する際、次のファイルはスキップされます。
  + `gdk-config.json` ファイル
  + recipe ファイル (`recipe.json` または `recipe.yaml`)
  + ビルドフォルダ (`greengrass-build` など)
+ `maven` - `mvn clean package` コマンドを実行して、コンポーネントのソースをアーティファクト内にビルドします。Java コンポーネントなどの [Maven](https://maven.apache.org/) を使用するコンポーネントの場合は、このオプションを選択します。

  Windows デバイスでは、この機能は GDK CLI v1.1.0 以降で利用できます。
+ `gradle` - `gradle build` コマンドを実行して、コンポーネントのソースをアーティファクト内にビルドします。[Gradle](https://gradle.org/) を使用するコンポーネントの場合は、このオプションを選択します。この機能は GDK CLI v1.1.0 以降で利用できます。

  `gradle` ビルドシステムは、ビルドファイルとして Kotlin DSL をサポートしています。この機能は GDK CLI v1.2.0 以降で利用できます。
+ `gradlew` - `gradlew` コマンドを実行して、コンポーネントのソースをアーティファクト内にビルドします。[Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) を使用するコンポーネントの場合は、このオプションを選択します。

  この機能は GDK CLI v1.2.0 以降で利用できます。
+ `custom` - カスタムコマンドを実行して、コンポーネントのソースを recipe とアーティファクトにビルドします。`custom_build_command` パラメータでカスタムコマンドを指定します。  
`custom_build_command`  
(オプション) カスタムビルドシステムに対して実行するカスタムビルドコマンド。`build_system` の `custom` を指定する場合は、このパラメータを指定する必要があります。  
このコマンドは、コンポーネントフォルダ内の次のフォルダに recipe とアーティファクトを作成する必要があります。GDK CLI は、[コンポーネントビルドコマンド](greengrass-development-kit-cli-component.md#greengrass-development-kit-cli-component-build)を実行したときにこれらのフォルダを作成します。  
+ recipe フォルダ: `greengrass-build/recipes`
+ アーティファクトフォルダ: `greengrass-build/artifacts/componentName/componentVersion`

  *ComponentName* をコンポーネント名に置き換えて、*ComponentVersion* を コンポーネントバージョンまたは`NEXT_PATCH` に置き換えます。
1 つの文字列または文字列のリストを指定できます。各文字列が、コマンド内の単語になります。例えば、C\$1\$1 コンポーネントのカスタムビルドコマンドを実行するには、**cmake --build build --config Release** または **["cmake", "--build", "build", "--config", "Release"]** を指定する可能性があります。  
カスタムビルドシステムの例を表示するには、「[GitHub の aws.greengrass.labs.LocalWebServer community component](https://github.com/awslabs/aws-greengrass-labs-local-web-server)」を参照してください。  
`options`  
(オプション) コンポーネントのビルドプロセス中に使用される追加の設定オプション。  
この機能は GDK CLI v1.2.0 以降で利用できます。    
`excludes`  
zip ファイルを構築するときにコンポーネントディレクトリから除外するファイルを定義するグロブパターンのリスト。`build_system` が `zip` の場合にのみ有効です。  
GDK CLI バージョン 1.4.0 以前では、除外リストのエントリに一致するファイルは、コンポーネントのすべてのサブディレクトリから除外されます。GDK CLI バージョン 1.5.0 以降で同じ動作を実現するには、除外リストの既存のエントリに `**/` を付加します。例えば、`*.txt` はディレクトリのみからテキストファイルを除外し、`**/*.txt` はすべてのディレクトリとサブディレクトリからテキストファイルを除外します。  
GDK CLI バージョン 1.5.0 以降では、`excludes` が GDK 設定ファイルで定義されていると、コンポーネントビルド中に警告が表示されることがあります。この警告を無効にするには、環境変数 `GDK_EXCLUDES_WARN_IGNORE` を `true` に設定します。
GDK CLI は、常に zip ファイルから以下のファイルを除外します。  
+ `gdk-config.json` ファイル
+ recipe ファイル (`recipe.json` または `recipe.yaml`)
+ ビルドフォルダ (`greengrass-build` など)
次のファイルはデフォルトで除外されます。ただし、これらのファイルのうち、どのファイルを除外するかは、`excludes` オプションで制御することができます。  
+ 接頭辞「test」で始まる任意のフォルダ (`test*`)
+ 全ての非表示のファイル
+ `node_modules` フォルダ
`excludes` オプションを指定すると、GDK CLI は `excludes` オプションで設定したファイルのみを除外します。`excludes` オプションを指定しない場合、GDK CLI は前述のデフォルトのファイルとフォルダを除外します。  
`zip_name`  
構築プロセス中に zip アーティファクトを作成する際に使用する zip ファイル名。`build_system` が `zip` の場合にのみ有効です。`build_system` が空の場合、コンポーネント名が zip ファイル名として使用されます。  
`publish`  
このコンポーネントを AWS IoT Greengrass サービスにパブリッシュするために使用する設定。  
<a name="gdk-cli-s3-bucket-name-formation"></a>GDK CLI v1.1.0 以降を使用する場合、`--bucket` 引数を指定して、GDK CLI がコンポーネントのアーティファクトをアップロードする S3 バケットを指定します。<a name="gdk-cli-s3-bucket-name-formation-format"></a>この引数を指定しない場合、GDK CLI は名前が `bucket-region-accountId` である S3 バケットにアップロードします。ここでは、`gdk-config.json` で指定する値は *bucket* と *region* であり、*accountId* は AWS アカウント ID です。GDK CLI は、バケットが存在しない場合に作成します。  
このオブジェクトには、次の情報が含まれます。    
`bucket`  
コンポーネントのアーティファクトをホストするために使用する S3 バケット名。  
`region`  
GDK CLI がこのコンポーネントをパブリッシュする場所となる AWS リージョン。  
GDK CLI v1.3.0 以降を使用している場合、このプロパティはオプションです。  
`options`  
(オプション) コンポーネントのバージョン作成時に使用される追加の設定オプション。  
この機能は GDK CLI v1.2.0 以降で利用できます。    
`file_upload_args`  
ファイルをバケットにアップロードする際に Amazon S3 に送信される、引数 (メタデータや暗号化メカニズムなど) を含む JSON 構造。許可される引数のリストについては、*Boto3 ドキュメント*の「[https://boto3.amazonaws.com/v1/documentation/api/latest/reference/customizations/s3.html#boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/customizations/s3.html#boto3.s3.transfer.S3Transfer.ALLOWED_UPLOAD_ARGS)」クラスを参照してください。

`test-e2e`  
(オプション) コンポーネントのエンドツーエンドのテスト中に使用する設定。この機能は GDK CLI v1.3.0 以降で利用できます。    
`build`  
`build_system` – 使用するビルドシステム。デフォルトのオプションは `maven` です。次のオプションから選択します。  
+ `maven` – `mvn package` コマンドを実行してテストモジュールを構築します。[Maven](https://maven.apache.org/) を使用するテストモジュールを構築するには、このオプションを選択します。
+ `gradle` – `gradle build` コマンドを実行してテストモジュールを構築します。[Gradle](https://gradle.org/) を使用するテストモジュールについては、このオプションを選択します。  
`gtf_version`  
(オプション) Greengrass Testing Framework (GTF) を使用して GDK プロジェクトを初期化する際に、エンドツーエンドのテストモジュールの依存関係として使用する GTF のバージョン。この値は、[リリース](https://github.com/aws-greengrass/aws-greengrass-testing/releases)の GTF バージョンの 1 つである必要があります。デフォルトは GTF バージョン 1.1.0 です。  
`gtf_options`  
(オプション) コンポーネントのエンドツーエンドのテスト中に使用される追加の設定オプション。  
<a name="gtf_options"></a>次のリストには、GTF バージョン 1.1.0 で使用できるオプションが含まれています。  
+ `additional-plugins` – (オプション) 追加の Cucumber プラグイン
+ `aws-region` – AWS のサービスの特定のリージョンレベルのエンドポイントをターゲットにします。デフォルトは、AWS SDK が検出するものです。
+ `credentials-path` – オプションの AWS プロファイル認証情報のパス。デフォルトは、ホスト環境で検出された認証情報です。
+ `credentials-path-rotation` – AWS 認証情報のオプションのローテーション期間。デフォルトで 15 分または `PT15M` に設定されます。
+ `csr-path` – デバイス証明書の生成に使用される CSR のパス。
+ `device-mode` – テスト対象のターゲットデバイス。デフォルトはローカルデバイスです。
+ `env-stage` – Greengrass のデプロイ環境をターゲットに設定します。デフォルトは本番です。
+ `existing-device-cert-arn` – Greengrass のデバイス証明書として使用する既存の証明書の ARN。
+ `feature-path` – 追加の機能ファイルを含むファイルまたはディレクトリ。デフォルトでは、追加の機能ファイルは使用されません。
+ `gg-cli-version` – Greengrass CLI のバージョンをオーバーライドします。デフォルトは `ggc.version` にある値です。
+ `gg-component-bucket` – Greengrass コンポーネントを格納する既存の Amazon S3 バケットの名前。
+ `gg-component-overrides` – Greengrass コンポーネントのオーバーライドのリスト。
+ `gg-persist` – テスト実行後に保持されるテスト要素のリスト。デフォルトでは、何も保持しないよう設定されています。許容される値は、`aws.resources`、`installed.software`、および `generated.files` です。
+ `gg-runtime` – テストがテストリソースとどのようにインタラクションするかに影響する値のリスト。これらの値は `gg.persist` パラメータよりも優先されます。デフォルトが空の場合、インストールされている Greengrass ランタイムを含む、すべてのテストリソースがテストケースによって管理されると想定されます。許容される値は、`aws.resources`、`installed.software`、および `generated.files` です。
+ `ggc-archive` – アーカイブされた Greengrass nucleus コンポーネントへのパス。
+ `ggc-install-root` – Greengrass nucleus コンポーネントをインストールするディレクトリ。デフォルトは test.temp.path とテスト実行フォルダです。
+ `ggc-log-level` – テスト実行の Greengrass nucleus ログレベルを設定します。デフォルトは「INFO」です。
+ `ggc-tes-rolename` – AWS のサービスにアクセスするために AWS IoT Greengrass Core が引き受ける IAM ロール。指定された名前のロールが存在しない場合は、ロールとデフォルトのアクセスポリシーが作成されます。
+ `ggc-trusted-plugins` – Greengrass に追加する必要がある、信頼されたプラグインのパス (ホスト上) のカンマ区切りリスト。DUT 自体のパスを指定するには、パスの前に「dut:」というプレフィックスを付けます。
+ `ggc-user-name` – Greengrass nucleus の user:group posixUser の値。デフォルトは、ログインしている現在のユーザー名です。
+ `ggc-version` – 実行中の Greengrass nucleus コンポーネントのバージョンをオーバーライドします。デフォルトは ggc.archive にある値です。
+ `log-level` – テスト実行のログレベル。デフォルトは「INFO」です。
+ `parallel-config` – JSON 文字列としてのバッチインデックスとバッチ数のセット。バッチインデックスのデフォルト値は 0、バッチ数は 1 です。
+ `proxy-url` – この URL を介してトラフィックをルーティングするようにすべてのテストを設定します。
+ `tags` – 機能タグのみを実行します。「&」を使用して組み合わせることができます
+ `test-id-prefix` – AWS リソース名とタグを含むすべてのテスト固有のリソースに適用される共通のプレフィックス。デフォルトは「gg」プレフィックスです。
+ `test-log-path` – テスト実行全体の結果を含むディレクトリ。デフォルトは「testResults」です。
+ `test-results-json` – 結果として得られる Cucumber JSON レポートがディスクに書き込まれた状態で生成されるかどうかを決定するフラグ。デフォルトは true です。
+ `test-results-log` – コンソール出力がディスクに書き込まれた状態で生成されるかどうかを決定するフラグ。デフォルトは false です。
+ `test-results-xml` – 結果として得られる JUnit XML レポートがディスクに書き込まれた状態で生成されるかどうかを決定するフラグ。デフォルトは true です。
+ `test-temp-path` – ローカルテストアーティファクトを生成するディレクトリ。デフォルトは、gg-testing というプレフィックスが付いたランダムな一時ディレクトリです。
+ `timeout-multiplier` – すべてのテストタイムアウトに提供される乗数。デフォルトは 1.0 です。

## GDK CLI 設定ファイルの例
<a name="gdk-config-examples"></a>

次の GDK CLI 設定ファイルの例を参照し、Greengrass コンポーネント環境の設定に役立ててください。

### Hello World (Python)
<a name="gdk-config-example-hello-world-python"></a>

次の GDK CLI 設定ファイルは、Python スクリプトを実行する Hello World コンポーネントをサポートしています。この設定ファイルでは、`zip` ビルドシステムを使用して、GDK CLI がアーティファクトとしてアップロードする ZIP ファイルにコンポーネントの Python スクリプトをパッケージ化しています。

```
{
  "component": {
    "com.example.PythonHelloWorld": {
      "author": "Amazon",
      "version": "NEXT_PATCH",
      "build": {
        "build_system" : "zip",
        "options": {
           "excludes": [".*"]
        }
      },
      "publish": {
        "bucket": "greengrass-component-artifacts",
        "region": "us-west-2",
        "options": {
           "file_upload_args": {
              "Metadata": {
                 "some-key": "some-value"
              }
           }
        }
      }
    },
  "test-e2e":{
    "build":{
        "build_system": "maven"
    },
    "gtf_version": "1.1.0",
    "gtf_options": { 
         "tags": "Sample"
     }
  },
  "gdk_version": "1.6.1"
  }
}
```

### Hello World (Java)
<a name="gdk-config-example-hello-world-java"></a>

次の GDK CLI 設定ファイルは、Java アプリケーションを実行する Hello World コンポーネントをサポートしています。この設定ファイルでは、`maven` ビルドシステムを使用して、GDK CLI がアーティファクトとしてアップロードする JAAR ファイルにコンポーネントの Java ソースコードをパッケージ化しています。

```
{
  "component": {
    "com.example.JavaHelloWorld": {
      "author": "Amazon",
      "version": "NEXT_PATCH",
      "build": {
        "build_system" : "maven"
      },
      "publish": {
        "bucket": "greengrass-component-artifacts",
        "region": "us-west-2",
        "options": {
           "file_upload_args": {
              "Metadata": {
                 "some-key": "some-value"
              }
           }
        }
      }
  },
  "test-e2e":{
    "build":{
        "build_system": "maven"
    },
    "gtf_version": "1.1.0",
    "gtf_options": { 
         "tags": "Sample"
     }
  },
  "gdk_version": "1.6.1"
  }
}
```

### コミュニティコンポーネント
<a name="gdk-config-community-component-examples"></a>

[Greengrass ソフトウェアカタログ](greengrass-software-catalog.md)の複数のコミュニティコンポーネントで GDK CLI を使用しています。GDK CLI 設定ファイルは、これらのコンポーネントのリポジトリで確認できます。

**コミュニティコンポーネントの GDK CLI 設定ファイルを表示するには**

1. 次のコマンドを実行して、GDK CLI を使用するコミュニティコンポーネントをリスト表示します。

   ```
   gdk component list --repository
   ```

   レスポンスには、GDK CLI を使用する各コミュニティコンポーネントの GitHub リポジトリの名前がリストアップされます。各リポジトリは `awslabs` 組織にあります。

   ```
   [2022-02-22 17:27:31] INFO - Listing all the available component repositories from Greengrass Software Catalog.
   [2022-02-22 17:27:31] INFO - Found '6' component repositories to display.
   1. aws-greengrass-labs-database-influxdb
   2. aws-greengrass-labs-telemetry-influxdbpublisher
   3. aws-greengrass-labs-dashboard-grafana
   4. aws-greengrass-labs-dashboard-influxdb-grafana
   5. aws-greengrass-labs-local-web-server
   6. aws-greengrass-labs-lookoutvision-gstreamer
   ```

1. 次の URL でコミュニティコンポーネントの GitHub リポジトリを開きます。*community-component-name* を、前のステップのコミュニティコンポーネント名に置き換えます。

   ```
   https://github.com/awslabs/community-component-name
   ```