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

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

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

このセクションでは、 の問題の解決に役立つトラブルシューティング情報と考えられる解決策を示しています。AWS IoT Greengrass.

の情報については、 AWS IoT Greengrass クォータ(制限)、参照 サービス クォータアマゾン ウェブ サービス全般のリファレンス.

AWS IoT Greengrass Core に関する問題

_が AWS IoT Greengrass コアソフトウェアが起動しません。次の一般的なトラブルシューティング手順を試してください。

以下の症状とエラーを検索して、 の問題のトラブルシューティングに役立つ情報を見つけます。AWS IoT Greengrass コア.

問題

 

エラー 構成ファイルに CaPath、CertPath、または KeyPath がありません。[pid = <pid>]死亡。

解答 このエラーは、 crash.log が AWS IoT Greengrass コアソフトウェアが起動しない。このエラーが発生する場合、v1.6 以前を実行している可能性があります。以下のいずれかの操作を行います。

  • vへのアップグレード1.7 or later。 常に最新バージョンの AWS IoT Greengrass コアソフトウェア。ダウンロード情報については、以下を参照してください。 AWS IoT Greengrass コアソフトウェア.

  • 正しい config.json フォーマットを AWS IoT Greengrass コアソフトウェアバージョン。詳細については、「」を参照してください。AWS IoT Greengrass Core 設定ファイル.

    注記

    コアデバイスにインストールされている AWS IoT Greengrass Core ソフトウェアのバージョンを確認するには、ターミナルデバイスで次のコマンドを実行します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd --version

 

エラー /<greengrass-root>/config/config.json の解析に失敗しました。

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。必ず グリーングラス設定ファイル は有効なJSON形式を使用しています。

オープン config.json ( /greengrass-root/config)、JSON形式を検証します。たとえば、カンマが正しく使用されていることを確認してください。

 

エラー TLS構成の生成中にエラーが発生しました: ErrUnknownURIScheme(エラー不明URIScheme)

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。_のプロパティが 暗号化 Greengrass設定ファイルのセクションは有効です。エラーメッセージに詳細が説明されています。

オープン config.json ( /greengrass-root/config)、および crypto セクション。たとえば、証明書とキーのパスは正しい URI 形式を使用し、正しい場所を参照している必要があります。

 

エラー ランタイムの開始に失敗しました: ワーカーを開始できません: コンテナテストがタイムアウトしました。

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。設定 postStartHealthCheckTimeout プロパティを グリーングラス設定ファイル. このオプションのプロパティは、ヘルスチェックが開始してから終了するまで Greengrass デーモンが待機する時間 (ミリ秒単位) を設定します。デフォルト値は 30 秒 (30000 ミリ秒) です。

オープン config.json ( /greengrass-root/config)。の runtime ]オブジェクトで、 postStartHealthCheckTimeout プロパティを右クリックして、値を30000より大きい数値に設定します。有効な JSON ドキュメントを作成するために必要な場所にカンマを追加します。たとえば、 と指定します。

... "runtime" : { "cgroup" : { "useSystemd" : "yes" }, "postStartHealthCheckTimeout" : 40000 }, ...

 

エラー ローカルの Cloudwatch で PutLogEvents を起動できませんでした。logGroup: /GreengrassSystem/connection_manager、エラー: RequestError:次の原因でリクエストの送信に失敗しました: 投稿http://<path>/cloudwatch/logs/: tcpをダイヤル <address>: getsockopt: 接続が拒否されました。応答: { }。

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。このエラーが発生する場合、Raspberry Pi で AWS IoT Greengrass を実行していて、必要なメモリの設定が完了していない可能性があります。詳細については、以下を参照してください。 このステップ.

 

エラー 次の理由でサーバーを作成できません: グループの読み込みに失敗しました: chmod /<greengrass-root>/ggc/deployment/lambda/arn:aws:ラムダ:<region>:<account-id>:function:<function-name>:<version>/<file-name>: そのようなファイルまたはディレクトリはありません。

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。をデプロイした場合 Lambda 実行ファイル コアに送り、関数の Handler プロパティを group.json ファイル (/ に配置)greengrass-root/ggc/デプロイ/グループ)。ハンドラがコンパイルされた実行可能ファイルの正確な名前でない場合は、 group.json 空のJSONオブジェクト({})、次のコマンドを実行して起動します。 AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

次に、 AWS Lambda API(API) 機能構成の handler パラメーターを使用して、新しい関数バージョンを発行し、エイリアスを更新します。詳細については、以下を参照してください。 AWS Lambda 関数のバージョン管理とエイリアス.

Greengrass グループにエイリアスで関数を追加したと想定すると (推奨)、これでグループを再デプロイできるようになります。(そうでない場合は、グループをデプロイする前に、グループ定義とサブスクリプションで新しい関数バージョンあるいはエイリアスを指定する必要があります。)

 

コンテナ化なしの実行から Greengrass コンテナでの実行に変更した後、AWS IoT Greengrass Core ソフトウェアが起動しない。

解答 コンテナの依存関係が欠落していないことを確認します。

 

エラー スプールのサイズは262144バイト以上である必要があります。

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。を開きます。 group.json ファイル( /greengrass-root/ggc/deployment/group)、ファイルの内容を空のJSONオブジェクト({})、次のコマンドを実行して起動します。 AWS IoT Greengrass:

cd /greengrass/ggc/core/ sudo ./greengrassd start

次に、「ローカルストレージでメッセージをキャッシュするには」のステップに従います。について GGCloudSpooler 機能を使用する場合は、 GG_CONFIG_MAX_SIZE_BYTES 262144以上の値。

 

エラー [ERROR]-クラウドメッセージングエラー: メッセージの公開中にエラーが発生しました。 {"errorString": "操作がタイムアウトしました"}

解答 このエラーは、 GGCloudSpooler.log グリーングラスコアがMQTTメッセージを AWS IoT Core. これは、コア環境の帯域幅が制限され、待ち時間が長くなる場合に発生します。実行している場合 AWS IoT Greengrass v1.10.2 以降では、 mqttOperationTimeout 値( config.json(構成.json) ファイル。このプロパティが存在しない場合は、coreThing オブジェクトに追加します。たとえば、 と指定します。

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

デフォルト値は です。 5 最小値は 5.

 

エラー: container_linux.go:344: コンテナ処理の開始により、"process_linux.go:424: コンテナ初期化により、\"rootfs_linux.go:64: rootfs/ggc/socket/greengrass_ipc.sock\\\"がrootfs \\/ggc/packages/<version>/rootfs/merged\\\"at \\\"/greengrass_ipc.sock\\\"は、\\\"stat /ggc/socket/greengrass_ipc.sock: permission denied\\\"を引き起こしました。

解答 このエラーは、 runtime.log が AWS IoT Greengrass コアソフトウェアが起動しない。これは、 umask は次より高くなっています: 0022。 この問題を解決するには、 umask から 0022 以下。値 0022 では、デフォルトで新しいファイルに対する読み取りアクセス許可がすべてのユーザーに付与されます。

 

エラー PID: <process-id> で実行中のグリーングラス デーモン。Some system components failed to start. Check 'runtime.log' for errors.

解答 このエラーは、 AWS IoT Greengrass コアソフトウェアが起動しない。確認 runtime.log および crash.log 特定のエラー情報については、 を参照してください。詳細については、「」を参照してください。ログでのトラブルシューティング.

 

デバイスのシャドウがクラウドと同期していない。

解答 必ず AWS IoT Greengrass の権限があります iot:UpdateThingShadow および iot:GetThingShadow のアクション グリーングラスサービスの役割. サービスロールで AWSGreengrassResourceAccessRolePolicy 管理ポリシーを使用している場合は、これらのアクセス許可はデフォルトで含まれています。

」を参照してください)。シャドウ同期タイムアウト問題のトラブルシューティング.

 

次のエラーが発生する。unable to accept TCP connection. accept tcp [::]:8000: accept4: too many open files.

解答 このエラーは、 greengrassd スクリプト出力。このエラーが発生する場合、AWS IoT Greengrass Core ソフトウェアのファイル記述子の制限がしきい値に達している可能性があります。その制限を引き上げる必要があります。

以下のコマンドを使用して AWS IoT Greengrass Core ソフトウェアを再起動します。

ulimit -n 2048
注記

この例では、制限を 2048 に引き上げています。ユースケースに適した値を選択してください。

 

エラー ランタイム実行エラー: lambdaコンテナを開始できません。container_linux.go:259: コンテナプロセスの開始により "process_linux.go:345: コンテナ初期化により \"rootfs_linux.go:50: rootfs の準備により \\\"permission denied\\\"\"が発生しました。

解答 いずれかのインストール AWS IoT Greengrass ルートディレクトリのすぐ下にあるか、または AWS IoT Greengrass コアソフトウェアがインストールされ、親ディレクトリに execute 許可を得ます。

 

警告 [WARN]-[5]GKリモート: 公開鍵データの取得中にエラーが発生しました: ErrPrincipalNotConfigured: MqtCertificate の秘密キーが設定されていません。

ソリューション: AWS IoT Greengrass は、すべてのセキュリティ プリンシパルのプロパティを検証するために、共通ハンドラを使用します。この警告は runtime.log ローカル MQTT サーバーのカスタム秘密キーを指定しない限り、 が予期されます。詳細については、「」を参照してください。AWS IoT Greengrass Core セキュリティプリンシパル.

 

エラー ロールの使用時に許可が拒否されました arn:aws:iam::<account-id>:role/<role-name> で s3 URL https://< にアクセスします。region>-グリーングラス-updates.s3.<region>.amazonaws.com/core/<architecture>/greengrass-core-<distribution-version>.tar.gz。

解答 無線(OTA)アップデートに失敗すると、このエラーが表示されることがあります。署名者の役割ポリシーで、ターゲットAWS地域を Resource。 この署名者の役割は、 AWS IoT Greengrass ソフトウェアの更新。詳細については、以下を参照してください。 S3 URL 署名者の役割.

 

は、 AWS IoT Greengrass コア は、 ネットワーク プロキシ そして Lambda 関数は発信接続を作成できません。

解答 実行時と、 Lambda 接続を作成する機能では、接続タイムアウト エラーが発生する場合もあります。必ず Lambda 機能は、適切なプロキシ構成を使用して、ネットワーク プロキシ経由で接続します。 AWS IoT Greengrass プロキシ構成をユーザー定義の Lambda 機能には、 http_proxyhttps_proxy、および no_proxy 環境変数。これらの変数には、以下の Python スニペットに示す方法でアクセスできます。

import os print(os.environ['http_proxy'])

環境内で定義された変数と同じケースを使用します(例:すべて小文字) http_proxy またはすべて大文字 HTTP_PROXY。 これらの変数については、 AWS IoT Greengrass 両方をサポートします。

注記

接続を行うために使用されるほとんどの共通ライブラリ (boto3 や cURL など、および python requests パッケージ) は、デフォルトでこれらの環境変数を使用します。

 

このコアは、無限の接続 - 切断ループにあります。runtime.log ファイルには、継続的な一連の接続と切断のエントリが含まれています。

解答 これは、 への MQTT 接続用に別のデバイスがクライアント ID をコアのモノ名を使用するようにハードコードされている場合に発生します。AWS IoT. 同じ AWS リージョンと AWS アカウントの同時接続では、一意のクライアント ID を使用する必要があります。デフォルトでは、コアは上記の接続にコアのモノ名をクライアント ID として使用します。

この問題を解結するには、他のデバイスが接続用に使用するクライアント ID を変更するか、またはコアのデフォルトの値を上書きできます。

コアデバイスのデフォルトのクライアント ID を上書きするには

  1. 次のコマンドを実行して Greengrass デーモンを停止します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. greengrass-root/config/config.json を編集するために su ユーザーとして開きます。

  3. coreThing ]オブジェクトで、 coreClientId プロパティを右クリックして、値をカスタム クライアントIDに設定します。値は 1 ~ 128 文字で指定します。この値は AWS アカウントの現在の AWS リージョンで一意であることが必要です。

    "coreClientId": "MyCustomClientId"
  4. デーモンを開始します。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

次のエラーが発生する。unable to start lambda container. container_linux.go:259: starting container process caused "process_linux.go:345: container init caused \"rootfs_linux.go:62: mounting \\\"proc\\\" to rootfs \\\"

解答 一部のプラットフォームでは、このエラーが runtime.log いつ AWS IoT Greengrass は をマウントしようとしました /proc ファイル システムを使用して、 Lambda コンテナ。または、次のような同様のエラーが表示される場合があります。 operation not permitted または EPERM。 これらのエラーは、依存関係チェッカ スクリプト パスによってプラットフォームでテストが実行されても発生します。

以下のいずれかの解決策を試してください。

  • Linux カーネルで CONFIG_DEVPTS_MULTIPLE_INSTANCES オプションを有効にします。

  • 設定 /proc ホスト上のマウント オプションを rw,relatim のみ。

  • Linux カーネルを 4.9 以降にアップグレードします。

注記

この問題は、ローカルリソースアクセスの /proc マウントに関連していません。

 

[ERROR]-runtime execution error: lambda container を開始できません。"エラー文字列": "コンテナマウントの初期化に失敗しました。オーバーレイの上部ディレクトリでグリーングラスルートのマスクに失敗しました。: ディレクトリ <gc-path> でマスクデバイスの作成に失敗しました。: ファイルが存在します。"}

解答 導入に失敗すると、このエラーがruntime.logに表示されることがあります。このエラーは、 Lambda の関数 AWS IoT Greengrass グループは /usr ディレクトリの参照先となります。

この問題を解決するには、ローカルボリュームリソースをグループに追加し、グループをデプロイします。このリソースは次の条件を満たす必要があります。

  • 具体的に記入してください /usrソースパス および 宛先パス.

  • リソースを所有する Linux グループの OS グループアクセス許可を自動的に追加する

  • 所属先 Lambda 機能と読み取り専用アクセスの許可。

 

[ERROR]-Deployment failed. {"deploymentId": "<deployment-id>"、"errorString": "pid <pid> 失敗: コンテナプロセス状態: 終了ステータス 1"}

解答 導入に失敗すると、このエラーがruntime.logに表示されることがあります。このエラーは、 Lambda の関数 AWS IoT Greengrass グループは /usr ディレクトリの参照先となります。

この場合は、 GGCanary.log 追加エラー。_が Lambda 関数は /usr ディレクトリ、 GGCanary.log には、次のエラーが含まれます。

[ERROR]-standard_init_linux.go:207: exec user process caused "no such file or directory"

この問題を解決するには、ローカルボリュームリソースをグループに追加し、グループをデプロイします。このリソースは次の条件を満たす必要があります。

  • 具体的に記入してください /usrソースパス および 宛先パス.

  • リソースを所有する Linux グループの OS グループアクセス許可を自動的に追加する

  • 所属先 Lambda 機能と読み取り専用アクセスの許可。

 

解答 このエラーは、 runtime.log が AWS IoT Greengrass コアソフトウェアが起動せず、Linuxカーネルバージョンが4.19.57以前である。この問題は、Debian オペレーティングシステムで生じやすい問題です。

この問題を解決するには、次のいずれかを実行します。

  • 実行している場合 AWS IoT Greengrass コアソフトウェアv1.9.3以降、 system.useOverlayWithTmpfs プロパティから config.json(構成.json)、値 を に設定します。 true。 例:

    { "system": { "useOverlayWithTmpfs": true }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }
  • 実行している場合 AWS IoT Greengrass Raspberry Piのコアソフトウェアv1.9.2以前、更新先 AWS IoT Greengrass コアソフトウェアv1.9.3以降。 ソフトウェアの無線更新については、「AWS IoT Greengrass」を参照してください。AWS IoT Greengrass Core ソフトウェアの OTA 更新.

  • デバイス上の Linux カーネルをアップグレードします。バージョン 4.4 以降をお勧めします。

注記

あなたの AWS IoT Greengrass コアソフトウェアのバージョンがエラーメッセージに表示されます。Linux カーネルのバージョンを確認するには、 を実行します。uname -r.

 

エラー [DEBUG]- ルートの取得に失敗しました。メッセージを破棄します。

解答 グループ内の月額プランをチェックし、 [DEBUG] メッセージが存在します。

 

エラー [Errno 24] 開いている<lambda-function>が多すぎます、[Errno 24] 開いているファイルが多すぎます

解答 このエラーは、 Lambda 関数がインスタンス化される場合、関数ログファイル StreamManagerClient ファンクション・ハンドラ内の ハンドラの外部にクライアントを作成することをお勧めします。詳細については、「」を参照してください。使用 StreamManagerClient ストリームとの共同作業を.

 

デプロイに関する問題

以下の情報は、デプロイの問題のトラブルシューティングに役立ちます。

問題

 

現在のデプロイは機能せず、以前の正常なデプロイに戻す必要があります。

解答 _を使用 AWS IoT コンソール または AWS IoT Greengrass 前の作業中のデプロイを再デプロイするためのAPI。これにより、対応するグループバージョンが Core デバイスにデプロイされます。

デプロイを再デプロイするには (コンソール)

  1. グループ構成ページで、 展開. このページには、日付と時刻、グループバージョン、各デプロイ試行のステータスなど、グループのデプロイ履歴が表示されます。

  2. 再デプロイするデプロイが含まれている行を見つけます。の ステータス 列で、省略記号 ()を選択し、次に 再配置.

    デプロイの [再デプロイ] アクションを示す [デプロイ] ページ。

デプロイを再デプロイするには (CLI)

  1. 使用 リスト配置 再デプロイするデプロイのIDを検索します。たとえば、 と指定します。

    aws greengrass list-deployments --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7

    このコマンドは、グループのデプロイのリストを返します。

    { "Deployments": [ { "DeploymentId": "8d179428-f617-4a77-8a0c-3d61fb8446a6", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2:123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/8dd1d899-4ac9-4f5d-afe4-22de086efc62", "CreatedAt": "2019-07-01T20:56:49.641Z" }, { "DeploymentId": "f8e4c455-8ac4-453a-8252-512dc3e9c596", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/4ad66e5d-3808-446b-940a-b1a788898382", "CreatedAt": "2019-07-01T20:41:47.048Z" }, { "DeploymentId": "e4aca044-bbd8-41b4-b697-930ca7c40f3e", "DeploymentType": "NewDeployment", "GroupArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/versions/1f3870b6-850e-4c97-8018-c872e17b235b", "CreatedAt": "2019-06-18T15:16:02.965Z" } ] }
    注記

    これらの AWS CLI コマンドでは、グループとデプロイ ID の値の例を使用します。コマンドを実行するときは、サンプル値を置き換えてください。

  2. 使用 展開を作成 ターゲットの配置を再配置します。配布タイプを に設定します。 Redeployment。 例:

    aws greengrass create-deployment --deployment-type Redeployment \ --group-id 74d0b623-c2f2-4cad-9acc-ef92f61fcaf7 \ --deployment-id f8e4c455-8ac4-453a-8252-512dc3e9c596

    コマンドは、新しいデプロイの ARN と ID を返します。

    { "DeploymentId": "f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2", "DeploymentArn": "arn:aws:greengrass:us-west-2::123456789012:/greengrass/groups/74d0b623-c2f2-4cad-9acc-ef92f61fcaf7/deployments/f9ed02b7-c28e-4df6-83b1-e9553ddd0fc2" }
  3. 使用 展開ステータスを取得 デプロイのステータスを取得します。

 

デプロイに関する 403 Forbidden エラーがログに表示される。

解答 必ず、 AWS IoT Greengrass コア クラウドには、 "greengrass:*" 許可するアクションとして

 

create-deployment コマンドを初めて実行すると、ConcurrentDeployment エラーが発生する。

解答 デプロイが進行中である可能性があります。実行できるのは 導入ステータスの取得 展開が作成されたかどうかを確認します。作成済みでない場合は、デプロイを作成し直します。

 

エラー Greengrassは、このアカウントに関連付けられたサービス役割を引き受ける権限を持っていません。または、次のエラーがあります。Failed (失敗) TESサービスの役割はこのアカウントに関連付けられていません。

解答 展開に失敗すると、このエラーが表示されることがあります。Greengrassサービスの役割が AWS 現在のアカウント AWS 地域。詳細については、以下を参照してください。 Greengrass サービスロールの管理 (CLI) または Greengrass サービスロールの管理 (コンソール).

 

エラー: デプロイのダウンロードステップを実行できません。ダウンロード中のエラー: グループ定義ファイルのダウンロード中のエラー: ... x509: 証明書の有効期限が切れているか、まだ有効ではありません

解答 このエラーは、 runtime.log 展開に失敗した場合。通知を受け取った場合、 Deployment failed メッセージを含むエラー x509: certificate has expired or is not yet valid、デバイスのクロックを確認してください。TLS 証明書と X.509 証明書は、IoT システムを構築するための安全な基盤を提供しますが、サーバーとクライアントでの正確な時間を必要とします。IoT デバイスは、サーバー証明書を使用する AWS IoT Greengrass や他の TLS サービスへの接続を試行する前に、正しい時間 (15 分以内) を必要とします。詳細については、以下を参照してください。 デバイス時間を使用して AWS IoT サーバー証明書を検証する オン AWS上のモノのインターネットの公式ブログ.

 

エラー 署名の検証中にエラーが発生しました。リポジトリは更新されず、以前のインデックスファイルが使用されます。GPGエラー: https://dnw9lb6lzp2d8.cloudfront.net stable InRelease: 公開キーが使用できないため、次の署名を検証できませんでした: NO_PUBKEY 68D644ABDEXAMPLE(ダクタ・アンプル)

解答 このエラーは、 AWS IoT Greengrass が見つからないか、期限切れか、無効です。この問題を解決するには、キーリングパッケージをインストールします。

wget -O aws-iot-greengrass-keyring.deb https://d1onfpft10uf5o.cloudfront.net/greengrass-apt/downloads/aws-iot-greengrass-keyring.deb sudo dpkg -i aws-iot-greengrass-keyring.deb

詳細については、「」を参照してください。apt を使用した AWS IoT Greengrass Core ソフトウェアのインストール.

 

デプロイが完了しない。

解答 次の作業を行います。

  • コアデバイスで AWS IoT Greengrass デーモンが実行されていることを確認します。コアデバイスのターミナルで以下のコマンドを実行し、デーモンが実行されているかどうかを確認します。必要ならばデーモンを起動します。

    1. デーモンが実行中であるかどうかを確認するには

      ps aux | grep -E 'greengrass.*daemon'

      出力に root/greengrass/ggc/packages/1.11.0/bin/daemon エントリが含まれる場合、デーモンは実行されています。

      パスのバージョンは、コアデバイスにインストールされている AWS IoT Greengrass Core ソフトウェアのバージョンによって異なります。

    2. デーモンを開始するには:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  • Core デバイスが接続され Core 接続エンドポイントが適切に設定されていることを確認します。

 

エラー java または java8 実行可能ファイルが見つかりません。またはエラー: グループ <group-id> 用の新しい配置タイプ <deployment-id> の配備エラー: <worker-id> のワーカーは、インストール済み Java バージョンが 8 以上である理由による初期化に失敗しました

解答 ストリームマネージャが AWS IoT Greengrass コアグループをデプロイする前に、コアデバイスにJava 8ランタイムをインストールする必要があります。詳細については、 要件 ストリームマネージャ用。ストリームマネージャは、 デフォルトのグループ作成 のワークフロー AWS IoT コンソール グループを作成します。

または、ストリームマネージャーを無効にしてから、グループをデプロイします。詳細については、「」を参照してください。ストリームマネージャーの設定 (コンソール).

 

デプロイが完了せず、runtime.log に複数の「wait 1s for container to stop」エントリが含まれる。

解答 コアデバイスのターミナルで以下のコマンドを実行して、AWS IoT Greengrass デーモンを再起動します。

cd /greengrass/ggc/core/ sudo ./greengrassd stop sudo ./greengrassd start

 

展開が完了しず、 runtime.log "[ERROR]-Greengrass デプロイメントエラー: デプロイメントステータスをクラウドにレポートできませんでした {"deploymentId": "<deployment-id>"、"errorString": "PUT の開始に失敗しました。エンドポイント: https://<deployment-status>、エラー: https://<deployment-status>: proxyconnect tcp: x509: unknown authority によって署名された証明書\ を入力します。"}

解答 このエラーは、 runtime.log Greengrass コアが HTTPS プロキシ接続を使用するように構成されていて、プロキシ サーバー証明書チェーンがシステムで信頼されていない場合。この問題を解決するには、ルート CA 証明書に証明書チェーンを追加します。Greengrass コアは、 との HTTPS および MQTT 接続で TLS 認証に使用される証明書プールに、このファイルの証明書を追加します。AWS IoT Greengrass.

次の例は、ルート CA 証明書ファイルに追加されたプロキシサーバー CA 証明書を示しています。

# My proxy CA -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- # Amazon Root CA 1 -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

デフォルトでは、ルートCA証明書ファイルは /greengrass-root/certs/root.ca.pem。 コアデバイス上の場所を見つけるには、 crypto.caPath のプロパティ config.json(構成.json).

注記

greengrass-root は、デバイスで AWS IoT Greengrass Core ソフトウェアがインストールされているパスを表します。通常、これは /greengrass ディレクトリです。

 

エラー グループ <group-id> の配備 <deployment-id> (タイプ NewDeployment) に失敗しました。エラー: 処理中にエラーが発生しました。グループ構成が無効です: 112 または [119 0] ファイルに rw 権限がありません: <path>。

解答 のオーナーグループが <path> ディレクトリには、そのディレクトリに対する読み取りおよび書き込み権限があります。

 

次のエラーが発生する。<list-of-function-arns> are configured to run as root but Greengrass is not configured to run Lambda functions with root permissions.

解答 このエラーは、 runtime.log 展開に失敗した場合。構成済みであることを確認します。 AWS IoT Greengrass 許可する Lambda root権限で実行する機能です。次の値を変更します。 allowFunctionsToRunAsRoot () greengrass_root/config/config.json から yes または Lambda 関数を他のユーザー/グループとして実行します。詳細については、「」を参照してください。root としての Lambda 関数の実行.

 

エラー グループ <group-id> の配備 <deployment-id> (タイプ NewDeployment) に失敗しました。エラー: Greengrass 配布エラー: 配布でダウンロード手順を実行できません。処理中エラー: ダウンロードされたグループファイルを読み込むことができません: ユーザー名、ユーザー名: ggc_user: user: unknown user ggc_user に基づいて UID が見つかりませんでした。

解答 _が デフォルトのアクセスID の AWS IoT Greengrass グループ 標準システムアカウントを使用します。 ggc_user ユーザーと ggc_group グループがデバイスに存在する必要があります。ユーザーとグループの追加方法を示す手順については、以下を参照してください。 ステップ. 表示されているとおりに正確に名前を入力してください。

 

エラー [ERROR]-runtime execution error: lambda container を開始できません。"エラー文字列": "コンテナマウントの初期化に失敗しました。オーバーレイの上部ディレクトリでグリーングラスルートのマスクに失敗しました。: ディレクトリ <gc-path> でマスクデバイスの作成に失敗しました。: ファイルが存在します。"}

解答 このエラーは、 runtime.log 展開に失敗した場合。このエラーは、 Lambda Greengrassグループの機能では、 /usr ディレクトリの参照先となります。この問題を解決するには、 ローカル ボリューム リソース グループに送信し、グループをデプロイします。リソースは次の条件を満たす必要があります。

  • 具体的に記入してください /usrソースパス および 宛先パス.

  • リソースを所有する Linux グループの OS グループアクセス許可を自動的に追加する

  • 所属先 Lambda 機能と読み取り専用アクセスの許可。

 

エラー グループ <group-id> 用のタイプ NewDeployment の配備 <deployment-id> に失敗しました。エラー: プロセスの開始に失敗しました: container_linux.go:259: コンテナプロセスの開始により "process_linux.go:250: init の Exec setns プロセスの実行により、\"wait: no child process\"が発生しました。

解答 展開に失敗すると、このエラーが表示されることがあります。デプロイを再試行します。

 

エラー [WARN]-MQTT[client] ダイアル tcp: lookup <host-prefix>-ats.iot.<region>.amazonaws.com: そのようなホストはありません... [ERROR]-Greengrass デプロイメントエラー: デプロイメントステータスをクラウドへ戻すレポートに失敗しました...net/http: 接続を待っている間にリクエストがキャンセルされました(Client.Timeoutがヘッダーを待っている間に超過しました)

解答 このエラーは、 systemd-resolved。これにより、 DNSSEC デフォルトで設定されています。その結果、多くのパブリックドメインは認識されません。への到達を試みる AWS IoT Greengrass エンドポイントがホストを検出できなかったため、デプロイは In Progress 状態。

この問題をテストするには、次のコマンドと出力を使用できます。エンドポイントの リージョン プレースホルダーを AWS リージョンに置き換えます。

$ ping greengrass-ats.iot.リージョン.amazonaws.com ping: greengrass-ats.iot.リージョン.amazonaws.com: Name or service not known
$ systemd-resolve greengrass-ats.iot.リージョン.amazonaws.com greengrass-ats.iot.リージョン.amazonaws.com: resolve call failed: DNSSEC validation failed: failed-auxiliary

考えられる解決策の1つは、 DNSSEC。 いつ DNSSEC はです false、DNS ルックアップは DNSSEC 検証済み。詳細については、以下を参照してください。 既知の問題systemd.

  1. 追加 DNSSEC=false から /etc/systemd/resolved.conf.

  2. Restartsystemd-resolved.

詳細情報 resolved.conf および DNSSEC、実行 man resolved.conf ターミナルで。

 

グループの作成と関数の作成に関する問題

次の情報を使用して、 の作成に関する問題のトラブルシューティングに役立てることができます。 AWS IoT Greengrass グループ または Greengrass Lambda 関数。

 

エラー グループの'IsolationMode'構成が無効です。

解答 このエラーは、 IsolationMode 値( DefaultConfig / function-definition-version はサポートされていません。サポートされる値は次のとおりです。 GreengrassContainer および NoContainer.

 

エラー arn <function-arn>を持つ関数の'IsolationMode'設定が無効です。

解答 このエラーは、 IsolationMode の <function-arn> の値 function-definition-version はサポートされていません。サポートされる値は次のとおりです。 GreengrassContainer および NoContainer.

 

エラー arn <function-arn> を持つ関数の MemorySize コンフィグレーションは、IsolationMode=NoContainer では使用できません。

解答 このエラーは、 MemorySize コンテナ化なしで実行することを選択します。 Lambda コンテナ化なしで実行される関数には、メモリ制限を設定できません。制限を削除するか、 Lambda 実行する機能 AWS IoT Greengrass コンテナ。

 

エラー IsolationMode=NoContainerでは、arn <function-arn>の機能のSysfs構成にアクセスできません。

解答 このエラーは、 trueAccessSysfs コンテナ化せずに実行することを選択します。 Lambda コンテナ化なしで実行される関数は、ファイル システムに直接アクセスするためにコードを更新する必要があり、 AccessSysfs。 次の値を指定できます。 falseAccessSysfs または、 Lambda 実行する機能 AWS IoT Greengrass コンテナ。

 

エラー IsolationMode=GreengrassContainer では、arn <function-arn> 機能用の MemorySize 設定が必要です。

解答 このエラーは、 MemorySize の限度 Lambda 実行している関数を AWS IoT Greengrass コンテナ。エラーを解決するには MemorySize の値を指定します。

 

エラー 関数 <function-arn> は、IsolationMode=NoContainer で許可されていないタイプ <resource-type> のリソースを指します。

解答 アクセスできません Local.DeviceLocal.VolumeML_Model.SageMaker.JobML_Model.S3_Object、または S3_Object.Generic_Archive リソース タイプ( Lambda コンテナ化なしで機能します。これらのリソースタイプが必要な場合は、AWS IoT Greengrass コンテナで実行する必要があります。コンテナ化を使用しないで実行する場合は、Lambda 関数のコードを変更して、ローカルデバイスに直接アクセスすることもできます。

 

エラー arn <function-arn>を持つ関数の実行構成は許可されていません。

解答 このエラーは、システムの作成時に発生します。 Lambda 機能 GGIPDetector または GGCloudSpooler および を指定した IsolationMode または RunAs 構成。を省略する必要があります Execution このシステムのパラメータ Lambda 関数。

 

検出の問題

次の情報を使用して、 AWS IoT Greengrass Discovery サービス。

 

エラー デバイスは、多すぎるグループのメンバです。デバイスは、10グループを超えてはなりません

解答 これは既知の制限です。A グリーングラスデバイス は最大10のグループのメンバーになることができます。

 

機械学習リソースの問題

次の情報を使用して、機械学習リソースの問題のトラブルシューティングに役立ててください。

 

InvalidMLModelOwner - GroupOwnerSetting は ML モデルリソースに提供されていますが、GroupOwner または GroupPermission がありません

解決策 : このエラーは、機械学習リソースに ResourceDownloadOwnerSetting オブジェクトが含まれていても、必須 GroupOwner または GroupPermission プロパティが定義されていない場合に表示されます。この問題を解決するには、不足しているプロパティを定義します。

 

NoContainer 関数は、機械学習リソースをアタッチするときにアクセス権限を設定できません。<function-arn> は、リソースアクセスポリシーでアクセス権限 <ro/rw> を持つ機械学習リソース <resource-id> を参照します。

解決策 : コンテナ化されていない Lambda 関数が機械学習リソースに対する関数レベルのアクセス権限を指定した場合、このエラーが表示されます。コンテナ化されていない関数は、機械学習リソースに定義されているリソース所有者のアクセス権限からアクセス権限を継承する必要があります。この問題を解決するには、リソース所有者のアクセス権限を継承する (コンソール) または、Lambda 関数のリソースアクセスポリシーからアクセス権限を削除する (API) かを選択します。

 

関数 <function-arn> は、ResourceAccessPolicy と resource OwnerSetting の両方でアクセス権限がない機械学習リソース <resource-id> を参照します。

解決策 : このエラーは、機械学習リソースへのアクセス権限が、アタッチされた Lambda 関数またはリソースに対して設定されていない場合に表示されます。この問題を解決するには、Lambda 関数の ResourceAccessPolicy プロパティまたはリソースの OwnerSetting プロパティでアクセス権限を設定します。

 

関数 <function-arn> は、権限 \「rw\」の機械学習リソース <resource-id> を参照し、リソース所有者設定 GroupPermission は \「ro\」のみを許可します。

解決策 : このエラーは、アタッチされた Lambda 関数に定義されたアクセス権限が、機械学習リソースに対して定義されたリソース所有者のアクセス権限を超えた場合に表示されます。この問題を解決するには、Lambda 関数に対して制限のより厳しいアクセス権限を設定するか、リソース所有者の制限がより低いアクセス権限を設定します。

 

NoContainer 関数 <function-arn> は、ネストされた送信先パスのリソースを参照します。

解決策 : コンテナ化されていない Lambda 関数にアタッチされた複数の機械学習リソースが同じ送信先パスまたはネストされた送信先パスを使用している場合に、このエラーが表示されます。この問題を解決するには、リソースに別の送信先パスを指定します。

 

Lambda <function-arn> は、同じグループ所有者 ID を共有することでリソース <resource-id> にアクセスします。

解決策 : 同じ OS グループが Lambda 関数の ID として実行、および機械学習リソースのリソース所有者として指定されているが、リソースが Lambda 関数にアタッチされていない場合に、runtime.log でこのエラーが表示されます。この設定では、Lambda 関数に暗黙のアクセス権限が付与されます。このアクセス権限は、AWS IoT Greengrass 認証なしでリソースにアクセスするために使用できます。

この問題を解決するには、プロパティの 1 つに別の OS グループを使用するか、機械学習リソースを Lambda 関数にアタッチします。

AWS IoT GreengrassDocker での Core に関する問題

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

 

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

ソリューション このエラーは、 aws ecr get-login コマンド。最新の AWS CLI バージョンがインストールされていることを確認します (たとえば、pip install awscli --upgrade --user を実行します)。Windows を使用していて、MSI インストーラを使用して CLI をインストールした場合、インストールプロセスを繰り返す必要があります。詳細については、以下を参照してください。 のインストール AWS Command Line Interface Microsoft Windows の場合AWS Command Line Interface ユーザーガイド.

 

警告 IPv4 は無効になっています。ネットワークは機能しません。

ソリューション 実行中に、この警告または同様のメッセージが表示される場合があります。 AWS IoT Greengrass Linuxコンピュータで。このステップで説明しているように、IPv4 ネットワーク転送を有効にします。IPv4 転送が有効ではない場合、AWS IoT Greengrass クラウドデプロイと MQTT 通信は機能しません。詳細については、Docker ドキュメントの「Configure namespaced kernel parameters (sysctls) at runtime」を参照してください。

 

エラー ファイアウォールは、Windowsとコンテナ間のファイル共有をブロックしています。

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

 

エラー GetAuthorizationToken 操作の呼び出し中にエラーが発生しました (AccessDeniedException)。ユーザー: arn:aws:iam::<account-id>:user/<user-name> は、次の実行権限がありません: ecr:GetAuthorizationToken on resource:*

このエラーは、 aws ecr get-login-password コマンドで、 にアクセスするのに十分な権限がない場合、 Amazon ECR リポジトリです。詳細については、以下を参照してください。 Amazon ECR リポジトリ ポリシーの例 および アクセスする Amazon ECR リポジトリAmazon ECR ユーザーガイド.

 

エラー サービス greengrass のコンテナを作成できません: Conflict. The container name "/aws-iot-greengrass" is already in use.

解答 これは、古いコンテナでコンテナ名が使用されている場合に表示される場合があります。この問題を解決するには、以下のコマンドを実行して古い Docker コンテナを削除します。

docker rm -f $(docker ps -a -q -f "name=aws-iot-greengrass")

 

エラー [FATAL]-予期しないエラーによりスレッドのマウント名空間をリセットできませんでした: 「操作は許可されていません」。整合性を維持するには、GGC がクラッシュするため手動で再起動する必要があります。

解答 このエラーは runtime.log は、 GreengrassContainer Lambda 関数を AWS IoT Greengrass コア Dockerコンテナで実行しています。現在は、 NoContainer Lambda 関数は、Greengrass Dockerコンテナにデプロイできます。

この問題を解決するには、 必ずすべての Lambda 関数は NoContainer モード 新しい展開を開始します。次に、コンテナを起動する際、既存の deployment ディレクトリを AWS IoT Greengrass コア Dockerコンテナ。代わりに、空の deployment ディレクトリを所定の場所に作成して、Docker コンテナでそのディレクトリをバインドマウントします。これにより、新しいDockerコンテナは、 Lambda で実行される関数 NoContainer モード。

詳細については、「」を参照してください。Docker コンテナでの AWS IoT Greengrass の実行.

ログでのトラブルシューティング

Greengrass グループのログ設定を構成できます。ログを CloudWatch Logs 送信する、ログをローカルファイルシステムに保存する、またはその両方などです。問題のトラブルシューティング時に詳細情報を取得するには、一時的にログレベルを DEBUG。 ログ設定の変更は、グループを展開するときに有効になります。詳細については、「」を参照してください。AWS IoT Greengrass のログ記録の設定.

ローカルファイルシステムでは、AWS IoT Greengrass は次の場所にログを保存します。ファイルシステムのログを確認するには、ルート権限が必要です。

greengrass-root/ggc/var/log/crash.log

のときに生成されたメッセージを表示します AWS IoT Greengrass コア クラッシュします。

greengrass-root/ggc/var/log/system/runtime.log

失敗したコンポーネントに関するメッセージを示します。

greengrass-root/ggc/var/log/system/

証明書マネージャーや接続マネージャーなど、AWS IoT Greengrass システムコンポーネントのすべてのログが含まれます。のメッセージを使用する ggc/var/log/system/ および ggc/var/log/system/runtime.log、でどのエラーが発生したかがわかります。 AWS IoT Greengrass システムコンポーネント。

greengrass-root/ggc/var/log/user/

ユーザー定義 Lambda 関数のすべてのログが含まれています。このフォルダを確認して、ローカル Lambda 関数のエラーメッセージを検索します。

注記

デフォルトでは、 greengrass-root/greengrass ディレクトリ。次の場合: ディレクトリの書き込み を構成した後、ログはそのディレクトリの下にあります。

ログの保存先としてクラウドを設定している場合は、CloudWatch Logs を使用してログメッセージを確認します。crash.log は、 AWS IoT Greengrass コア デバイス。

次の場合: AWS IoT は、ログを CloudWatch、システム コンポーネントが に接続しようとしたときに接続エラーが発生した場合は、これらのログをチェックします。 AWS IoT.

ログ作成の詳細については、AWS IoT Greengrassを参照してください。AWS IoT Greengrass ログでのモニタリング.

注記

のログ AWS IoT Greengrass コアソフトウェア v1.0 は、 greengrass-root/var/log ディレクトリ。

ストレージ問題のトラブルシューティング

ローカルファイルストレージがいっぱいになると、一部のコンポーネントが正常に動作しなくなる場合があります。

  • ローカルシャドウの更新は、実行されません。

  • 新しい AWS IoT Greengrass コア MQTT サーバー証明書がローカルにダウンロードできなくなります。

  • デプロイが失敗します。

ローカルで使用可能な空き領域のサイズを常に把握しておく必要があります。導入した容量に基づいて空き領域を計算できます。 Lambda 機能、ログ設定( ログでのトラブルシューティング)、およびローカルに格納されたシャドウの数。

メッセージのトラブルシューティング

でローカルに送信されるすべてのメッセージ AWS IoT Greengrass QoS 0 で送信されます。デフォルトでは、AWS IoT Greengrass はメッセージをメモリ内のキューに保存します。したがって、グループのデプロイ後やデバイスの再起動後などに Greengrass コアを再起動すると、未処理のメッセージは失われます。ただし、 AWS IoT Greengrass (v1.6 or later)を使用して、ファイルをキャッシュし、コアの再起動後もメッセージを保持します。また、キューサイズを設定することもできます。キューサイズを設定する場合、262144 バイト (256 KB) 以上の値になるように注意してください。そうしない場合、AWS IoT Greengrass が正しく起動しなくなることがあります。詳細については、「」を参照してください。クラウドターゲットの MQTT メッセージキュー.

注記

デフォルトのインメモリキューを使用する場合、サービスの中断が低いときにグループのデプロイあるいはデバイスの再起動を行うことが推奨されます。

また、 との永続セッションを確立するようにコアを設定することもできます。AWS IoT. これにより、コアは、オフラインのときに AWS クラウドから送信されたメッセージを受信できます。詳細については、「」を参照してください。AWS IoT Core を使用した MQTT 永続セッション.

シャドウ同期タイムアウト問題のトラブルシューティング

Greengrass コアデバイスとクラウドとの間で通信が大幅に遅延すると、タイムアウトによりシャドウの同期が失敗する場合があります。この場合は、次のようなログエントリが表示されます。

[2017-07-20T10:01:58.006Z][ERROR]-cloud_shadow_client.go:57,Cloud shadow client error: unable to get cloud shadow what_the_thing_is_named for synchronization. Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][WARN]-sync_manager.go:263,Failed to get cloud copy: Get https://1234567890abcd.iot.us-west-2.amazonaws.com:8443/things/what_the_thing_is_named/shadow: net/http: request canceled (Client.Timeout exceeded while awaiting headers) [2017-07-20T10:01:58.006Z][ERROR]-sync_manager.go:375,Failed to execute sync operation {what_the_thing_is_named VersionDiscontinued []}"

解決方法としては、コアデバイスでホストのレスポンスを待機する時間を設定します。を開きます。 config.json(構成.json) ファイル greengrass-root/config および を追加 system.shadowSyncTimeout タイムアウト値(秒)を含むフィールド。たとえば、 と指定します。

{ "system": { "shadowSyncTimeout": 10 }, "coreThing": { "caPath": "root-ca.pem", "certPath": "cloud.pem.crt", "keyPath": "cloud.pem.key", ... }, ... }

いいえの場合 shadowSyncTimeout 値は に指定されています config.json、デフォルトは 5 秒です。

注記

対象: AWS IoT Greengrass コアソフトウェアv1.6以前、デフォルト shadowSyncTimeout 1秒です

以下を確認します。 AWS IoT Greengrass フォーラム

このトピックのトラブルシューティング情報を使用して問題を解決できない場合は、 AWS IoT Greengrass フォーラム または新しいフォーラムスレッドを投稿してください。の構成員 AWS IoT Greengrass チームが積極的にフォーラムを監視します。