翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
自動リソースプロビジョニングを使用して Docker コンテナで AWS IoT Greengrass を実行する
このチュートリアルでは、自動的にプロビジョニングされた AWS リソースとローカル開発ツールを使用して Docker コンテナに AWS IoT Greengrass Core ソフトウェアをインストールして実行する方法を示します。この開発環境を使用して、Docker コンテナの AWS IoT Greengrass 機能を調べることができます。ソフトウェアには、これらのリソースをプロビジョニングし、ローカル開発ツールをデプロイするための AWS 認証情報が必要です。
コンテナに AWS 認証情報を提供できない場合、コアデバイスの動作に必要な AWS リソースをプロビジョニングできます。開発ツールをコアデバイスにデプロイして、開発デバイスとして使用することもできます。これにより、コンテナの実行時にデバイスに付与するアクセス許可を減らすことができます。詳細については、「手動リソースプロビジョニングを使用して Docker コンテナ AWS IoT Greengrass で を実行する」を参照してください。
前提条件
このチュートリアルを完了するには、以下が必要です。
-
AWS アカウント。アカウントをお持ちでない場合は、「のセットアップ AWS アカウント」を参照してください。
-
Greengrass コアデバイスの AWS IoT および IAM リソースをプロビジョニングする権限を持つ AWS IAM ユーザー。AWS IoT Greengrass Core ソフトウェアインストーラは、お客様の AWS 認証情報を使用して、これらのリソースを自動的にプロビジョニングします。リソースを自動的にプロビジョニングする最小の IAM ポリシーの詳細については、「インストーラがリソースをプロビジョニングするための最小限の IAM ポリシー」を参照してください。
-
AWS IoT Greengrass Docker イメージ。AWS IoT Greengrass Dockerfile からイメージを構築できます。
-
Docker コンテナを実行するホストコンピュータは、以下の要件を満たしている必要があります。
-
インターネットに接続された Linux ベースのオペレーティングシステム。
-
Docker Engine
バージョン 18.09 以降。 -
(オプション) Docker Compose
バージョン 1.22 以降。Docker Compose は、Docker Compose CLI を使用して Docker イメージを実行する場合のみ必要です。
-
AWS 認証情報を設定する
このステップでは、AWS セキュリティ認証情報を含む認証情報ファイルをホストコンピュータに作成します。AWS IoT Greengrass Dockerイメージを実行するときは、この認証情報ファイルを含むフォルダをDocker コンテナ内の /root/.aws/ にマウントする必要があります。AWS IoT Greengrass インストーラは、これらの認証情報を使用して、お客様の AWS アカウント のリソースをプロビジョニングします。インストーラがリソースを自動的にプロビジョニングするために必要な最小 IAM ポリシーについては、「インストーラがリソースをプロビジョニングするための最小限の IAM ポリシー」を参照してください。
-
次のいずれかを取得します。
-
IAM ユーザーの長期的な認証情報。長期認証情報を取得する方法については、「IAM ユーザーガイド」の「IAM ユーザーのアクセスキーを管理します。」を参照してください。
-
(推奨) IAM ロールの一時的な認証情報。一時的な認証情報を取得する方法については、「IAM ユーザーガイド」の「AWS CLI で一時的なセキュリティ認証情報を使用する」を参照してください。
-
-
認証情報ファイルを配置するフォルダを作成します。
mkdir ./greengrass-v2-credentials -
テキストエディタを使用して、
./greengrass-v2-credentialsフォルダにcredentialsという名前の設定ファイルを作成します。例えば、次のコマンドを実行し、GNU nano を使用して
credentialsファイルを作成できます。nano ./greengrass-v2-credentials/credentials -
AWS 認証情報を次の形式で
credentialsファイルに追加します。[default] aws_access_key_id =AKIAIOSFODNN7EXAMPLEaws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEYaws_session_token =AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk一時的な認証情報の場合のみ
aws_session_tokenを含めます。
重要
AWS IoT Greengrass コンテナを起動した後、ホストコンピュータから認証情報ファイルを削除します。認証情報ファイルを削除しない場合は、AWS 認証情報はコンテナ内にマウントされたままになります。詳細については、「コンテナで AWS IoT Greengrass Core ソフトウェアを実行する」を参照してください。
環境ファイルを作成する
このチュートリアルでは、環境ファイルを使用して、Docker コンテナ内の AWS IoT Greengrass Core ソフトウェアインストーラに渡される環境変数を設定します。また、docker run コマンドで -e または --env 引数docker-compose.yml ファイルの environment ブロック
-
テキストエディタを使用して、
.envという名前の環境ファイルを作成します。例えば、Linux ベースのシステムでは、次のコマンドを実行し、GNU nano を使用して現在のディレクトリに
.envを作成できます。nano .env -
次の内容をファイルにコピーします。
GGC_ROOT_PATH=AWS_REGION=/greengrass/v2regionPROVISION=true THING_NAME=MyGreengrassCoreTHING_GROUP_NAME=MyGreengrassCoreGroupTES_ROLE_NAME=GreengrassV2TokenExchangeRoleTES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAliasCOMPONENT_DEFAULT_USER=ggc_user:ggc_group次に、以下の値を置き換えます。
-
。インストールに使用する Greengrass ルートフォルダ。/greengrass/v2GGC_ROOT環境変数を使用して、この値を設定します。 -
リージョン。リソースを作成した AWS リージョン 。 -
MyGreengrassCore。AWS IoT モノの名前。モノが存在しない場合、インストーラによって作成されます。インストーラは、証明書をダウンロードして AWS IoT モノとして認証します。 -
MyGreengrassCoreGroup。AWS IoT モノのグループの名前。モノグループが存在しない場合、インストーラはそのグループを作成してモノを追加します。モノグループが存在してアクティブなデプロイがある場合、コアデバイスはデプロイで指定されたソフトウェアをダウンロードして実行します。 -
GreengrassV2TokenExchangeRole。Greengrass コアデバイスが一時的な AWS 認証情報を取得できるようにする IAM トークン交換ロールの名前に置き換えます。ロールが存在しない場合、インストーラがロールを作成し、GreengrassV2TokenExchangeRoleという名前のポリシーを作成してアタッチします。詳細については、「コアデバイスが AWS サービスとやり取りできるように承認する」を参照してください。 -
GreengrassCoreTokenExchangeRoleAlias。トークン交換ロールエイリアス。ロールエイリアスが存在しない場合、インストーラがロールエイリアスを作成し、指定した IAM トークン交換ロールを指します。詳細については、以下を参照してください。
注記
DEPLOY_DEV_TOOLS環境変数をtrueに設定して、[Greengrass CLI component] (Greengrass CLI コンポーネント) をデプロイできます。これにより、Docker コンテナ内でカスタムコンポーネントを開発できます。このコンポーネントは、本番環境ではなく、開発環境でのみで使用することをお勧めします。このコンポーネントは、通常、本番環境では必要とされない情報や操作へのアクセスを提供します。このコンポーネントを必要なコアデバイスにのみデプロイして、最小特権の原則に従います。 -
コンテナで AWS IoT Greengrass Core ソフトウェアを実行する
このチュートリアルでは、Docker コンテナでビルドした Docker イメージを起動する方法を説明します。Docker CLI または Docker Compose CLI を使用して、Docker コンテナ内の AWS IoT Greengrass Core ソフトウェアイメージを実行できます。
次のステップ
現在、Docker コンテナで AWS IoT Greengrass Core ソフトウェアが実行されています。次のコマンドを実行して、現在実行中のコンテナのコンテナ ID を取得します。
docker ps
次に、次のコマンドを実行してコンテナにアクセスし、コンテナ内で実行されている AWS IoT Greengrass Core ソフトウェアを検索できます。
docker exec -itcontainer-id/bin/bash
単純なコンポーネントの作成については、「チュートリアル: AWS IoT Greengrass V2 の開始方法」の「ステップ 4: デバイス上でコンポーネントを開発およびテストする」を参照してください。
注記
docker exec を使用して Docker コンテナ内でコマンドを実行すると、これらのコマンドは Docker ログに記録されません。Docker ログにコマンドを記録するには、Docker コンテナに対話型シェルをアタッチします。詳細については、「インタラクティブシェルを Docker コンテナにアタッチする」を参照してください。
AWS IoT Greengrass Core ログファイルは greengrass.log と呼ばれ、 にあります。コンポーネントログファイルも同じディレクトリにあります。Greengrass ログをホストの一時ディレクトリにコピーするには、次のコマンドを実行します。/logs/greengrass/v2
docker cpcontainer-id:/greengrass/v2/logs/tmp/logs
コンテナの終了後、または削除後もログを保持する場合は、Greengrass ディレクトリ全体をマウントするのではなく、 ディレクトリのみをホストの一時ログディレクトリにバインドマウントすることをお勧めします。詳細については、「Docker コンテナの外部で Greengrass ログを永続化する」を参照してください。/logs/greengrass/v2
実行中の AWS IoT Greengrass Docker コンテナを停止するには、docker
stop または docker-compose -f docker-compose.yml stop を実行します。このアクションは、SIGTERM を Greengrass プロセスに送信し、コンテナで開始されたすべての関連プロセスをシャットダウンします。Docker コンテナは、プロセス PID 1 として docker-init の実行可能ファイルで初期化されます。これは、残っているゾンビプロセスを削除するのに役立ちます。詳細については、Docker ドキュメントの「Specify an init process
Docker コンテナで AWS IoT Greengrass を実行する際の問題のトラブルシューティングについては、「Docker コンテナでの AWS IoT Greengrass のトラブルシューティング」を参照してください。