

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

# Dockerfile から AWS IoT Greengrass コンテナイメージを構築する
<a name="build-greengrass-dockerfile"></a>

AWS には、Docker コンテナで AWS IoT Greengrass Core ソフトウェアをダウンロードして実行するために使用できる Dockerfile が用意されています。Dockerfiles には、 AWS IoT Greengrass コンテナイメージを構築するためのソースコードが含まれています。

 AWS IoT Greengrass コンテナイメージを構築する前に、インストールする AWS IoT Greengrass Core ソフトウェアのバージョンを選択するように Dockerfile を設定する必要があります。また、環境変数を設定することで、インストール時のリソースのプロビジョニング方法を選択したり、他のインストールオプションをカスタマイズすることもできます。このセクションでは、Dockerfile AWS IoT Greengrass から Docker イメージを設定および構築する方法について説明します。



## Dockerfile パッケージをダウンロードする
<a name="download-dockerfile-package"></a>

Dockerfile AWS IoT Greengrass パッケージは GitHub からダウンロードできます。

[AWS Greengrass Docker リポジトリ](https://github.com/aws-greengrass/aws-greengrass-docker)

パッケージをダウンロードしたら、コンテンツをコンピュータ上の `download-directory/aws-greengrass-docker-nucleus-version` フォルダに抽出します。Dockerfile は古いバージョンの Greengrass を使用しています。必要なバージョンの Greengrass を使用するようにファイルを更新する必要があります。

## AWS IoT Greengrass Core ソフトウェアバージョンを指定する
<a name="set-dockerfile-build-argument"></a>

Dockerfile で次のビルド引数を使用して、Docker イメージで使用する AWS IoT Greengrass Core AWS IoT Greengrass ソフトウェアのバージョンを指定します。デフォルトでは、Dockerfile は最新バージョンの AWS IoT Greengrass Core ソフトウェアを使用します。

`GREENGRASS_RELEASE_VERSION`  
 AWS IoT Greengrass Core ソフトウェアのバージョン。デフォルトでは、Dockerfile は Greengrass nucleus の利用可能な最新バージョンをダウンロードします。この値を、ダウンロードする nucleus のバージョンに設定します。

## 環境変数を設定する
<a name="set-dockerfile-environment-variables"></a>

環境変数を使用すると、Docker コンテナに AWS IoT Greengrass Core ソフトウェアをインストールする方法をカスタマイズできます。Docker AWS IoT Greengrass イメージの環境変数は、さまざまな方法で設定できます。
+ 同じ環境変数を使用して複数のイメージを作成するには、Dockerfile で環境変数を直接設定します。
+ `docker run` を使用してコンテナを開始するには、コマンドで環境変数を引数として渡すか、環境変数ファイルで環境変数を設定してから、そのファイルを引数として渡します。Docker で環境変数を設定するための詳細については、Docker ドキュメントの「[environment variables](https://docs.docker.com/engine/reference/commandline/run/#env)」を参照してください。
+ `docker-compose up` を使用してコンテナを開始するには、環境変数ファイルで環境変数を設定してから、そのファイルを引数として渡します。Compose で環境変数を設定するための詳細については、「[Docker ドキュメント](https://docs.docker.com/compose/environment-variables/)」を参照してください。

 AWS IoT Greengrass Docker イメージには、次の環境変数を設定できます。

**注記**  
Dockerfile の `TINI_KILL_PROCESS_GROUP` 変数は変更しないでください。この変数を使用すると、PIDs グループ内のすべての PID `SIGTERM`に転送できるため、Docker コンテナが停止したときに AWS IoT Greengrass Core ソフトウェアが正しくシャットダウンできます。

`GGC_ROOT_PATH`  
(オプション) AWS IoT Greengrass Core ソフトウェアのルートとして使用するコンテナ内のフォルダへのパス。  
デフォルト: `/greengrass/v2`

`PROVISION`  
(オプション) AWS IoT Greengrass Core が AWS リソースをプロビジョニングするかどうかを決定します。  
+ を指定すると`true`、 AWS IoT Greengrass Core ソフトウェアはコンテナイメージを AWS IoT モノとして登録し、Greengrass コアデバイスが必要とする AWS リソースをプロビジョニングします。 AWS IoT Greengrass Core ソフトウェアは、 AWS IoT モノ、 AWS IoT モノのグループ、IAM ロール、および AWS IoT ロールエイリアスをプロビジョニングします (オプション）。詳細については、「[自動リソースプロビジョニングを使用して Docker コンテナ AWS IoT Greengrass で を実行する](run-greengrass-docker-automatic-provisioning.md)」を参照してください。
+ を指定する場合は`false`、手動で作成した AWS リソースと証明書を使用するように指定する設定ファイルを AWS IoT Greengrass Core インストーラに提供する必要があります。詳細については、「[手動リソースプロビジョニングを使用して Docker コンテナ AWS IoT Greengrass で を実行する](run-greengrass-docker-manual-provisioning.md)」を参照してください。
デフォルト: `false`

`AWS_REGION`  
(オプション) AWS IoT Greengrass Core ソフトウェア AWS リージョン が必要な AWS リソースを取得または作成するために使用する 。  
デフォルト: `us-east-1`。

`THING_NAME`  
(オプション) このコアデバイスとして登録する AWS IoT モノの名前。この名前のモノが に存在しない場合 AWS アカウント、 AWS IoT Greengrass Core ソフトウェアによって作成されます。  
この引数を適用するには、`PROVISION=true` を指定する必要があります。  
デフォルト: `GreengrassV2IotThing_` とランダムな UUID。

`THING_GROUP_NAME`  
(オプション) このコアデバイスの AWS IoT を追加する AWS IoT モノのグループの名前 デプロイがこのモノのグループをターゲットにしている場合、このグループとそのグループの他のコアデバイスは、接続時にそのデプロイを受け取ります AWS IoT Greengrass。この名前のモノのグループが に存在しない場合 AWS アカウント、 AWS IoT Greengrass Core ソフトウェアによって作成されます。  
この引数を適用するには、`PROVISION=true` を指定する必要があります。

`TES_ROLE_NAME`  
(オプション) Greengrass コアデバイスが AWS サービスとやり取りできるようにする AWS 認証情報を取得するために使用する IAM ロールの名前。この名前のロールが に存在しない場合 AWS アカウント、 AWS IoT Greengrass Core ソフトウェアはそれを `GreengrassV2TokenExchangeRoleAccess`ポリシーで作成します。このロールは、コンポーネントのアーティファクトをホストする S3 バケットにはアクセスできません。そのため、コンポーネントを作成するときに、アーティファクトの S3 バケットとオブジェクトへのアクセス許可を追加する必要があります。詳細については、「[コアデバイスが AWS サービスとやり取りできるように認可する](device-service-role.md)」を参照してください。  
デフォルト: `GreengrassV2TokenExchangeRole`

`TES_ROLE_ALIAS_NAME`  
(オプション) Greengrass コアデバイスの AWS 認証情報を提供する AWS IoT IAM ロールを指すロールエイリアスの名前。この名前のロールエイリアスが に存在しない場合 AWS アカウント、 AWS IoT Greengrass Core ソフトウェアによって作成され、指定した IAM ロールにポイントされます。  
デフォルト: `GreengrassV2TokenExchangeRoleAlias`

`COMPONENT_DEFAULT_USER`  
(オプション) AWS IoT Greengrass Core ソフトウェアがコンポーネントの実行に使用するシステムユーザーとグループの名前または ID。ユーザーとグループは、コロンで区切って指定します。グループはオプションです。たとえば、**ggc\$1user:ggc\$1group** や **ggc\$1user** と指定することができます。  
+ root として実行した場合、設定ファイルで定義したユーザーとグループがデフォルトとなります。設定ファイルでユーザーとグループが定義されていない場合、デフォルトは `ggc_user:ggc_group` になります。もし `ggc_user` または `ggc_group` が存在しない場合は、ソフトウェアが作成します。
+ ルート以外のユーザーとして を実行すると、 AWS IoT Greengrass Core ソフトウェアはそのユーザーを使用してコンポーネントを実行します。
+ グループを指定しない場合、 AWS IoT Greengrass Core ソフトウェアはシステムユーザーのプライマリグループを使用します。
詳細については、「[コンポーネントを実行するユーザーを設定する](configure-greengrass-core-v2.md#configure-component-user)」を参照してください。

`DEPLOY_DEV_TOOLS`  
[Greengrass CLI コンポーネント](greengrass-cli-component.md)をコンテナイメージにダウンロードし、デプロイするかどうかを定義します。Greengrass CLI を使用して、コンポーネントをローカルで開発およびデバッグすることができます。  
 <a name="local-dev-tools-production-environment-warning"></a>このコンポーネントは、本番環境ではなく、開発環境でのみで使用することをお勧めします。このコンポーネントは、通常、本番環境では必要とされない情報や操作へのアクセスを提供します。このコンポーネントを必要なコアデバイスにのみデプロイして、最小特権の原則に従います。
デフォルト: `false`

`INIT_CONFIG`  
(オプション) AWS IoT Greengrass Core ソフトウェアのインストールに使用する設定ファイルへのパス。このオプションを使用して、特定の nucleus 設定で新しい Greengrass コアデバイスをセットアップしたり、手動でプロビジョニングされたリソースを指定したりできます。設定ファイルは、この引数で指定したパスにマウントする必要があります。

`TRUSTED_PLUGIN`  
この機能は、[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)の v2.4.0 以降に利用できます。  
(オプション) 信頼されたプラグインとして読み込む JAR ファイルへのパス。[フリートプロビジョニング](fleet-provisioning.md)や[カスタムプロビジョニング](custom-provisioning.md)でインストールする場合など、プロビジョニングプラグインの JAR ファイルを提供する場合にこのオプションを使用します。

`THING_POLICY_NAME`  
この機能は、[Greengrass nucleus コンポーネント](greengrass-nucleus-component.md)の v2.4.0 以降に利用できます。  
(オプション) このコアデバイスの AWS IoT モノ証明書にアタッチする AWS IoT ポリシーの名前。この名前の AWS IoT ポリシーが AWS IoT Greengrass Core ソフトウェアに存在しない場合は AWS アカウント 、作成します。  
この引数を適用するには、`PROVISION=true` を指定する必要があります。  
 AWS IoT Greengrass Core ソフトウェアは、デフォルトで許可 AWS IoT ポリシーを作成します。このポリシーの範囲を絞り込むか、ユースケースに応じた権限に制限するカスタムポリシーを作成することができます。詳細については、「[AWS IoT Greengrass V2 コアデバイスの最小 AWS IoT ポリシー](device-auth.md#greengrass-core-minimal-iot-policy)」を参照してください。

## インストールする依存関係を指定する
<a name="dockerfile-run-instruction"></a>

Dockerfile の RUN AWS IoT Greengrass 命令は、 AWS IoT Greengrass Core ソフトウェアインストーラを実行するコンテナ環境を準備します。Docker コンテナで AWS IoT Greengrass Core ソフトウェアのインストーラを実行する前に、インストールされる依存関係をカスタマイズできます。

## AWS IoT Greengrass イメージの構築
<a name="build-greengrass-docker-image"></a>

 AWS IoT Greengrass Dockerfile を使用して AWS IoT Greengrass コンテナイメージを構築します。Docker CLI または Docker Compose CLI を使用してイメージを構築し、コンテナを開始することができます。また、Docker CLI を使用してイメージを構築し、その後 Docker Compose を使用してそのイメージからコンテナを開始することもできます。

------
#### [ Docker ]

1. ホストマシンで次のコマンドを実行し、設定した Dockerfile が含まれるディレクトリに切り替えます。

   ```
   cd download-directory/aws-greengrass-docker-nucleus-version
   ```

1. 次のコマンドを実行して、Dockerfile から AWS IoT Greengrass コンテナイメージを構築します。

   ```
   sudo docker build -t "platform/aws-iot-greengrass:nucleus-version" ./
   ```

------
#### [ Docker Compose ]

1. ホストマシンで次のコマンドを実行し、Dockerfile ファイルと Compose ファイルが含まれてるディレクトリに切り替えます。

   ```
   cd download-directory/aws-greengrass-docker-nucleus-version
   ```

1. 次のコマンドを実行して、Compose ファイルを使用して AWS IoT Greengrass コンテナイメージを構築します。

   ```
   docker-compose -f docker-compose.yml build
   ```

------

 AWS IoT Greengrass コンテナイメージが正常に作成されました。Docker イメージには AWS IoT Greengrass Core ソフトウェアがインストールされています。Core AWS IoT Greengrass ソフトウェアを Docker コンテナで実行できるようになりました。