Dockerfile から AWS IoT Greengrass コンテナイメージを構築する - AWS IoT Greengrass

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

Dockerfile から AWS IoT Greengrass コンテナイメージを構築する

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

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

Dockerfile パッケージをダウンロードする

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

AWS Greengrass Docker リポジトリ

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

AWS IoT Greengrass Core ソフトウェアのバージョンを指定する

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

GREENGRASS_RELEASE_VERSION

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

環境変数を設定する

環境変数を使用すると、AWS IoT Greengrass Core ソフトウェアが Docker コンテナにインストールされる方法をカスタマイズできます。AWS IoT Greengrass Docker イメージの環境変数は、さまざまな方法で設定できます。

  • 同じ環境変数を使用して複数のイメージを作成するには、Dockerfile で環境変数を直接設定します。

  • docker run を使用してコンテナを開始するには、コマンドで環境変数を引数として渡すか、環境変数ファイルで環境変数を設定してから、そのファイルを引数として渡します。Docker で環境変数を設定するための詳細については、Docker ドキュメントの「environment variables」を参照してください。

  • docker-compose up を使用してコンテナを開始するには、環境変数ファイルで環境変数を設定してから、そのファイルを引数として渡します。Compose で環境変数を設定するための詳細については、「Docker ドキュメント」を参照してください。

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

注記

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

GGC_ROOT_PATH

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

デフォルト: /greengrass/v2

PROVISION

(オプション) AWS IoT Greengrass Core が AWS リソースをプロビジョニングするかどうかを決定します。

デフォルト: 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 サービスとやり取りできるように認証する」を参照してください。

デフォルト: GreengrassV2TokenExchangeRole

TES_ROLE_ALIAS_NAME

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

デフォルト: GreengrassV2TokenExchangeRoleAlias

COMPONENT_DEFAULT_USER

(オプション) AWS IoT Greengrass Core ソフトウェアがコンポーネントを実行するために使用するシステムユーザーとグループの名前または ID。ユーザーとグループは、コロンで区切って指定します。グループはオプションです。たとえば、ggc_user:ggc_groupggc_user と指定することができます。

  • root として実行した場合、設定ファイルで定義したユーザーとグループがデフォルトとなります。設定ファイルでユーザーとグループが定義されていない場合、デフォルトは ggc_user:ggc_group になります。もし ggc_user または ggc_group が存在しない場合は、ソフトウェアが作成します。

  • 非ルートユーザーとして実行すると、AWS IoT Greengrass Core ソフトウェアはそのユーザーとしてコンポーネントを実行します。

  • グループを指定しなかった場合、AWS IoT Greengrass Core ソフトウェアは、システムユーザーのプライマリグループを使用します。

詳細については、「コンポーネントを実行するユーザーを設定する」を参照してください。

DEPLOY_DEV_TOOLS

Greengrass CLI コンポーネントをコンテナイメージにダウンロードし、デプロイするかどうかを定義します。Greengrass CLI を使用して、コンポーネントをローカルで開発およびデバッグすることができます。

重要

このコンポーネントは、本番環境ではなく、開発環境でのみで使用することをお勧めします。このコンポーネントは、通常、本番環境では必要とされない情報や操作へのアクセスを提供します。このコンポーネントを必要なコアデバイスにのみデプロイして、最小特権の原則に従います。

デフォルト: false

INIT_CONFIG

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

TRUSTED_PLUGIN

この機能は、Greengrass nucleus コンポーネントの v2.4.0 以降に利用できます。

(オプション) 信頼されたプラグインとして読み込む JAR ファイルへのパス。フリートプロビジョニングカスタムプロビジョニングでインストールする場合など、プロビジョニングプラグインの JAR ファイルを提供する場合にこのオプションを使用します。

THING_POLICY_NAME

この機能は、Greengrass nucleus コンポーネントの v2.4.0 以降に利用できます。

(オプション) このコアデバイスの AWS IoT モノ証明書にアタッチする AWS IoT ポリシーの名前。この名前の AWS IoT ポリシーが AWS アカウント に存在しない場合は、AWS IoT Greengrass Core ソフトウェアが作成します。

この引数を適用するには、PROVISION=true を指定する必要があります。

注記

AWS IoT Greengrass Core ソフトウェアでは、デフォルトで寛容な AWS IoT ポリシーが作成されます。このポリシーの範囲を絞り込むか、ユースケースに応じた権限に制限するカスタムポリシーを作成することができます。詳細については、「AWS IoT Greengrass V2 コアデバイス向けの最低限の AWS IoT ポリシー」を参照してください。

インストールする依存関係を指定する

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

AWS IoT Greengrass イメージを構築する

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
  2. 次のコマンドを実行して、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
  2. 次のコマンドを実行して、Compose ファイルを使用して AWS IoT Greengrass コンテナイメージを構築します。

    docker-compose -f docker-compose.yml build

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