翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
自動リソースプロビジョニングを使用して 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 IAMコアデバイスの AWS IoT および 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 を使用して Docker イメージCLIを実行する場合にのみ必要です。
-
AWS 認証情報を設定する
このステップでは、 AWS
セキュリティ認証情報を含む認証情報ファイルをホストコンピュータに作成します。 AWS IoT Greengrass Docker イメージを実行するときは、この認証情報ファイルを含むフォルダを Docker コンテナ/root/.aws/
の にマウントする必要があります。 AWS IoT Greengrass インストーラは、これらの認証情報を使用して にリソースをプロビジョニングします AWS アカウント。インストーラがリソースを自動的にプロビジョニングするために必要な最小限のIAMポリシーについては、「」を参照してくださいインストーラがリソースをプロビジョニングするための最小限の IAM ポリシー。
-
次のいずれかを取得します。
-
IAM ユーザーの長期認証情報。長期認証情報を取得する方法については、「 IAMユーザーガイド」のIAM「ユーザーのアクセスキーの管理」を参照してください。
-
(推奨) IAMロールの一時的な認証情報。一時的な認証情報を取得する方法については、「 ユーザーガイド」の「 での一時的なセキュリティ認証情報 AWS CLIの使用IAM」を参照してください。
-
-
認証情報ファイルを配置するフォルダを作成します。
mkdir ./greengrass-v2-credentials
-
テキストエディタを使用して、
./greengrass-v2-credentials
フォルダにcredentials
という名前の設定ファイルを作成します。例えば、次のコマンドを実行して nano を使用して
credentials
ファイルGNUを作成できます。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
環境変数を使用して、この値を設定します。 -
region
。 リソースを AWS リージョン 作成した 。 -
MyGreengrassCore
。 AWS IoT モノの名前。モノが存在しない場合、インストーラによって作成されます。インストーラは証明書をダウンロードして、 AWS IoT モノとして認証します。 -
MyGreengrassCoreGroup
。 AWS IoT モノのグループの名前。モノグループが存在しない場合、インストーラはそのグループを作成してモノを追加します。モノグループが存在してアクティブなデプロイがある場合、コアデバイスはデプロイで指定されたソフトウェアをダウンロードして実行します。 -
GreengrassV2TokenExchangeRole
。 を、Greengrass コアデバイスが一時的な AWS 認証情報を取得できるようにするIAMトークン交換ロールの名前に置き換えます。ロールが存在しない場合、インストーラはロールを作成し、 という名前のポリシーを作成してアタッチします。GreengrassV2TokenExchangeRole
アクセス。詳細については、「コアデバイスが AWS サービスとやり取りできるように認証する」を参照してください。 -
GreengrassCoreTokenExchangeRoleAlias
。 トークン交換ロールのエイリアス。ロールエイリアスが存在しない場合、インストーラはそれを作成し、指定したIAMトークン交換ロールをポイントします。詳細については、以下を参照してください。
注記
DEPLOY_DEV_TOOLS
環境変数をtrue
に設定して Greengrass CLIコンポーネント をデプロイできます。これにより、Docker コンテナ内でカスタムコンポーネントを開発できます。このコンポーネントは、本番環境ではなく、開発環境でのみで使用することをお勧めします。このコンポーネントは、通常、本番環境では必要とされない情報や操作へのアクセスを提供します。このコンポーネントを必要なコアデバイスにのみデプロイして、最小特権の原則に従います。 -
コンテナで AWS IoT Greengrass Core ソフトウェアを実行する
このチュートリアルでは、Docker コンテナでビルドした Docker イメージを起動する方法を説明します。Docker CLIまたは Docker Compose を使用してCLI、Docker コンテナで AWS IoT Greengrass Core ソフトウェアイメージを実行できます。
次のステップ
AWS IoT Greengrass Core ソフトウェアが Docker コンテナで実行されています。次のコマンドを実行して、現在実行中のコンテナのコンテナ 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 コンテナは、プロセス PID1 docker-init
として実行可能ファイルで初期化されるため、残りのゾンビプロセスを削除できます。詳細については、Docker ドキュメントの「Specify an init process
Docker コンテナで AWS IoT Greengrass を実行する際の問題のトラブルシューティングについては、「Docker コンテナでの AWS IoT Greengrass のトラブルシューティング」を参照してください。