翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トラブルシューティング AWS IoT Greengrass V2
このセクションのトラブルシューティング情報と解決策を使用して、 の問題を解決します AWS IoT Greengrass Version 2。
トピック
AWS IoT Greengrass Core ソフトウェアとコンポーネントのログを表示する
AWS IoT Greengrass Core ソフトウェアは、コアデバイスに関するリアルタイムの情報を表示するために使用できるローカルファイルシステムにログを書き込みます。CloudWatch Logs にログを書き込むようにコアデバイスを設定することもできるため、コアデバイスのトラブルシューティングをリモートで行うことができます。これらのログは、コンポーネント、デプロイ、およびコアデバイスの問題を特定するのに役立ちます。詳細については、「AWS IoT Greengrass ログのモニタリング」を参照してください。
AWS IoT Greengrass ソフトウェアの主な問題
AWS IoT Greengrass Core ソフトウェアの問題をトラブルシューティングします。
トピック
Failed to map segment from shared object: operation not permitted
com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
Operation aws.greengrass#<operation> is not supported by Greengrass
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
ListDeployments API の ThrottlingException
ListDeployments API の ThrottlingException: これは、アカウントに多数のデプロイがある場合に表示されることがあります。
これを解決するには、以下のいずれかを実行します。
SDK を使用する場合は、MaxResult パラメータを指定してください。例えば、JavaSDK
では、小さい値 (例: 5) を指定します。 AWS Service Quotas を使用して、
DescribeJobAPI のレート制限の制限引き上げをリクエストできます。Service Quotas コンソールに移動 AWS IoT し、 のクォータを選択します。制限名は DescribeJob スロットル制限です。10 から 50 まで増やすことができます。
コアデバイスをセットアップできない
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 Core ソフトウェアがデプロイジョブを取得 AWS IoT Core するために に接続できない場合、このエラーが表示されることがあります。以下の操作を実行します。
-
コアデバイスがインターネットと に接続できることを確認します AWS IoT Core。デバイスが接続する AWS IoT Core エンドポイントの詳細については、「」を参照してくださいAWS IoT Greengrass Core ソフトウェアを設定する。
-
コアデバイスの AWS IoT モノが、
iot:Connect、、iot:Publish、iot:Receiveおよび アクセスiot:Subscribe許可を許可する証明書を使用していることを確認します。 -
コアデバイスでネットワークプロキシが使用されている場合は、コアデバイスにデバイスロールがあり、そのロールで
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 ライブラリが使用するフォルダを変更できます。デプロイまたは AWS IoT Greengrass Core ソフトウェアのインストール時に、Greengrass nucleus コンポーネント設定で
jvmOptionsパラメータを指定できます。/path/to/useを、CRT AWS ライブラリが使用できるフォルダへのパスに置き換えます。{ "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }
Windows サービスのセットアップに失敗しました
Microsoft Windows 2016 デバイスに AWS IoT Greengrass Core ソフトウェアをインストールすると、このエラーが表示されることがあります。 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 認証情報を指定せずに AWS IoT Greengrass Core ソフトウェアをインストールすることもできます。詳細については、手動リソースプロビジョニングを使用して 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
シャドウマネージャーコンポーネントを使用してデバイスシャドウを同期 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 デベロッパーガイドの AWS IoT Core ポリシーアクション
Operation aws.greengrass#<operation> is not supported by Greengrass
このエラーは、カスタム Greengrass コンポーネントでプロセス間通信 (IPC) オペレーションを使用し、必要な提供コンポーネントがコアデバイスにインストールされていない場合に表示されることがあります。 AWS
この問題を修正するには、必要なコンポーネントをコンポーネントレシピの依存関係として追加し、コンポーネントをデプロイするときに AWS IoT Greengrass Core ソフトウェアが必要なコンポーネントをインストールします。
-
シークレット値を取得する –
aws.greengrass.SecretManager -
ローカルシャドウとやり取りする –
aws.greengrass.ShadowManager -
ローカルデプロイとコンポーネントを管理する –
aws.greengrass.Cliv2.6.0 以降 -
クライアントデバイスを認証して承認する –
aws.greengrass.clientdevices.Authv2.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 Core ソフトウェアを設定するときに指定したプライベートキーまたは証明書を 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 Core ソフトウェアを再起動して、デプロイを再試行します。詳細については、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 ユーザーガイド」の「Secret encryption and decryption」
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
Core をシステムサービスとして実行するときに TPM2 AWS IoT Greengrass ライブラリを使用すると、このエラーが表示されることがあります。
このエラーは、 AWS IoT Greengrass Core systemd サービスファイル内の PKCS#11 ストアの場所を提供する環境変数を追加する必要があることを示します。
詳細については、PKCS#11 プロバイダ コンポーネントドキュメントの「要件」セクションを参照してください。
Greengrass core device stuck on nucleus v2.12.3
Greengrass コアデバイスが nucleus バージョン 2.12.3 からデプロイを変更しない場合は、Greengrass.jar ファイルをダウンロードして Greengrass nucleus バージョン 2.12.2 に置き換える必要があります。以下の操作を実行します。
-
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 ソフトウェアを起動します。
Greengrass nucleus v2.14.0 systemd template issue
デフォルトの systemd サービステンプレートを使用して Linux デバイスに Greengrass nucleus v2.14.0 をインストールした場合、この問題が発生する可能性があります。以下の操作を実行します。
-
Greengrass コアデバイスで以下のコマンドを実行して、systemd サービスファイルを nucleus v2.13.0 以前の状態に戻します。
-
変更を適用します。
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 ポリシーなしで ListDeployments API を呼び出すと、INACTIVEデプロイステータスが表示されることがあります。正確なデプロイステータスを取得するには、必要なアクセス許可が必要です。依存アクションを見つけるには、AWS IoT Greengrass V2で定義されているアクションを確認し、ListDeployments に必要なアクセス許可に従います。必要な依存アクセス AWS IoT 許可がないと、デプロイステータスは表示されますが、 のデプロイステータスが不正確になる可能性がありますINACTIVE。
コアデバイスデプロイの問題
Greengrass コアデバイスでのデプロイの問題のトラブルシューティングを行います。各エントリは、コアデバイスに表示される可能性のあるログメッセージに対応します。
Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
このエラーは、 AWS IoT Greengrass コアデバイスがデプロイを適用するときに Core ソフトウェアがコンポーネントアーティファクトをダウンロードできない場合に表示されることがあります。このエラーの結果、デプロイは失敗します。
このエラーが発生した場合、ログにはスタックトレースも含まれ、特定の問題を識別するために使用できます。次の各エントリは、Failed to download artifact エラーメッセージのスタックトレースに表示される可能性のあるメッセージに対応しています。
トピック
software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)
[PackageDownloadException error] (パッケージダウンロード例外エラー) は、次の場合にこのスタックトレースを含めることができます。
-
コンポーネントのアーティファクトは、コンポーネントの recipe で指定した S3 オブジェクト URL では利用できません。アーティファクトを S3 バケットにアップロードしたこと、アーティファクトの URI がバケット内のアーティファクトの S3 オブジェクト URL と一致していることを確認します。
-
コアデバイスのトークン交換ロールは、 AWS IoT Greengrass Core ソフトウェアがコンポーネントのレシピで指定した S3 オブジェクト URL からコンポーネントアーティファクトをダウンロードすることを許可しません。トークン交換ロールで、アーティファクトが利用可能な S3 オブジェクト URL の
s3:GetObjectが許可されていることを確認します。
software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>
コアデバイスに s3:GetBucketLocation を呼び出すアクセス許可がない場合に、PackageDownloadException エラーにこのスタックトレースが含まれることがあります。このエラーメッセージには、次のメッセージも含まれています。
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 コアデバイスがデプロイを適用するときに Core ソフトウェアがコンポーネントアーティファクトをダウンロードできない場合に表示されることがあります。ダウンロードしたアーティファクトファイルのチェックサムが、コンポーネントの作成時に 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 でお問い合わせいただくか、サポート にお問い合わせください。
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 Core ソフトウェアがコンポーネントを最新の互換性のあるバージョンに自動的に更新しようとするために発生します。ただし、いくつかの 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/v22.9.5Relinking /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) です。
この問題を解決するには、コアデバイスの AWS IoT ポリシーに アクセスgreengrass:GetDeploymentConfiguration許可を追加します。詳細については、「コアデバイスの 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 コンポーネントをデバイスにデプロイする」を参照してください。
コアデバイスの動作を更新して、コアデバイスを削除するモノグループのコンポーネントを削除するには、コアデバイスの AWS IoT ポリシーに アクセスgreengrass:ListThingGroupsForCoreDevice許可を追加します。詳細については、「コアデバイスの 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
com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
copyFrom: <configurationPath> is already a container, not a leaf
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。ソフトウェアを再起動PATHした後に AWS IoT Greengrass Core ソフトウェアが更新された を使用しない場合は、デバイスを再起動して再試行してください。詳細については、「AWS IoT Greengrass Core ソフトウェアを実行する」を参照してください。 -
コンポーネントを実行するシステムユーザーの
PATHユーザー変数に実行可能ファイルのフォルダを追加します。
Python スクリプトはメッセージをログに記録しません
Greengrass コアデバイスは、コンポーネントの問題を特定するために使用できるログを収集します。Python スクリプトの stdout と stderr のメッセージがコンポーネントログに表示されない場合、Python でこれらの標準出力ストリームのバッファをフラッシュするか、バッファリングを無効にする必要がある場合があります。次のいずれかを実行します。
-
-u
引数を指定してPythonを実行し、 stdoutとstderrのバッファリングを無効にします。 -
コンポーネントの recipe で Setenv を使用して、PYTHONUNBUFFERED
環境変数を空でない文字列に設定します。この環境変数は stdoutとstderrのバッファリングを無効にします。 -
stdoutまたはstderrStreams のバッファをフラッシュします。次のいずれかを行います。-
印刷時にメッセージをフラッシュします。
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 ロールを指すコアデバイスのロールエイリアスが含まれています。開発用コンピュータで次のコマンドを実行し、
MyGreengrassCoreTokenExchangeRoleAliasをエラーメッセージの AWS IoT ロールエイリアスの名前に置き換えます。aws iot describe-role-alias --role-aliasMyGreengrassCoreTokenExchangeRoleAliasレスポンスには、トークン交換 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" } } -
ロールが存在することを確認します。次のコマンドを実行して、
MyGreengrassV2TokenExchangeRoleをトークン交換ロールの名前に置き換えます。aws iam get-role --role-nameMyGreengrassV2TokenExchangeRoleコマンドが
NoSuchEntityエラーを返した場合、ロールは存在しないため、作成する必要があります。このロールを作成および設定する方法の詳細については、「コアデバイスが AWS サービスとやり取りできるように承認する」を参照してください。 -
ロールに、 AWS IoT 認証情報プロバイダーがロールを引き受けることを許可する信頼関係があることを確認します。前のステップのレスポンスには
AssumeRolePolicyDocumentが含まれ、これはロールの信頼関係を定義します。ロールは、credentials.iot.amazonaws.comが引き受けることを許可する信頼関係を定義する必要があります。このドキュメントは次の例のようになります。ロールの信頼関係で
credentials.iot.amazonaws.comが引き受けることが許可されていない場合、ロールにこの信頼関係を追加する必要があります。詳細については、「AWS Identity and Access Management ユーザーガイド」の「IAM とは」を参照してください。
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
このエラーは、コアデバイスがトークン交換サービスから AWS 認証情報を取得できない場合に表示されることがあります。HTTP 403 ステータスコードは、コアデバイスの AWS IoT ポリシーがコアデバイスの AWS IoT ロールエイリアスのiot:AssumeRoleWithCertificateアクセス許可を付与しないため、このエラーが発生したことを示します。
コアデバイスの AWS IoT ポリシーを確認し、コアデバイスの AWS IoT ロールエイリアスのiot:AssumeRoleWithCertificateアクセス許可を追加します。エラーメッセージには、コアデバイスの現在の 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.setDefaultResultOrder
を 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への依存関係を宣言していることを確認します。宣言していない場合は、依存関係を追加して、コンポーネントを再デプロイします。 -
コンポーネントが
installライフサイクルで AWS 認証情報を使用しているかどうかを確認します。installライフサイクル中のトークン交換サービスの可用性は保証 AWS IoT Greengrass されません。コンポーネントを更新して、 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 はログイン認証情報を保存できません。
次のいずれかのアクションを実行します。
-
wincredDocker 認証情報ヘルパーを使用しない場合、コアデバイスからdocker-credential-wincredプログラムを削除してください。 -
wincredDocker 認証情報ヘルパーを使用する場合、以下の操作を行います。-
コアデバイスの
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 Core ソフトウェアはそのシステムユーザーとしてコンポーネントプロセスを実行できません。
Greengrass システムユーザーのパスワードを更新するには
-
管理者として次のコマンドを実行して、ユーザーのパスワードを設定します。
ggc_userをシステムユーザーに置き換え、passwordを設定するパスワードに置き換えます。net userggc_userpassword -
PsExec ユーティリティ
を使用して、ユーザーの新しいパスワードを LocalSystem アカウントの認証情報マネージャーインスタンスに保存します。 passwordを設定したユーザーのパスワードに置き換えます。psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
ヒント
Windows の構成によっては、ユーザーのパスワードの期限切れが、将来の日付に設定されている場合があります。Greengrass アプリケーションの動作を継続させるためには、パスワードの有効期限を追跡し、その期限が切れる前に更新します。ユーザーのパスワードには、期限切れを起こさないような設定も可能です。
-
ユーザーとパスワードの有効期限を確認するには、次のコマンドを実行します。
net userggc_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 の各コアデバイス上のコンポーネントのステータスを取得します。
をクエリする各コアデバイスの名前に置き換えます。coreDeviceNameaws greengrassv2 list-installed-components --core-device-thing-namecoreDeviceName -
前の手順でインストールした、廃止されたコンポーネントのバージョンのコアデバイスを収集します。
-
次のコマンドを実行し、手順 3 の各コアデバイスに対するすべてのデプロイジョブのステータスを取得します。
をクエリするコアデバイスの名前に置き換えます。coreDeviceNameaws greengrassv2 list-effective-deployments --core-device-thing-namecoreDeviceNameレスポンスには、コアデバイスのデプロイジョブのリストが含まれます。デプロイを修正して別のコンポーネントのバージョンを選択できます。デプロイを修正する方法の詳細については、「デプロイの修正」を参照してください。
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/v2greengrass-cli --ggcRootPath<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface 問題
AWS CLI の問題をトラブルシューティングします AWS IoT Greengrass V2。
Error: Invalid choice: 'greengrassv2'
このエラーは、 AWS CLI (例: ) を使用して AWS IoT Greengrass V2 コマンドを実行すると表示されることがありますaws greengrassv2 list-core-devices。
このエラーは、 がサポート AWS CLI していない のバージョンがあることを示します AWS IoT Greengrass V2。 AWS IoT Greengrass V2 で を使用するには AWS CLI、次のいずれかのバージョン以降が必要です。
-
Minimum AWS CLI V1 バージョン: v1.18.197
-
Minimum AWS CLI V2 バージョン: v2.1.11
ヒント
次のコマンドを実行して、 AWS CLI 使用している のバージョンを確認できます。
aws --version
この問題を解決するには、 を がサポートする新しいバージョン AWS CLI に更新します AWS IoT Greengrass V2。詳細については、「AWS Command Line Interface ユーザーガイド」の「AWS CLIのインストール、更新、およびアンインストール」を参照してください。