トラブルシューティング AWS IoT Greengrass V2 - AWS IoT Greengrass

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

トラブルシューティング 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 ソフトウェアのインストーラーが失敗し、コアデバイスをセットアップできない場合は、ソフトウェアをアンインストールしてやり直す必要がある場合があります。詳細については、「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 デバイスでは、このエラーは通常、コアデバイスにsystemdinit システムがない場合に発生します。インストーラは、システムサービスの設定に失敗した場合でも、 AWS IoT Greengrass コアソフトウェアを正常にセットアップできます。

次のいずれかを行います。

  • 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:Publishiot:Receiveiot:Subscribeの権限を許可する証明書を使用していることを確認してください。

  • コアデバイスが [network proxy] (ネットワークプロキシ)を使用している場合、コアデバイスに [device role] (デバイスロール)があり、そのロールで iot:Connectiot:Publishiot:Receiveiot: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

このエラーは、/tmpnoexecフォルダーが権限付きでマウントされているために 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 を使用する必要がある場合は、次の操作を実行します。

  1. ダウンロードした AWS IoT Greengrass Core インストールアーカイブを解凍します。

  2. Greengrass ディレクトリで、bin/greengrass.xml.template ファイルを開きます。

  3. </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 インストーラーが無効なセッショントークンを使用する場合に表示されることがあります。以下の操作を実行します。

  • 一時的なセキュリティ認証情報を使用する場合は、セッショントークンが正しいこと、および完全なセッショントークンをコピーして貼り付けていることを確認します。

  • 長期的なセキュリティ認証情報を使用する場合は、以前に一時的な認証情報を使用した時点のセッショントークンがデバイスにないことを確認します。以下の操作を実行します。

    1. 次のコマンドを実行して、セッショントークンの環境変数の設定を解除します。

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. 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 コアデバイスのポリシーを確認し、不足している必要な権限を追加してください。詳細については、次を参照してください。

Operation aws.greengrass#<operation> is not supported by Greengrass

このエラーは、カスタム Greengrass コンポーネントでプロセス間通信 (IPC) 操作を使用し、 AWS必須のコンポーネントがコアデバイスにインストールされていない場合に表示されることがあります。

この問題を解決するには、必要なコンポーネントをコンポーネントレシピに依存関係として追加し、 AWS IoT Greengrass コンポーネントのデプロイ時にコアソフトウェアが必要なコンポーネントをインストールするようにします

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 のログにこのエラーが含まれます。

コアデバイスにシークレットのダウンロードを許可するには
  1. コアデバイスのトークン交換ロールに secretsmanager:GetSecretValue アクセス許可を追加します。次に示すポリシーステートメントの例では、シークレットの値を取得するための権限を付与しています。

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }

    詳細については、「コアデバイスが AWS サービスとやり取りできるように認証する」を参照してください。

  2. コアデバイスにデプロイを再適用します。次のいずれかを行います。

    • 変更なしでデプロイを修正します。コアデバイスは、修正されたデプロイを受信すると、シークレットのダウンロードを再試行します。詳細については、「展開の改訂」を参照してください。

    • 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 アクセス許可を追加します。詳細については、次を参照してください。

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以下の操作を実行します。

  1. Greengrass コアデバイスで、次のコマンドを実行して Greengrass Core ソフトウェアを停止します。

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. コアデバイスで、 AWS IoT Greengrass という名前のファイルにソフトウェアをダウンロードします。greengrass-2.12.2.zip

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip -OutFile greengrass-2.12.2.zip
  3. AWS IoT Greengrass Core ソフトウェアをデバイス上のフォルダーに解凍します。GreengrassInstaller使用したいフォルダーに置き換えます。

    Linux or Unix
    unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-2.12.2.zip -C GreengrassInstaller && del greengrass-2.12.2.zip
    PowerShell
    Expand-Archive -Path greengrass-2.12.2.zip -DestinationPath .\\GreengrassInstaller rm greengrass-2.12.2.zip
  4. 次のコマンドを実行して、nucleus バージョン 2.12.3 Greengrass JAR ファイルを nucleus バージョン 2.12.2 Greengrass JAR ファイルでオーバーライドします。

    Linux or Unix
    sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
    Windows Command Prompt (CMD)
    robocopy ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib /E
    PowerShell
    cp -Path ./GreengrassInstaller/lib/Greengrass.jar -Destination /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
  5. 次のコマンドを実行して Greengrass Core ソフトウェアを起動します。

    Linux or Unix
    sudo systemctl start greengrass
    Windows Command Prompt (CMD)
    sc start "greengrass"
    PowerShell
    Start-Service -Name "greengrass"

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

このエラーは、 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

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 Core PATH ソフトウェアが更新されたものを使用しない場合は、デバイスを再起動してやり直してください。詳細については、「AWS IoT Greengrass Core ソフトウェアを実行する」を参照してください。

  • コンポーネントを実行するシステムユーザーの PATH ユーザー変数に実行可能ファイルのフォルダを追加します。

Python スクリプトはメッセージをログに記録しません

Greengrass コアデバイスは、コンポーネントの問題を特定するために使用できるログを収集します。Python スクリプトの stdoutstderr のメッセージがコンポーネントログに表示されない場合、Python でこれらの標準出力ストリームのバッファをフラッシュするか、バッファリングを無効にする必要がある場合があります。次のいずれかを実行します。

  • -u 引数を指定してPythonを実行し、stdoutstderr のバッファリングを無効にします。

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • コンポーネントの recipe で Setenv を使用して、PYTHONUNBUFFERED 環境変数を空でない文字列に設定します。この環境変数は stdoutstderr のバッファリングを無効にします。

  • 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 つ指定します。

Console
パスのリセット
[""]
AWS CLI

次のコマンドは、コアデバイスにデプロイを作成します。

aws greengrassv2 create-deployment --cli-input-json file://reset-configuration-deployment.json

reset-configuration-deployment.json ファイルには、次の JSON ドキュメントが含まれています。

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": {, "reset": [""] } } } }
Greengrass CLI

次の Greengrass CLI コマンドは、コアデバイスにローカルデプロイを作成します。

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.HelloWorld=1.0.0" \ --update-config reset-configuration-deployment.json

reset-configuration-deployment.json ファイルには、次の JSON ドキュメントが含まれています。

{ "com.example.HelloWorld": { "RESET": [""] } }

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 認証情報プロバイダーが引き継ぐことを許可する信頼関係がないため、このエラーが発生したことを示しています。

以下の操作を実行します。

  1. コアデバイスが使用するトークン交換ロールを特定します。エラーメッセージには、 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" } }
  2. ロールが存在することを確認します。次のコマンドを実行し、MyGreengrassV2 TokenExchangeRole をトークン交換ロールの名前に置き換えます。

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    コマンドが NoSuchEntity エラーを返した場合、ロールは存在しないため、作成する必要があります。このロールを作成および設定する方法の詳細については、「コアデバイスが AWS サービスとやり取りできるように認証する」を参照してください。

  3. そのロールに、 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 コンポーネントが認証情報をリクエストしようとして、トークン交換サービスに接続できない場合に表示されることがあります

以下の操作を実行します。

Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"

このエラーは、コンポーネントがトークン交換サービスを実行せず、 AWS コンポーネントが認証情報をリクエストしようとしたときに表示されることがあります。

以下の操作を実行します。

  • コンポーネントがトークン交換サービスコンポーネント aws.greengrass.TokenExchangeService への依存関係を宣言していることを確認します。宣言していない場合は、依存関係を追加して、コンポーネントを再デプロイします。

  • AWS installコンポーネントがそのライフサイクルで認証情報を使用しているかどうかを確認してください。 AWS IoT Greengrass installライフサイクル中のトークン交換サービスの可用性を保証するものではありません。コンポーネントを更新して、 AWS 認証情報を使用するコードを startup または run ライフサイクルに移動してからコンポーネントを再デプロイします。

copyFrom: <configurationPath> is already a container, not a leaf

このエラーは、設定値をコンテナタイプ (リストまたはオブジェクト) から非コンテナタイプ (文字列、数値、またはブール値) に変更したときに表示されることがあります。以下の操作を実行します。

  1. コンポーネントの recipe をチェックして、デフォルト設定で、その設定値がリストまたはオブジェクトに設定されているかどうかを確認します。その場合は、その設定値を削除または変更します。

  2. その設定値をデフォルト値にリセットするデプロイを作成します。詳細については、「デプロイの作成」および「コンポーネント設定の更新」を参照してください。

その後で、その設定値を文字列、数値、またはブール値に設定できます。

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 helper (Docker 認証情報ヘルパー)(docker-credential-wincred) を使用した場合に発生します。その結果、Amazon ECR はログイン認証情報を保存できません。

次のいずれかのアクションを実行します。

  • wincred Docker 認証情報ヘルパーを使用しない場合、コアデバイスから docker-credential-wincred プログラムを削除してください。

  • wincred Docker 認証情報ヘルパーを使用する場合、以下の操作を行います。

    1. コアデバイスの docker-credential-wincred プログラムの名前を変更します。wincred を Windows Docker 認証情報ヘルパーの新しい名前に置き換えます。例えば、名前を docker-credential-wincredreal に変更できます。

    2. 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 システムユーザーのパスワードを更新するには
  1. 管理者として次のコマンドを実行して、ユーザーのパスワードを設定します。ggc_user をシステムユーザーに置き換え、password を設定するパスワードに置き換えます。

    net user ggc_user password
  2. PsExec ユーティリティを使用して、 LocalSystem ユーザーの新しいパスワードをアカウントの Credential Manager インスタンスに保存します。password を設定したユーザーのパスワードに置き換えます。

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password
ヒント

Windows の構成によっては、ユーザーのパスワードの期限切れが、将来の日付に設定されている場合があります。Greengrass アプリケーションの動作を継続させるためには、パスワードの有効期限を追跡し、その期限が切れる前に更新します。ユーザーのパスワードには、期限切れを起こさないような設定も可能です。

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を使用して次の操作を行います。

  1. 次のコマンドを実行し、コアデバイスのリストを取得します。

    aws greengrassv2 list-core-devices
  2. 次のコマンドを実行し、手順 1 の各コアデバイス上のコンポーネントのステータスを取得します。coreDeviceName をクエリする各コアデバイスの名前に置き換えます。

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. 前の手順でインストールした、廃止されたコンポーネントのバージョンのコアデバイスを収集します。

  4. 次のコマンドを実行し、手順 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 /greengrass/v2 <command> <subcommand> [arguments]

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のインストール、更新、およびアンインストール」を参照してください。