翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トラブルシューティング AWS IoT Greengrass V2
このセクションのトラブルシューティング情報と解決策を参考にして、の問題の解決に役立ててください。 AWS IoT Greengrass Version 2
トピック
AWS IoT Greengrass コアソフトウェアとコンポーネントのログを表示します。
AWS IoT Greengrass Core ソフトウェアはログをローカルファイルシステムに書き込み、コアデバイスに関するリアルタイム情報を表示できます。ログにログを書き込むようにコアデバイスを設定することもできるので、コアデバイスをリモートでトラブルシューティングできます。 CloudWatch これらのログは、コンポーネント、デプロイ、およびコアデバイスの問題を特定するのに役立ちます。詳細については、「AWS IoT Greengrass ログのモニタリング」を参照してください。
AWS IoT Greengrass 中核となるソフトウェアの問題
AWS IoT Greengrass コアソフトウェアの問題をトラブルシューティングします。
トピック
- コアデバイスをセットアップできない
- AWS IoT Greengrass Core ソフトウェアをシステムサービスとして起動できない
- nucleus をシステムサービスとしてセットアップできない
- AWS IoT Coreに接続できない
- メモリ不足エラー
- Greengrass CLI をインストールできない
- User root is not allowed to execute
- com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
- Failed to map segment from shared object: operation not permitted
- Windows サービスのセットアップに失敗しました
- com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
- com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
- software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
- software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
- Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
- Operation aws.greengrass#<operation> is not supported by Greengrass
- java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
- java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
- Greengrass core device stuck on nucleus v2.12.3
コアデバイスをセットアップできない
AWS IoT Greengrass Core ソフトウェアのインストーラーが失敗し、コアデバイスをセットアップできない場合は、ソフトウェアをアンインストールしてやり直す必要がある場合があります。詳細については、「AWS IoT Greengrass Core ソフトウェアをアンインストールする」を参照してください。
AWS IoT Greengrass Core ソフトウェアをシステムサービスとして起動できない
AWS IoT Greengrass Core ソフトウェアが起動しない場合は、システムサービスログを確認して問題を特定してください。よくある問題の 1 つは、Java が PATH 環境変数 (Linux) または PATH システム変数 (Windows) で使用できない場合です。
nucleus をシステムサービスとしてセットアップできない
このエラーは、 AWS IoT Greengrass Core AWS IoT Greengrass ソフトウェアインストーラーがシステムサービスとして設定できない場合に表示されることがあります。Linux デバイスでは、このエラーは通常、コアデバイスにsystemd
次のいずれかを行います。
-
AWS IoT Greengrass Core ソフトウェアをシステムサービスとして設定して実行します。 AWS IoT Greengrassのすべての機能を使用するには、ソフトウェアをシステムサービスとして設定する必要があります。systemd
をインストール、または別の init システムを使用できます。詳細については、「Greengrass nucleus をシステムサービスとして設定する」を参照してください。 -
システムサービスなしで AWS IoT Greengrass Core ソフトウェアを実行する。インストーラが Greengrass ルートフォルダでセットアップしたローダースクリプトを使用して、ソフトウェアを実行できます。詳細については、「システムサービスを使用せずに AWS IoT Greengrass Core ソフトウェアを実行します。」を参照してください。
AWS IoT Coreに接続できない
このエラーは、 AWS IoT Greengrass AWS IoT Core コアソフトウェアが接続してデプロイジョブを取得できない場合などに表示されることがあります。以下の操作を実行します。
-
コアデバイスがインターネットに接続できることを確認し、 AWS IoT Core AWS IoT Core デバイスが接続するエンドポイントの詳細については、を参照してくださいAWS IoT Greengrass Core ソフトウェアを設定する。
-
コアデバイスの AWS IoT Thing が
iot:Connect
、、iot:Publish
iot:Receive
、iot:Subscribe
の権限を許可する証明書を使用していることを確認してください。 -
コアデバイスが [network proxy] (ネットワークプロキシ)を使用している場合、コアデバイスに [device role] (デバイスロール)があり、そのロールで
iot:Connect
、iot:Publish
、iot:Receive
、iot:Subscribe
のアクセス許可が付与されていることを確認してください。
メモリ不足エラー
このエラーは通常、デバイスに Java ヒープにオブジェクトを割り当てるだけの十分なメモリがない場合に発生します。メモリが制限されたデバイスでは、メモリ割り当てを制御するために最大ヒープサイズを指定する必要がある場合があります。詳細については、「JVM オプションを使用してメモリ割り当てを制御する」を参照してください。
Greengrass CLI をインストールできない
AWS IoT Greengrass Core --deploy-dev-tools
のインストールコマンドで引数を使用すると、次のコンソールメッセージが表示される場合があります。
Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to
これは、コアデバイスが既存のデプロイを持つモノのグループのメンバーであるため、Greengrass CLI コンポーネントがインストールされていない場合に発生します。このメッセージが表示された場合は、Greengrass CLI コンポーネント (aws.greengrass.Cli
) をデバイスに手動でデプロイして、Greengrass CLI をインストールできます。詳細については、「Greengrass をインストールする CLI」を参照してください。
User root is not allowed to execute
このエラーは、 AWS IoT Greengrass Core ソフトウェアを実行するユーザーが (通常root
) sudo
どのユーザーやグループでも実行する権限を持っていない場合に表示されることがあります。デフォルトの ggc_user
システムユーザーの場合、このエラーは次のようになります。
Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.
/etc/sudoers
ファイルで、他のグループとして sudo
を実行する権限がユーザーに与えられていることを確認してください。/etc/sudoers
のユーザーの権限は、次の例のようになります。
root ALL=(ALL:ALL) ALL
com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
このエラーは、コアデバイスがコンポーネントを実行しようとしたときに、Greengrass nucleus でコンポーネントの実行に使用するデフォルトのシステムユーザーが指定されていない場合に表示されることがあります。
この問題を解決するには、コンポーネントを実行するデフォルトのシステムユーザーを指定するように Greengrass nucleus を設定します。詳細については、「コンポーネントを実行するユーザーを設定する」および「デフォルトのコンポーネントユーザーを設定する」を参照してください。
Failed to map segment from shared object: operation not permitted
このエラーは、/tmp
noexec
フォルダーが権限付きでマウントされているために AWS IoT Greengrass Core ソフトウェアが起動できない場合に表示されることがあります。AWS Common Runtime (CRT) ライブラリ/tmp
フォルダを使用します。
次のいずれかを行います。
-
次のコマンドを実行して、
exec
アクセス許可で/tmp
フォルダを再マウントし、再試行します。sudo mount -o remount,exec /tmp
-
Greengrass nucleus v2.5.0 以降を実行している場合は、JVM オプションを設定して CRT ライブラリが使用するフォルダーを変更できます。 AWS
jvmOptions
パラメータは、デプロイメント内の Greengrass nucleus コンポーネント設定で指定することも、 AWS IoT Greengrass コアソフトウェアをインストールするときに指定することもできます。/path/to/use
を CRT ライブラリが使用できるフォルダーへのパスに置き換えます。 AWS{ "jvmOptions": "-Daws.crt.lib.dir=\"
/path/to/use
\"" }
Windows サービスのセットアップに失敗しました
Microsoft Windows 2016 AWS IoT Greengrass デバイスにコアソフトウェアをインストールすると、このエラーが表示されることがあります。 AWS IoT Greengrass Core ソフトウェアは Windows 2016 ではサポートされていません。サポートされているオペレーティングシステムの一覧については、を参照してくださいサポートされているプラットフォーム。
Windows 2016 を使用する必要がある場合は、次の操作を実行します。
-
ダウンロードした AWS IoT Greengrass Core インストールアーカイブを解凍します。
-
Greengrass
ディレクトリで、bin/greengrass.xml.template
ファイルを開きます。 -
</service>
タグの直前に、ファイルの末尾に<autoRefresh>
タグを追加します。</log> <autoRefresh>false</autoRefresh> </service>
com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
ルート認証局 (CA) ファイルなしで AWS IoT Greengrass Core ソフトウェアをインストールすると、このエラーが表示されることがあります。
2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
rootCaPath
パラメータがある有効なルート CA ファイルを、インストーラに与える設定ファイルに指定したことを確認します。詳細については、「AWS IoT Greengrass Core ソフトウェアをインストールします。」を参照してください。
com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
この警告メッセージは、 AWS IoT Core コアデバイスが接続して展開ジョブ通知を購読できない場合に表示されることがあります。以下の操作を実行します。
-
コアデバイスがインターネットに接続されていて、 AWS IoT 設定したデータエンドポイントにアクセスできることを確認してください。コアデバイスが使用するエンドポイントの詳細については、「プロキシまたはファイアウォールを介したデバイストラフィックを許可する」を参照してください。
-
Greengrass ログをチェックして、他の根本原因を明らかにする他のエラーがないか確認します。
software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
このエラーは、自動プロビジョニングで AWS IoT Greengrass Core ソフトウェアをインストールしたときに、 AWS インストーラーが無効なセッショントークンを使用する場合に表示されることがあります。以下の操作を実行します。
-
一時的なセキュリティ認証情報を使用する場合は、セッショントークンが正しいこと、および完全なセッショントークンをコピーして貼り付けていることを確認します。
-
長期的なセキュリティ認証情報を使用する場合は、以前に一時的な認証情報を使用した時点のセッショントークンがデバイスにないことを確認します。以下の操作を実行します。
-
次のコマンドを実行して、セッショントークンの環境変数の設定を解除します。
-
AWS 認証情報ファイル
~/.aws/credentials
、にセッショントークンが含まれているかどうかを確認しますaws_session_token
。もしそうなら、ファイルからその行を削除します。aws_session_token =
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
AWS IoT Greengrass AWS 認証情報を入力せずにコアソフトウェアをインストールすることもできます。詳細については、手動リソースプロビジョニングによる AWS IoT Greengrass Core ソフトウェアのインストールまたはAWS IoT フリートプロビジョニングを使用して AWS IoT Greengrass Core ソフトウェアをインストールするを参照してください。
software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
このエラーは、自動プロビジョニングで AWS IoT Greengrass Core ソフトウェアをインストールしたときに、 AWS インストーラーが必要な権限のない認証情報を使用している場合に表示されることがあります。必要なアクセス許可の詳細については、インストーラがリソースをプロビジョニングするための最小限の IAM ポリシー を参照してください。
認証情報の IAM アイデンティティに対するアクセス許可を確認し、不足していれば必要なアクセス許可を IAM アイデンティティに付与します。
Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
Shadow Manager コンポーネントを使用してデバイスシャドウを同期すると、このエラーが表示されることがあります。 AWS IoT Core HTTP 403 ステータスコードは、 AWS IoT コアデバイスのポリシーが呼び出しを許可していないためにこのエラーが発生したことを示しています。GetThingShadow
com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)
ローカルシャドウをと同期するには AWS IoT Core、 AWS IoT コアデバイスのポリシーが以下の権限を付与する必要があります。
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
AWS IoT コアデバイスのポリシーを確認し、不足している必要な権限を追加してください。詳細については、次を参照してください。
-
AWS IoT Core 『AWS IoT 開発者ガイド』のポリシーアクション
Operation aws.greengrass#<operation> is not supported by Greengrass
このエラーは、カスタム Greengrass コンポーネントでプロセス間通信 (IPC) 操作を使用し、 AWS必須のコンポーネントがコアデバイスにインストールされていない場合に表示されることがあります。
この問題を解決するには、必要なコンポーネントをコンポーネントレシピに依存関係として追加し、 AWS IoT Greengrass コンポーネントのデプロイ時にコアソフトウェアが必要なコンポーネントをインストールするようにします。
-
シークレット値を取得する –
aws.greengrass.SecretManager
-
ローカルシャドウとやり取りする –
aws.greengrass.ShadowManager
-
ローカルデプロイとコンポーネントを管理する –
aws.greengrass.Cli
v2.6.0 以降 -
クライアントデバイスを認証して承認する –
aws.greengrass.clientdevices.Auth
v2.2.0 以降
java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
存在しない、または適切なアクセス許可を持たないルートフォルダを使用するようにストリームマネージャーを設定した場合に、ストリームマネージャーログファイル (aws.greengrass.StreamManager.log
) にこのエラーが表示されることがあります。このフォルダの設定方法の詳細については、「ストリームマネージャー設定」を参照してください。
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
このエラーは、ハードウェアセキュリティモジュール (HSM) AWS IoT Greengrass を使用するようにコアソフトウェアを設定したときに指定した秘密鍵または証明書を PKCS #11 プロバイダーコンポーネントが見つからなかったり、読み込んだりできない場合に発生します。以下の操作を実行します。
-
AWS IoT Greengrass Core ソフトウェアで使用するように設定したスロット、ユーザー PIN、オブジェクトラベルを使用して、秘密鍵と証明書が HSM に保存されていることを確認します。
-
プライベートキーと証明書が HSM で同じオブジェクトラベルを使用していることを確認します。
-
HSM がオブジェクト ID をサポートしている場合は、プライベートキーと証明書が HSM で同じオブジェクト ID を使用していることを確認してください。
HSM のセキュリティトークンの詳細を照会する方法については、「HSM のマニュアル」を参照してください。セキュリティトークンのスロット、オブジェクトラベル、またはオブジェクト ID を変更する必要がある場合は、「HSM のマニュアル」を参照して、その方法を確認してください。
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
このエラーは、AWS Secrets Manager シークレットマネージャーコンポーネントを使用してシークレットをデプロイした場合に発生する可能性があります。コアデバイスの [token exchange IAM role] (トークン交換 IAM ロール) がシークレットを取得するアクセス許可を付与しない場合、デプロイは失敗し、Greengrass のログにこのエラーが含まれます。
コアデバイスにシークレットのダウンロードを許可するには
-
コアデバイスのトークン交換ロールに
secretsmanager:GetSecretValue
アクセス許可を追加します。次に示すポリシーステートメントの例では、シークレットの値を取得するための権限を付与しています。{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }
詳細については、「コアデバイスが AWS サービスとやり取りできるように認証する」を参照してください。
-
コアデバイスにデプロイを再適用します。次のいずれかを行います。
-
変更なしでデプロイを修正します。コアデバイスは、修正されたデプロイを受信すると、シークレットのダウンロードを再試行します。詳細については、「展開の改訂」を参照してください。
-
AWS IoT Greengrass コアソフトウェアを再起動して、デプロイを再試行してください。詳細については、「AWS IoT Greengrass Core ソフトウェアを実行する」を参照してください
シークレットマネージャーがシークレットを正常にダウンロードすると、デプロイは成功します。
-
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
このエラーは、シークレットマネージャーコンポーネントを使用して、 AWS Secrets Manager AWS Key Management Service キーで暗号化されたシークレットをデプロイした場合に発生する可能性があります。コアデバイスのトークン交換 IAM ロールでシークレットを暗号化するアクセス許可が付与されない場合、デプロイは失敗し、Greengrass のログにこのエラーが含まれます。
この問題を解決するには、コアデバイスのトークン交換ロールに kms:Decrypt
アクセス許可を追加します。詳細については、次を参照してください。
-
「AWS Secrets Manager ユーザーガイド」の「シークレット暗号化と復号」
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
AWS IoT Greengrass Core ソフトウェアをハードウェアセキュリティ付きでインストールしようとしたときに、ハードウェアセキュリティ統合をサポートしていない以前の Greengrass nucleus バージョンを使用すると、このエラーが表示されることがあります。ハードウェアセキュリティ統合を使用するには、v2.5.3 以降の Greengrass nucleus を使用する必要があります。
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
AWS IoT Greengrass Core をシステムサービスとして実行しているときに TPM2 ライブラリを使用すると、このエラーが表示されることがあります。
このエラーは、PKCS #11 ストアの場所を指定する環境変数を AWS IoT Greengrass Core systemd サービスファイルに追加する必要があることを示しています。
詳細については、PKCS#11 プロバイダー コンポーネントドキュメントの「要件」セクションを参照してください。
Greengrass core device stuck on nucleus v2.12.3
お使いの Greengrass コアデバイスが nucleus バージョン 2.12.3 からデプロイメントを改訂しない場合は、ファイルをダウンロードして Greengrass nucleus バージョン 2.12.2 に置き換える必要がある場合があります。Greengrass.jar
以下の操作を実行します。
-
Greengrass コアデバイスで、次のコマンドを実行して Greengrass Core ソフトウェアを停止します。
-
コアデバイスで、 AWS IoT Greengrass という名前のファイルにソフトウェアをダウンロードします。
greengrass-2.12.2.zip
-
AWS IoT Greengrass Core ソフトウェアをデバイス上のフォルダーに解凍します。
GreengrassInstaller
使用したいフォルダーに置き換えます。 -
次のコマンドを実行して、nucleus バージョン 2.12.3 Greengrass JAR ファイルを nucleus バージョン 2.12.2 Greengrass JAR ファイルでオーバーライドします。
-
次のコマンドを実行して Greengrass Core ソフトウェアを起動します。
AWS IoT Greengrass クラウドに関する問題
次の情報を使用して、 AWS IoT Greengrass コンソールと API に関する問題のトラブルシューティングを行います。各エントリは、アクションを実行したときに表示されるエラーメッセージに対応します。
An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null
このエラーは、 AWS IoT Greengrass CreateComponentVersionコンソールまたは操作でコンポーネントバージョンを作成したときに表示されることがあります。
このエラーは、recipe が有効な JSON または YAML でないことを示しています。recipe の構文を確認し、構文の問題を修正して、もう一度試してください。オンライン JSON または YAML 構文チェッカーを使用して、recipe の構文の問題を特定できます。
Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}
このエラーは、 AWS IoT Greengrass CreateComponentVersionコンソールまたは操作でコンポーネントバージョンを作成したときに表示されることがあります。このエラーは、コンポーネント recipe の S3 アーティファクトが有効でないことを示しています。
以下の操作を実行します。
-
S3 AWS リージョン バケットがコンポーネントを作成した場所と同じ場所にあることを確認してください。 AWS IoT Greengrass コンポーネントアーティファクトのクロスリージョンリクエストはサポートされていません。
-
アーティファクト URI が有効な S3 オブジェクト URL であることを確認し、その S3 オブジェクト URL にアーティファクトが存在することを確認します。
-
S3 オブジェクト URL AWS アカウント にあるアーティファクトにアクセスする権限があることを確認してください。
INACTIVE deployment status
AWS IoT
必要な依存ポリシーがない状態で ListDeploymentsAPI を呼び出すと、INACTIVE
デプロイステータスが表示されることがあります。正確なデプロイステータスを取得するには、必要な権限が必要です。依存アクションは、AWS IoT Greengrass V2定義されているアクションを検索し、必要な権限に従うことで確認できますListDeployments
。 AWS IoT 必要な従属権限がない場合でもデプロイ状況は表示されますが、デプロイステータスは不正確になる可能性があります。INACTIVE
コアデバイスデプロイの問題
Greengrass コアデバイスでのデプロイの問題のトラブルシューティングを行います。各エントリは、コアデバイスに表示される可能性のあるログメッセージに対応します。
トピック
- Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
- Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
- Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
- software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
- com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component
- Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service
- Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
- Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
- Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
- Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
このエラーは、 AWS IoT Greengrass コアデバイスがデプロイを適用したときに、コアソフトウェアがコンポーネントアーティファクトをダウンロードできなかった場合に表示されることがあります。このエラーの結果、デプロイは失敗します。
このエラーが発生した場合、ログにはスタックトレースも含まれ、特定の問題を識別するために使用できます。次の各エントリは、Failed to download artifact
エラーメッセージのスタックトレースに表示される可能性のあるメッセージに対応しています。
トピック
software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)
次のような場合、PackageDownloadException エラーにこのスタックトレースが含まれる可能性があります。
-
コンポーネントのアーティファクトは、コンポーネントの recipe で指定した S3 オブジェクト URL では利用できません。アーティファクトを S3 バケットにアップロードしたこと、アーティファクトの URI がバケット内のアーティファクトの S3 オブジェクト URL と一致していることを確認します。
-
コアデバイスのトークン交換ロールでは、 AWS IoT Greengrass コアソフトウェアはコンポーネントのレシピで指定した S3 オブジェクト URL からコンポーネントアーティファクトをダウンロードできません。トークン交換ロールで、アーティファクトが利用可能な S3 オブジェクト URL の
s3:GetObject
が許可されていることを確認します。
software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>
PackageDownloadException s3:GetBucketLocationコアデバイスに呼び出し権限がない場合のエラーには、このスタックトレースが含まれる可能性があります。このエラーメッセージには、次のメッセージも含まれています。
reason: Failed to determine S3 bucket location
コアデバイスのトークン交換ロールで、アーティファクトが利用可能な S3 バケットの s3:GetBucketLocation
が許可されていることを確認します。
Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
このエラーは、 AWS IoT Greengrass コアデバイスがデプロイを適用したときに、コアソフトウェアがコンポーネントアーティファクトをダウンロードできなかった場合に表示されることがあります。ダウンロードしたアーティファクトファイルのチェックサムが、 AWS IoT Greengrass コンポーネントを作成したときに計算されたチェックサムと一致しないため、デプロイが失敗します。
以下の操作を実行します。
-
アーティファクトファイルが、それをホストする S3 バケット内で変更されたかどうかを確認します。コンポーネントの作成後にファイルが変更されている場合は、コアデバイスが想定している以前のバージョンに復元します。ファイルを以前のバージョンに復元できない場合、または新しいバージョンのファイルを使用する場合は、アーティファクトファイルを使用して新しいバージョンのコンポーネントを作成します。
-
コアデバイスのインターネット接続を確認します。このエラーは、アーティファクトファイルがダウンロード中に破損した場合に発生する可能性があります。新しいデプロイを作成して、もう一度試してください。
Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
このエラーは、コアデバイスで、そのコアデバイスのデプロイの要件を満たすコンポーネントバージョンが見つからない場合に表示されることがあります。 AWS IoT Greengrass コアデバイスはサービスとローカルデバイス上のコンポーネントをチェックします。エラーメッセージには、各デプロイのターゲットと、そのコンポーネントのデプロイのバージョン要件が含まれます。デプロイターゲットはモノ、モノグループ、または LOCAL_DEPLOYMENT
にすることができます。これは、コアデバイスのローカルデプロイを表します。
この問題は、次の状況に発生する可能性があります:
-
コアデバイスは、競合するコンポーネントのバージョン要件を持つ複数のデプロイのターゲットです。例えば、コアデバイスは、
com.example.HelloWorld
コンポーネントを含む複数のデプロイのターゲットになる場合があり、一方のデプロイにはバージョン 1.0.0 が必要で、もう一方にはバージョン 1.0.1 が必要です。両方の要件を満たすコンポーネントを持つことは不可能であるため、デプロイは失敗します。 -
AWS IoT Greengrass コンポーネントバージョンはサービスにもローカルデバイスにも存在しません。例えば、コンポーネントが削除された可能性があります。
-
バージョン要件を満たすコンポーネントバージョンが存在しますが、コアデバイスのプラットフォームと互換性はありません。
-
AWS IoT
greengrass:ResolveComponentCandidates
コアデバイスのポリシーでは権限は付与されません。エラーログでStatus Code: 403
を検索して、この問題を特定します。この問題を解決するには、コアデバイスの AWS IoT ポリシーにgreengrass:ResolveComponentCandidates
アクセス許可を追加します。詳細については、「AWS IoT Greengrass V2 コアデバイス向けの最低限の AWS IoT ポリシー」を参照してください。
この問題を解決するには、デプロイを修正して互換性のあるバージョンのコンポーネントを含めるか、互換性のないコンポーネントを削除します。クラウドデプロイを変更する方法の詳細については、「展開の改訂」を参照してください。ローカルデプロイを変更する方法の詳細については、AWS IoT Greengrass CLI デプロイ作成コマンドを参照してください。
software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
このエラーは、コンポーネントをコアデバイスにデプロイした場合に、コアデバイスのプラットフォームと互換性のあるプラットフォームがコンポーネントにリストされていないと表示されることがあります。次のいずれかを行います。
-
コンポーネントがカスタム Greengrass コンポーネントの場合、コンポーネントを更新してコアデバイスと互換性を持たせることができます。コアデバイスのプラットフォームに一致する新しいマニフェストを追加するか、コアデバイスのプラットフォームに合わせて既存のマニフェストを更新します。詳細については、「AWS IoT Greengrass コンポーネントレシピリファレンス」を参照してください。
-
コンポーネントがから提供されている場合は AWS、そのコンポーネントの他のバージョンがコアデバイスと互換性があるかどうかを確認してください。互換性のあるバージョンがない場合は、AWS IoT Greengrass タグ
を使用して AWS re:Post でお問い合わせいただくか、AWS Support にお問い合わせください。
com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component
Greengrass nucleus に依存するコンポーネントをデプロイした場合に、コアデバイスが利用可能な最新のマイナーバージョンよりも前のバージョンの Greengrass nucleus を実行していると、このエラーが表示されることがあります。このエラーは、 AWS IoT Greengrass コアソフトウェアがコンポーネントを互換性のある最新のバージョンに自動的に更新しようとすることが原因で発生します。ただし、 AWS提供されているコンポーネントのいくつかは Greengrass nucleus の特定のマイナーバージョンに依存しているため、 AWS IoT Greengrass Core ソフトウェアでは Greengrass nucleus が新しいマイナーバージョンに更新されません。詳細については、「Greengrass nucleus の更新動作」を参照してください。
デプロイを改訂して、使用する Greengrass nucleus バージョンを指定する必要があります。次のいずれかを行います。
-
デプロイを改訂して、コアデバイスが現在実行している Greengrass nucleus バージョンを指定します。
-
デプロイを改訂して、Greengrass nucleus の新しいマイナーバージョンを指定します。このオプションを選択した場合、Greengrass nucleus の特定のマイナーバージョンに依存する、 AWS提供されているすべてのコンポーネントのバージョンも更新する必要があります。詳細については、「AWS が提供したコンポーネント」を参照してください。
Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service
Greengrass のデバイスをあるグループから別のグループに移動し、Greengrass の再起動が必要なデプロイで元のグループに戻したときに、このエラーが表示されることがあります。
この問題を解決するには、デバイスの起動ディレクトリを再作成してください。また、Greengrass nucleus のバージョン 2.9.6 以降へのアップグレードを強く推奨します。
以下は、起動ディレクトリを再作成するための Linux スクリプトです。fix_directory.sh
という名前のファイルにスクリプトを保存します。
#!/bin/bash set -e GG_ROOT=$1 GG_VERSION=$2 CURRENT="$GG_ROOT/alts/current" if [ ! -L "$CURRENT" ]; then mkdir -p $GG_ROOT/alts/directory_fix echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT" ln -sf $GG_ROOT/alts/directory_fix $CURRENT fi TARGET=$(readlink $CURRENT) if [[ ! -d "$TARGET" ]]; then echo "Creating directory: $TARGET" mkdir -p "$TARGET" fi DISTRO_LINK="$TARGET/distro" DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/" echo "Relinking Nucleus artifacts to $DISTRO_LINK" ln -sf $DISTRO $DISTRO_LINK
スクリプトを実行するには、次のコマンドを実行します。
[root@ip-172-31-27-165 ~]#
./fix_directory.sh /greengrass/v2
2.9.5
Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro
Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
このエラーは、コア デバイスが 7 KB (モノを対象とするデプロイの場合) または 31 KB (モノのグループを対象とするデプロイの場合) を超えるデプロイドキュメントである大規模なデプロイドキュメントを受信した場合に表示されることがあります。大規模なデプロイメントドキュメントを取得するには、 AWS IoT コアデバイスのポリシーで権限を許可する必要があります。greengrass:GetDeploymentConfiguration
このエラーは、コアデバイスにこの権限がない場合に発生する可能性があります。このエラーが発生すると、デプロイは無期限に再試行され、そのステータスは [In progress] (進行中) (IN_PROGRESS
) です。
この問題を解決するには、greengrass:GetDeploymentConfiguration
AWS IoT コアデバイスのポリシーに権限を追加してください。詳細については、「コアデバイスの AWS IoT ポリシーを更新する」を参照してください。
Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
この警告は、コアデバイスがデプロイを受け取り、 AWS IoT greengrass:ListThingGroupsForCoreDevice
コアデバイスのポリシーで権限が許可されていない場合に表示されることがあります。デプロイを作成するとき、コアデバイスはこの権限を使用して、そのモノグループを識別し、コアデバイスを削除したすべてのモノグループのコンポーネントを削除します。コアデバイスが Greengrass nucleus v2.5.0 を実行している場合、デプロイは失敗します。コアデバイスが Greengrass nucleus v2.5.1 以降を実行している場合、デプロイは続行されますが、コンポーネントは削除されません。モノグループの削除動作の詳細については、「デバイスに AWS IoT Greengrass コンポーネントのデプロイ」を参照してください。
コアデバイスを削除したモノグループのコンポーネントを削除するようにコアデバイスの動作を更新するには、greengrass:ListThingGroupsForCoreDevice
AWS IoT コアデバイスのポリシーに権限を追加します。詳細については、「コアデバイスの AWS IoT ポリシーを更新する」を参照してください。
Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
コアデバイスは DEBUG
ログレベルでエラーをログに記録するため、この情報メッセージがエラーなしで複数回出力される場合があります。この問題は、コアデバイスが大規模なデプロイドキュメントを受信した場合に、発生する可能性があります。この問題が発生すると、デプロイは無期限に再試行され、そのステータスは [In progress] (進行中) (IN_PROGRESS
) です。この問題を解決する方法の詳細については、「こちらのトラブルシューティングエントリ」を参照してください。
Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
このエラーは、データプレーン API iot:Connect
に権限がない場合に表示されることがあります。正しいポリシーがないと、GreengrassV2DataException: 403
というメッセージが表示されます。アクセス権限ポリシーを作成するには、以下の手順に従ってくださいAWS IoT ポリシーを作成する。
コアデバイスコンポーネントの問題
コアデバイスで Greengrass コンポーネントの問題のトラブルシューティングを行います。
トピック
- Warn: '<command>' is not recognized as an internal or external command
- Python スクリプトはメッセージをログに記録しません
- デフォルト設定を変更してもコンポーネント設定が更新されません
- awsiot.greengrasscoreipc.model.UnauthorizedError
- com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
- com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
- Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
- copyFrom: <configurationPath> is already a container, not a leaf
- com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
- java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
- aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
Warn: '<command>' is not recognized as an internal or external command
AWS IoT Greengrass Core ソフトウェアがコンポーネントのライフサイクルスクリプト内のコマンドを実行できなかったときに、Greengrass コンポーネントのログにこのエラーが表示されることがあります。このエラーの結果、コンポーネントの状態は BROKEN
になります。このエラーは、ggc_user
などのコンポーネントを実行するシステムユーザーが PATH
Windows デバイスでは、実行可能ファイルを含むフォルダが、コンポーネントを実行するシステムユーザーの PATH
にあることを確認します。PATH
から欠落している場合は、次のいずれかを実行します。
-
実行可能ファイルのフォルダを、すべてのユーザーを利用できる
PATH
システム変数に追加します。次に、コンポーネントを再起動します。Greengrass nucleus 2.5.0 を実行する場合、
PATH
システム変数を更新した後に、 AWS IoT Greengrass Core ソフトウェアを再起動して、更新されたコンポーネントを実行する必要があります。PATH
ソフトウェアを再起動しても AWS IoT Greengrass CorePATH
ソフトウェアが更新されたものを使用しない場合は、デバイスを再起動してやり直してください。詳細については、「AWS IoT Greengrass Core ソフトウェアを実行する」を参照してください。 -
コンポーネントを実行するシステムユーザーの
PATH
ユーザー変数に実行可能ファイルのフォルダを追加します。
Python スクリプトはメッセージをログに記録しません
Greengrass コアデバイスは、コンポーネントの問題を特定するために使用できるログを収集します。Python スクリプトの stdout
と stderr
のメッセージがコンポーネントログに表示されない場合、Python でこれらの標準出力ストリームのバッファをフラッシュするか、バッファリングを無効にする必要がある場合があります。次のいずれかを実行します。
-
-u
引数を指定してPythonを実行し、 stdout
とstderr
のバッファリングを無効にします。 -
コンポーネントの recipe で Setenv を使用して、PYTHONUNBUFFERED
環境変数を空でない文字列に設定します。この環境変数は stdout
とstderr
のバッファリングを無効にします。 -
stdout
またはstderr
Streams のバッファをフラッシュします。次のいずれかを行います。-
印刷時にメッセージをフラッシュします。
import sys print('Hello, error!', file=sys.stderr, flush=True)
-
印刷後にメッセージをフラッシュします。ストリームをフラッシュする前に、複数のメッセージを送信できます。
import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()
-
Python スクリプトがログメッセージを出力することを確認する方法の詳細については、「AWS IoT Greengrass ログのモニタリング」を参照してください。
デフォルト設定を変更してもコンポーネント設定が更新されません
コンポーネントの recipe で DefaultConfiguration
を変更した場合、デプロイ中に新しいデフォルト設定がコンポーネントの既存の設定を置き換えることはありません。新しいデフォルト設定を適用するには、コンポーネントの設定をデフォルト設定にリセットする必要があります。コンポーネントをデプロイする場合には、更新のリセットとして空の文字列を 1 つ指定します。
awsiot.greengrasscoreipc.model.UnauthorizedError
コンポーネントにリソースに対する IPC オペレーションを実行するアクセス許可がない場合に、Greengrass コンポーネントのログにこのエラーが表示されることがあります。コンポーネントに IPC オペレーションを呼び出すアクセス許可を付与するには、コンポーネントの設定で IPC 承認ポリシーを定義します。詳細については、「コンポーネントにIPCオペレーションの実行を許可する」を参照してください。
ヒント
コンポーネントの recipe で DefaultConfiguration
を変更した場合は、コンポーネントの設定を新しいデフォルト設定にリセットする必要があります。コンポーネントをデプロイする場合には、更新のリセットとして空の文字列を 1 つ指定します。詳細については、「デフォルト設定を変更してもコンポーネント設定が更新されません」を参照してください。
com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
このエラーは、コアデバイスのすべてのコンポーネントを含め、複数の IPC 承認ポリシーが同じポリシー ID を使用している場合に表示されることがあります。
コンポーネントの IPC 承認ポリシーを確認し、重複があれば修正して、再試行します。一意のポリシー ID を作成するには、コンポーネント名、IPC サービス名、および順番号を組み合わせることをお勧めします。詳細については、「コンポーネントにIPCオペレーションの実行を許可する」を参照してください。
ヒント
コンポーネントの recipe で DefaultConfiguration
を変更した場合は、コンポーネントの設定を新しいデフォルト設定にリセットする必要があります。コンポーネントをデプロイする場合には、更新のリセットとして空の文字列を 1 つ指定します。詳細については、「デフォルト設定を変更してもコンポーネント設定が更新されません」を参照してください。
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
このエラーは、 AWS コアデバイスがトークン交換サービスから認証情報を取得できない場合に表示されることがあります。HTTP 400 ステータスコードは、コアデバイスのトークン交換 IAM ロールが存在しないか、 AWS IoT 認証情報プロバイダーが引き継ぐことを許可する信頼関係がないため、このエラーが発生したことを示しています。
以下の操作を実行します。
-
コアデバイスが使用するトークン交換ロールを特定します。エラーメッセージには、 AWS IoT トークン交換ロールを指すコアデバイスのロールエイリアスが含まれています。開発用コンピューターで次のコマンドを実行し、 AWS IoT エラーメッセージに記載されているロールエイリアスの名前に置き換えます
MyGreengrassCoreTokenExchangeRoleAlias
。aws iot describe-role-alias --role-alias
MyGreengrassCoreTokenExchangeRoleAlias
レスポンスには、トークン交換 IAM ロールの Amazon リソースネーム (ARN) が含まれます。
{ "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } }
-
ロールが存在することを確認します。次のコマンドを実行し、
MyGreengrassV2 TokenExchangeRole
をトークン交換ロールの名前に置き換えます。aws iam get-role --role-name
MyGreengrassV2TokenExchangeRole
コマンドが
NoSuchEntity
エラーを返した場合、ロールは存在しないため、作成する必要があります。このロールを作成および設定する方法の詳細については、「コアデバイスが AWS サービスとやり取りできるように認証する」を参照してください。 -
そのロールに、 AWS IoT 認証情報プロバイダーが引き継ぐことができるような信頼関係があることを確認します。前のステップのレスポンスには
AssumeRolePolicyDocument
が含まれ、これはロールの信頼関係を定義します。ロールは、credentials.iot.amazonaws.com
が引き受けることを許可する信頼関係を定義する必要があります。このドキュメントは次の例のようになります。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
ロールの信頼関係で
credentials.iot.amazonaws.com
が引き受けることが許可されていない場合、ロールにこの信頼関係を追加する必要があります。詳細については、「AWS Identity and Access Management ユーザーガイド」の「ロールの修正」を参照してください。
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
このエラーは、 AWS コアデバイスがトークン交換サービスから認証情報を取得できない場合に表示されることがあります。HTTP 403 ステータスコードは、 AWS IoT iot:AssumeRoleWithCertificate
AWS IoT コアデバイスのポリシーがコアデバイスのロールエイリアスに対する権限を付与していないためにこのエラーが発生したことを示しています。
AWS IoT コアデバイスのポリシーを確認し、iot:AssumeRoleWithCertificate
AWS IoT コアデバイスのロールエイリアスに権限を追加してください。エラーメッセージには、 AWS IoT コアデバイスの現在のロールエイリアスが含まれます。 AWS IoT この権限とコアデバイスのポリシーを更新する方法の詳細については、「」AWS IoT Greengrass V2 コアデバイス向けの最低限の AWS IoT ポリシー と「」を参照してくださいコアデバイスの AWS IoT ポリシーを更新する。
com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
このエラーは、 AWS コンポーネントが認証情報をリクエストしようとして、トークン交換サービスに接続できない場合に表示されることがあります。
以下の操作を実行します。
-
コンポーネントがトークン交換サービスコンポーネント
aws.greengrass.TokenExchangeService
への依存関係を宣言していることを確認します。宣言していない場合は、依存関係を追加して、コンポーネントを再デプロイします。 -
コンポーネントが Docker で実行される場合は、Docker コンテナコンポーネントで AWS 認証情報を使用する (Linux) に従って適切なネットワーク設定と環境変数を適用するようにしてください。
-
コンポーネントが NodeJS で記述されている場合は、dns を設定します。 setDefaultResultへの注文
。 ipv4first
-
::1
で始まり、localhost
を含むエントリがないか/etc/hosts
を調べます。エントリを削除して、そのエントリがコンポーネントが間違ったアドレスでトークン交換サービスに接続した原因であったかどうかを確認します。
Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
このエラーは、コンポーネントがトークン交換サービスを実行せず、 AWS コンポーネントが認証情報をリクエストしようとしたときに表示されることがあります。
以下の操作を実行します。
-
コンポーネントがトークン交換サービスコンポーネント
aws.greengrass.TokenExchangeService
への依存関係を宣言していることを確認します。宣言していない場合は、依存関係を追加して、コンポーネントを再デプロイします。 -
AWS
install
コンポーネントがそのライフサイクルで認証情報を使用しているかどうかを確認してください。 AWS IoT Greengrassinstall
ライフサイクル中のトークン交換サービスの可用性を保証するものではありません。コンポーネントを更新して、 AWS 認証情報を使用するコードをstartup
またはrun
ライフサイクルに移動してからコンポーネントを再デプロイします。
copyFrom: <configurationPath> is already a container, not a leaf
このエラーは、設定値をコンテナタイプ (リストまたはオブジェクト) から非コンテナタイプ (文字列、数値、またはブール値) に変更したときに表示されることがあります。以下の操作を実行します。
-
コンポーネントの recipe をチェックして、デフォルト設定で、その設定値がリストまたはオブジェクトに設定されているかどうかを確認します。その場合は、その設定値を削除または変更します。
-
その設定値をデフォルト値にリセットするデプロイを作成します。詳細については、「デプロイの作成」および「コンポーネント設定の更新」を参照してください。
その後で、その設定値を文字列、数値、またはブール値に設定できます。
com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
[Docker application manager component] (Docker アプリケーションマネージャーコンポーネント) が Amazon Elastic Container Registry (Amazon ECR) のプライベートリポジトリから Docker イメージをダウンロードしようとすると、Greengrass nucleus ログにこのエラーが表示される場合があります。このエラーは、wincred
Docker credential helperdocker-credential-wincred
) を使用した場合に発生します。その結果、Amazon ECR はログイン認証情報を保存できません。
次のいずれかのアクションを実行します。
-
wincred
Docker 認証情報ヘルパーを使用しない場合、コアデバイスからdocker-credential-wincred
プログラムを削除してください。 -
wincred
Docker 認証情報ヘルパーを使用する場合、以下の操作を行います。-
コアデバイスの
docker-credential-wincred
プログラムの名前を変更します。wincred
を Windows Docker 認証情報ヘルパーの新しい名前に置き換えます。例えば、名前をdocker-credential-wincredreal
に変更できます。 -
Docker 設定 (
.docker/config.json
) のcredsStore
オプションを更新し、Windows Docker 認証情報ヘルパーの新しい名前を使用します。例えば、プログラムの名前をdocker-credential-wincredreal
に変更した場合は、credsStore
オプションをwincredreal
に更新します。{ "credsStore": "
wincredreal
" }
-
java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
このエラーは、ggc_user
など、コンポーネントのプロセスを実行するシステムユーザーのパスワードの有効期限が切れている場合に、Windows コアデバイスに表示されることがあります。その結果、 AWS IoT Greengrass コアソフトウェアはそのシステムユーザーとしてコンポーネントプロセスを実行できなくなります。
Greengrass システムユーザーのパスワードを更新するには
-
管理者として次のコマンドを実行して、ユーザーのパスワードを設定します。
ggc_user
をシステムユーザーに置き換え、password
を設定するパスワードに置き換えます。net user
ggc_user
password
-
PsExec ユーティリティを使用して
、 LocalSystem ユーザーの新しいパスワードをアカウントの Credential Manager インスタンスに保存します。 password
を設定したユーザーのパスワードに置き換えます。psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
ヒント
Windows の構成によっては、ユーザーのパスワードの期限切れが、将来の日付に設定されている場合があります。Greengrass アプリケーションの動作を継続させるためには、パスワードの有効期限を追跡し、その期限が切れる前に更新します。ユーザーのパスワードには、期限切れを起こさないような設定も可能です。
-
ユーザーとパスワードの有効期限を確認するには、次のコマンドを実行します。
net user
ggc_user
| findstr /C:expires -
ユーザーのパスワードが期限切れにならないように設定するには、次のコマンドを実行します。
wmic UserAccount where "Name='
ggc_user
'" set PasswordExpires=False -
wmic
このコマンドが廃止された Windows 10 以降を使用している場合は、次のコマンドを実行します。 PowerShell Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = '
ggc_user
'" | Set-CimInstance -Property @{PasswordExpires="False"}
aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
ストリームマネージャ v2.0.7 を v2.0.8 と v2.0.11 の間のバージョンにアップグレードする場合、コンポーネントの起動に失敗すると、ストリームマネージャーコンポーネントのログに次のエラーが表示される場合があります。
2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING} 2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}
ストリームマネージャー v2.0.7 をデプロイし、それ以降のバージョンにアップグレードする場合は、ストリームマネージャー v2.0.12 に直接アップグレードする必要があります。ストリームマネージャコンポーネントの詳細については、「ストリームマネージャー」を参照してください。
コアデバイスの Lambda 関数コンポーネントの問題
コアデバイスでの Lambda 関数コンポーネントの問題のトラブルシューティングを行います。
トピック
The following cgroup subsystems are not mounted: devices, memory
次の場合に、コンテナ化した Lambda 関数を実行すると、このエラーが表示されることがあります。
-
コアデバイスで、メモリまたはデバイス cgroup に対して cgroup v1 が有効になっていない。
-
コアデバイスで cgroup v2 が有効になっている。Greengrass Lambda 関数は cgroup v1 を必要とし、cgroup v1 と v2 は相互に排他的です。
cgroups v1 を有効にするには、次の Linux カーネルパラメータを使用してデバイスを起動します。
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
ヒント
Raspberry Pi で、/boot/cmdline.txt
ファイルを編集して、デバイスのカーネルパラメータを設定します。
ipc_client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>
このエラーは、レガシーサブスクリプションルーターコンポーネントでサブスクリプションを指定せずに V2 コアデバイスで AWS IoT Greengrass Core SDK を使用する V1 Lambda 関数を実行すると表示されることがあります。この問題を解決するには、レガシーサブスクリプションルーターをデプロイして設定し、必要なサブスクリプションを指定します。詳細については、「V1 Lambda 関数をインポートする」を参照してください。
コンポーネントのバージョンが廃止された
コアデバイスのコンポーネントのバージョンが廃止されているとき、Personal Health Dashboard (PHD) に通知が表示される場合があります。そのコンポーネントのバージョンは、廃止されてから 60 分以内にこの通知を PHD に送信します。
どのデプロイを修正する必要があるかを確認するには、 AWS Command Line Interfaceを使用して次の操作を行います。
-
次のコマンドを実行し、コアデバイスのリストを取得します。
aws greengrassv2 list-core-devices
-
次のコマンドを実行し、手順 1 の各コアデバイス上のコンポーネントのステータスを取得します。
をクエリする各コアデバイスの名前に置き換えます。coreDeviceName
aws greengrassv2 list-installed-components --core-device-thing-name
coreDeviceName
-
前の手順でインストールした、廃止されたコンポーネントのバージョンのコアデバイスを収集します。
-
次のコマンドを実行し、手順 3 の各コアデバイスに対するすべてのデプロイジョブのステータスを取得します。
をクエリするコアデバイスの名前に置き換えます。coreDeviceName
aws greengrassv2 list-effective-deployments --core-device-thing-name
coreDeviceName
レスポンスには、コアデバイスのデプロイジョブのリストが含まれます。デプロイを修正して別のコンポーネントのバージョンを選択できます。デプロイを修正する方法の詳細については、「デプロイの修正」を参照してください。
Greengrass コマンドラインインターフェイスの問題
Greengrass CLI の問題のトラブルシューティング。
java.lang.RuntimeException: Unable to create ipc client
Greengrass CLI コマンドを実行し、 AWS IoT Greengrass Core ソフトウェアがインストールされている場所とは異なるルートフォルダを指定すると、このエラーが表示されることがあります。
次のいずれかを実行してルートパスを設定し、そのパスを AWS IoT Greengrass Core
ソフトウェアインストールへのパスに置き換えます。/greengrass/v2
-
GGC_ROOT_PATH
環境変数を
に設定します。/greengrass/v2
-
次の例のように、コマンドに
--ggcRootPath
引数を追加します。/greengrass/v2
greengrass-cli --ggcRootPath
<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface 問題
AWS CLI AWS IoT Greengrass V2の問題のトラブルシューティング。
Error: Invalid choice: 'greengrassv2'
このエラーは、 AWS CLI (などaws greengrassv2 list-core-devices
) AWS IoT Greengrass V2 を使用してコマンドを実行すると、表示されることがあります。
このエラーは、がサポートしていないバージョンのを使用していることを示しています AWS IoT Greengrass V2。 AWS CLI AWS IoT Greengrass V2 と一緒に使用するには AWS CLI、次のバージョンまたはそれ以降のバージョンが必要です。
-
AWS CLI V1 の最小バージョン:v1.18.197
-
V2 の最小バージョン:v2.1.11 AWS CLI
ヒント
以下のコマンドを実行して、 AWS CLI 現在使用しているのバージョンを確認できます。
aws --version
この問題を解決するには、 AWS IoT Greengrass V2をサポートしている新しいバージョンに更新してください。 AWS CLI 詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLIのインストール、更新、およびアンインストール」を参照してください。