Docker コンテナで AWS IoT Greengrass コアソフトウェアを実行する - AWS IoT Greengrass

Docker コンテナで AWS IoT Greengrass コアソフトウェアを実行する

AWS IoT Greengrass は Docker コンテナで実行するように設定できます。Docker は、Linux コンテナに基づくアプリケーションの構築、実行、テスト、およびデプロイを行うためのツールを提供するプラットフォームです。AWS IoT Greengrass Docker イメージを実行する際、AWS 認証情報を Docker コンテナに提供し、AWS IoT Greengrass コアソフトウェアインストーラが Greengrass コアデバイスの動作に必要な AWS リソースを自動的にプロビジョニングするかどうかを選択できます。AWS 認証情報を提供しない場合は、AWS リソースを手動でプロビジョニングし、Docker コンテナで AWS IoT Greengrass コアソフトウェアを実行できます。

サポートされているプラットフォームと要件

ホストコンピュータは、Docker コンテナ内に AWS IoT Greengrass コアソフトウェアをインストールして実行するために、次の最小要件を満たしている必要があります。

  • インターネットに接続された Linux ベースのオペレーティングシステム。

  • Docker Engine バージョン 18.09 以降。

  • (オプション) Docker Compose バージョン 1.22 以降。Docker Compose は、Docker Compose CLI を使用して Docker イメージを実行する場合のみ必要です。

Docker コンテナ内で Lambda 関数コンポーネントを実行するには、追加の要件を満たすようにコンテナを構成する必要があります。詳細については、「Lambda 関数の要件」を参照してください。

プロセスモードでコンポーネントを実行する

AWS IoT Greengrass は、AWS IoT Greengrass Docker コンテナ内の分離されたランタイム環境での Lambda 関数または AWS が提供するコンポーネントの実行をサポートしていません。これらのコンポーネントは、分離せずにプロセスモードで実行する必要があります。

Lambda 関数コンポーネントを構成するときは、分離モードを [No container] (コンテナなし) に設定します。詳細については、「AWS Lambda 関数を実行する」を参照してください。

次の AWS が提供するいずれかのコンポーネントをデプロイする場合,各コンポーネントの設定を更新して containerMode パラメータを NoContainer にします。設定の更新の詳細については、「コンポーネント設定の更新」を参照してください。

AWS IoT Greengrass Docker ソフトウェアダウンロード

AWS IoT Greengrass は、Dockerコンテナで AWS IoT Greengrass Core コアソフトウェアを簡単に実行できるようにする次の Dockerfile および Docker イメージを提供します。

Dockerfile

AWS IoT Greengrass は、Amazon Linux 2 (x86_64) のベースイメージに AWS IoT Greengrass コアソフトウェアと依存関係をインストールしたコンテナイメージを構築するための Dockerfile を提供します。異なるプラットフォームアーキテクチャで、Dockerfile のベースイメージを変更して AWS IoT Greengrass を実行することができます。

Dockerfile パッケージを、GitHub からダウンロードします。

Dockerfile から AWS IoT Greengrass コンテナイメージを構築する方法については、「Dockerfile から AWS IoT Greengrass コンテナイメージを構築する」を参照してください。

Docker イメージ

AWS IoT Greengrass は Amazon Linux 2 (x86_64) のベースイメージに AWS IoT Greengrass コアソフトウェアと依存関係がインストールされた Docker イメージ を提供します。別のプラットフォームアーキテクチャの Docker で AWS IoT Greengrass を実行するには、Dockerfile を使用してそのプラットフォームのコンテナイメージを構築します。

構築済みイメージは、Docker Hub または Amazon Elastic Container Registry(Amazon ECR) からダウンロードできます。

Docker Hub または Amazon ECR から AWS IoT Greengrass Docker イメージをプルするには、次のコマンドを実行します。

Docker Hub
docker pull amazon/aws-iot-greengrass:tag
Amazon ECR
docker pull public.ecr.aws/q3k3q7c1/aws-iot-greengrass-v2:tag

タグ 内のバージョンは、Amazon Linux 2 のベースイメージにインストールされている AWS IoT Greengrass コアソフトウェアと依存関係のバージョンを表します。利用可能なすべてのイメージのタグを見つけるには、Docker Hubの [Tags] (タグ) ページまたは Amazon ECR の [Image tags] (イメージタグ) ページを確認してください。

AWSリソースをプロビジョニングする方法を選択する

AWS IoT Greengrass コアソフトウェアを Docker コンテナにインストールする際、Greengrass コアデバイスの動作に必要な AWS リソースを自動的にプロビジョニングするか、手動でプロビジョニングするリソースを使用するかを選択できます。

  • 自動リソースプロビジョニング - インストーラは、AWS IoT Greengrass コンテナイメージを初めて実行するときに、AWS IoT モノ、AWS IoT モノグループ、IAM ロール、および AWS IoT ロールエイリアスをプロビジョニングします。インストーラは、ローカル開発ツールをコアデバイスにデプロイすることもできるため、デバイスを使用してカスタムソフトウェアコンポーネントを開発とテストできます。これらのリソースを自動的にプロビジョニングするには、Docker イメージに環境変数として AWS 認証情報を提供する必要があります。

    自動プロビジョニングを使用するには、Docker 環境変数 PROVISION=true を設定し、認証ファイルをマウントして、AWS 認証情報をコンテナに提供する必要があります。

  • 手動のリソースのプロビジョニング — コンテナに AWS 認証情報を提供しない場合は、AWS IoT Greengrass コンテナイメージを実行する前に、AWS リソースを手動でプロビジョニングできます。これらのリソースに関する情報を Docker コンテナ内の AWS IoT Greengrass コアソフトウェアインストーラに提供するための設定ファイルを作成する必要があります。

    手動プロビジョニングを使用するには、Docker 環境変数 PROVISION=false を設定する必要があります。手動プロビジョニングがデフォルトのオプションです。

詳細については、「Dockerfile から AWS IoT Greengrass コンテナイメージを構築する」を参照してください。