Docker コンテナでの AWS IoT Greengrass のトラブルシューティング - AWS IoT Greengrass

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

Docker コンテナでの AWS IoT Greengrass のトラブルシューティング

以下の情報は、Docker コンテナで AWS IoT Greengrass を実行する際に生じる問題をトラブルシューティングし、Docker コンテナ内の AWS IoT Greengrass に関する問題をデバッグするために役立ちます。

Docker コンテナを実行する際に生じる問題のトラブルシューティング

以下の情報は、Docker コンテナでの AWS IoT Greengrass の実行に関する問題のトラブルシューティングに役立ちます。

エラー: Cannot perform an interactive login from a non TTY device (TTY 以外のデバイスから対話型ログインを実行できません)

aws ecr get-login-password コマンドを実行すると、このエラーが発生することがあります。最新の AWS CLI バージョン 2 またはバージョン 1 がインストールされているか確認してください。AWS CLI バージョン 2 を使用することをお勧めします。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLI のインストール」を参照してください。

エラー: 不明なオプション: -no-include-email

aws ecr get-login コマンドを実行すると、このエラーが発生することがあります。最新の AWS CLI バージョンがインストールされていることを確認します (例えば、pip install awscli --upgrade --user を実行します)。詳細については、「AWS Command Line Interface ユーザーガイド」の「Microsoft Windows に AWS Command Line Interface をインストールする」を参照してください。

エラー: A firewall is blocking file Sharing between windows and the containers. (ファイアウォールが、ウィンドウとコンテナー間のファイル共有をブロックしています。)

Windows コンピュータで Docker を実行すると、このエラーまたは Firewall Detected メッセージが表示されることがあります。このエラーは、仮想プライベートネットワーク (VPN) にサインインしているときにも発生する場合があり、ネットワーク設定が原因で共有ドライブをマウントできないことがあります。このような場合は、VPN をオフにし、Docker コンテナを再実行します。

エラー: GetAuthorizationToken オペレーションを呼び出すときにエラー (AccessDeniedException) が発生しました: ユーザー: arn:aws:iam::account-id :user/<user-name> は実行する権限がありません: ecr:GetAuthorizationToken on resource: *

このエラーは、Amazon ECR リポジトリにアクセスするための十分な権限がない状態で aws ecr get-login-password コマンドを実行したときに表示されることがあります。詳細については、「Amazon ECR ユーザーガイド」の「Amazon ECR リポジトリポリシーの例」および「1 つの Amazon ECR リポジトリにアクセスする」を参照してください。

エラー: You have reached your pull rate limit (プルレート制限に達しました)

Docker Hub は、匿名ユーザーと無料の Docker Hub ユーザーが行うことができるプルリクエストの数を制限します。匿名ユーザーまたは無料のユーザーのプルリクエストの上限に達すると、次のいずれかのエラーが表示されます。

ERROR: toomanyrequests: Too Many Requests.
You have reached your pull rate limit.

これらのエラーを解決するには、別のプルリクエストを試行する前に数時間を置いてください。多数のプルリクエストを継続的に送信する予定がある場合は、Docker Hub ウェブサイトにある制限数に関する情報と、Docker アカウントの認証とアップグレードのオプションに関する情報を参照してください。

Docker コンテナでの AWS IoT Greengrass のデバッグ

Docker コンテナの問題をデバッグするには、Greengrass ランタイムログを維持するか、Docker コンテナにインタラクティブシェルをアタッチすることができます。

Docker コンテナの外部で Greengrass ログを永続化する

AWS IoT Greengrass コンテナを停止した後、次の docker cp コマンドを使用して、Greengrass ログを Docker コンテナから一時ログディレクトリにコピーすることができます。

docker cp container-id:/greengrass/v2/logs /tmp/logs

コンテナが終了または削除された後にもログを永続させるには、/greengrass/v2/logs ディレクトリをバインドマウントした後に、AWS IoT Greengrass Docker コンテナを実行する必要があります。

/greengrass/v2/logs ディレクトリをバインドマウントするには、新しい AWS IoT Greengrass Docker コンテナを実行するときに次のいずれかを実行します。

  • docker run コマンドに -v /tmp/logs:/greengrass/v2/logs:ro を含めます。

    設定ファイル内の volumes ブロックを編集して、docker-compose up コマンドを実行する前に次の行を含めます。

    volumes: - /tmp/logs:/greengrass/v2/logs:ro

これで、Docker コンテナ内で AWS IoT Greengrass が実行されている間、ホストの /tmp/logs でログを確認することができます。

Greengrass Docker コンテナを実行するための情報については、「手動プロビジョニングを使用して Docker で AWS IoT Greengrass を実行する」および「自動プロビジョニングを使用して Docker で AWS IoT Greengrass を実行する」を参照してください。

インタラクティブシェルを Docker コンテナにアタッチする

Docker コンテナ内でコマンドを実行するにあたり docker exec を使用する場合、これらのコマンドは Docker ログにキャプチャされません。コマンドを Docker ログに記録すると、Greengrass Docker コンテナの状態を調査する際に役立ちます。次のいずれかを行います:

  • 別のターミナルで次のコマンドを実行して、ターミナルの標準入力、出力、およびエラーを実行中のコンテナにアタッチします。これにより、現在のターミナルから Docker コンテナを表示して、制御することができます。

    docker attach container-id
  • 別のターミナルで次のコマンドを実行します。これにより、コンテナがアタッチされていない場合でも、コマンドをインタラクティブモードで実行できるようになります。

    docker exec -it container-id sh -c "command > /proc/1/fd/1"

一般的な AWS IoT Greengrass のトラブルシューティングヘルプについては、「トラブルシューティング AWS IoT Greengrass V2」を参照してください。