翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
自動リソースプロビジョニングを使用して 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 ユーザーガイド」の「[Managing access keys for IAM users] (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 =
AKIAIOSFODNN7EXAMPLE
aws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_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/v2
region
PROVISION=true THING_NAME=MyGreengrassCore
THING_GROUP_NAME=MyGreengrassCoreGroup
TES_ROLE_NAME=GreengrassV2TokenExchangeRole
TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias
COMPONENT_DEFAULT_USER=ggc_user:ggc_group次に、以下の値を置き換えます。
-
。 インストールに使用する Greengrass ルートフォルダ。/greengrass/v2
GGC_ROOT
環境変数を使用して、この値を設定します。 -
リージョン
。リソースを作成した AWS リージョン 。 -
MyGreengrassCore
。AWS IoT モノの名前。モノが存在しない場合、インストーラによって作成されます。インストーラは、証明書をダウンロードして AWS IoT モノとして認証します。 -
MyGreengrassCoreGroup
。AWS IoT モノのグループの名前。モノグループが存在しない場合、インストーラはそのグループを作成してモノを追加します。モノグループが存在してアクティブなデプロイがある場合、コアデバイスはデプロイで指定されたソフトウェアをダウンロードして実行します。 -
GreengrassV2TokenExchangeRole
。Greengrass コアデバイスが一時的な AWS 認証情報を取得できるようにする IAM トークン交換ロールの名前に置き換えます。ロールが存在しない場合、インストーラはロールを作成し、GreengrassV2TokenExchangeRole
Access という名前のポリシーを作成してアタッチします。詳細については、「コアデバイスが 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 -it
container-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 cp
container-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 のトラブルシューティング」を参照してください。