クライアントデバイスのトラブルシューティング - AWS IoT Greengrass

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

クライアントデバイスのトラブルシューティング

このセクションのトラブルシューティング情報と解決策は、Greengrass クライアントデバイスとクライアントデバイスのコンポーネントとの問題解決に役立ちます。

Greengrass 検出の問題

次の情報を使用して、Greengrass 検出に関する問題のトラブルシューティングを行います。これらの問題は、クライアントデバイスが [Greengrass discovery API] (Greengrass 検出 API) に接続できる Greengrass コアデバイスを識別します。

Greengrass 検出の問題 (HTTP API)

次の情報を使用して、Greengrass 検出に関する問題のトラブルシューティングを行います。[test the discovery API with cURL] (cURL でディスカバリー API をテストする) と、これらのエラーが表示される場合があります。

curl: (52) Empty reply from server

リクエストで非アクティブな AWS IoT 証明書を指定すると、このエラーが表示される場合があります。

クライアントデバイスに証明書が添付されていること、および証明書がアクティブであることを確認します。詳細については、「AWS IoT Coreデベロッパーガイド」の「クライアント証明書にモノまたはポリシーをアタッチする」および「クライアント証明書をアクティブ化または非アクティブ化する」を参照してください。

HTTP 403: {"message":null,"traceId":"a1b2c3d4-5678-90ab-cdef-11111EXAMPLE"}

クライアントデバイスに greengrass:Discover を呼び出すアクセス許可がない場合は、このエラーが表示されることがあります。

クライアントデバイスの証明書に、greengrass:Discover を許可するポリシーがあることを確認します。このアクセス許可には、Resource セクションの [thing policy variables] (モノのポリシー変数) (iot:Connection.Thing.*) を使用できません。詳細については、「検出認証と認可」を参照してください。

HTTP 404: {"errorMessage":"The thing provided for discovery was not found"}

次の場合にこのエラーが発生する可能性があります。

  • クライアントデバイスが Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループに関連付けられていません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループには、MQTT ブローカーエンドポイントがありません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスには、クライアントデバイス認証コンポーネントを実行しているものがありません。

クライアントデバイスが、接続するコアデバイスに関連付けられていることを確認します。次に、コアデバイスがクライアントデバイス認証コンポーネントを実行していて、コアデバイスに少なくとも 1 つの MQTT ブローカーエンドポイントがあることを確認します。詳細については、次を参照してください。

Greengrass 検出の問題 (AWS IoT Device SDK v2 Python)

次の情報を使用して、AWS IoT Device SDK v2 for Python での Greengrass 検出に関する問題のトラブルシューティングを行います。

awscrt.exceptions.AwsCrtError: AWS_ERROR_HTTP_CONNECTION_CLOSED: The connection has closed or is closing.

リクエストで非アクティブな AWS IoT 証明書を指定すると、このエラーが表示される場合があります。

クライアントデバイスに証明書が添付されていること、および証明書がアクティブであることを確認します。詳細については、「AWS IoT Coreデベロッパーガイド」の「クライアント証明書にモノまたはポリシーをアタッチする」および「クライアント証明書をアクティブ化または非アクティブ化する」を参照してください。

awsiot.greengrass_discovery.DiscoveryException: ('Error during discover call: response_code=403', 403)

クライアントデバイスに greengrass:Discover を呼び出すアクセス許可がない場合は、このエラーが表示されることがあります。

クライアントデバイスの証明書に、greengrass:Discover を許可するポリシーがあることを確認します。このアクセス許可には、Resource セクションの [thing policy variables] (モノのポリシー変数) (iot:Connection.Thing.*) を使用できません。詳細については、「検出認証と認可」を参照してください。

awsiot.greengrass_discovery.DiscoveryException: ('Error during discover call: response_code=404', 404)

次の場合にこのエラーが発生する可能性があります。

  • クライアントデバイスが Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループに関連付けられていません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループには、MQTT ブローカーエンドポイントがありません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスには、クライアントデバイス認証コンポーネントを実行しているものがありません。

クライアントデバイスが、接続するコアデバイスに関連付けられていることを確認します。次に、コアデバイスがクライアントデバイス認証コンポーネントを実行していて、コアデバイスに少なくとも 1 つの MQTT ブローカーエンドポイントがあることを確認します。詳細については、次を参照してください。

Greengrass 検出の問題 (AWS IoT Device SDK v2 for C++)

次の情報を使用して、AWS IoT Device SDK v2 for C++ での Greengrass 検出に関する問題のトラブルシューティングを行います。

aws-c-http: AWS_ERROR_HTTP_CONNECTION_CLOSED, The connection has closed or is closing.

リクエストで非アクティブな AWS IoT 証明書を指定すると、このエラーが表示される場合があります。

クライアントデバイスに証明書が添付されていること、および証明書がアクティブであることを確認します。詳細については、「AWS IoT Coreデベロッパーガイド」の「クライアント証明書にモノまたはポリシーをアタッチする」および「クライアント証明書をアクティブ化または非アクティブ化する」を参照してください。

aws-c-common: AWS_ERROR_UNKNOWN, Unknown error. (HTTP 403)

クライアントデバイスに greengrass:Discover を呼び出すアクセス許可がない場合は、このエラーが表示されることがあります。

クライアントデバイスの証明書に、greengrass:Discover を許可するポリシーがあることを確認します。このアクセス許可には、Resource セクションの [thing policy variables] (モノのポリシー変数) (iot:Connection.Thing.*) を使用できません。詳細については、「検出認証と認可」を参照してください。

aws-c-common: AWS_ERROR_UNKNOWN, Unknown error. (HTTP 404)

次の場合にこのエラーが発生する可能性があります。

  • クライアントデバイスが Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループに関連付けられていません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループには、MQTT ブローカーエンドポイントがありません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスには、クライアントデバイス認証コンポーネントを実行しているものがありません。

クライアントデバイスが、接続するコアデバイスに関連付けられていることを確認します。次に、コアデバイスがクライアントデバイス認証コンポーネントを実行していて、コアデバイスに少なくとも 1 つの MQTT ブローカーエンドポイントがあることを確認します。詳細については、次を参照してください。

Greengrass 検出の問題 (AWS IoT Device SDK v2 for JavaScript)

次の情報を使用して、 AWS IoT Device SDKv2 for での Greengrass 検出に関する問題のトラブルシューティングを行います JavaScript

Error: aws-c-http: AWS_ERROR_HTTP_CONNECTION_CLOSED, The connection has closed or is closing.

リクエストで非アクティブな AWS IoT 証明書を指定すると、このエラーが表示される場合があります。

クライアントデバイスに証明書が添付されていること、および証明書がアクティブであることを確認します。詳細については、「AWS IoT Coreデベロッパーガイド」の「クライアント証明書にモノまたはポリシーをアタッチする」および「クライアント証明書をアクティブ化または非アクティブ化する」を参照してください。

Error: Discovery failed (headers: [object Object]) { response_code: 403 }

クライアントデバイスに greengrass:Discover を呼び出すアクセス許可がない場合は、このエラーが表示されることがあります。

クライアントデバイスの証明書に、greengrass:Discover を許可するポリシーがあることを確認します。このアクセス許可には、Resource セクションの [thing policy variables] (モノのポリシー変数) (iot:Connection.Thing.*) を使用できません。詳細については、「検出認証と認可」を参照してください。

Error: Discovery failed (headers: [object Object]) { response_code: 404 }

次の場合にこのエラーが発生する可能性があります。

  • クライアントデバイスが Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループに関連付けられていません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループには、MQTT ブローカーエンドポイントがありません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスには、クライアントデバイス認証コンポーネントを実行しているものがありません。

クライアントデバイスが、接続するコアデバイスに関連付けられていることを確認します。次に、コアデバイスがクライアントデバイス認証コンポーネントを実行していて、コアデバイスに少なくとも 1 つの MQTT ブローカーエンドポイントがあることを確認します。詳細については、次を参照してください。

Error: Discovery failed (headers: [object Object])

Greengrass 検出サンプルを実行すると、このエラー (HTTP レスポンスコードなし) が表示される場合があります。このエラーは、さまざまな理由で発生する可能性があります。

  • クライアントデバイスに greengrass:Discover を呼び出すアクセス許可がない場合は、このエラーが表示されることがあります。

    クライアントデバイスの証明書に、greengrass:Discover を許可するポリシーがあることを確認します。このアクセス許可には、Resource セクションの [thing policy variables] (モノのポリシー変数) (iot:Connection.Thing.*) を使用できません。詳細については、「検出認証と認可」を参照してください。

  • 次の場合にこのエラーが発生する可能性があります。

    • クライアントデバイスが Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループに関連付けられていません。

    • クライアントデバイスに関連付けられている Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループには、MQTT ブローカーエンドポイントがありません。

    • クライアントデバイスに関連付けられている Greengrass コアデバイスには、クライアントデバイス認証コンポーネントを実行しているものがありません。

    クライアントデバイスが、接続するコアデバイスに関連付けられていることを確認します。次に、コアデバイスがクライアントデバイス認証コンポーネントを実行していて、コアデバイスに少なくとも 1 つの MQTT ブローカーエンドポイントがあることを確認します。詳細については、次を参照してください。

Greengrass 検出の問題 (AWS IoT Device SDK v2 for Java)

次の情報を使用して、AWS IoT Device SDK v2 for Java での Greengrass 検出に関する問題のトラブルシューティングを行います。

software.amazon.awssdk.crt.CrtRuntimeException: Error Getting Response Status Code from HttpStream. (aws_last_error: AWS_ERROR_HTTP_DATA_NOT_AVAILABLE(2062), This data is not yet available.)

リクエストで非アクティブな AWS IoT 証明書を指定すると、このエラーが表示される場合があります。

クライアントデバイスに証明書が添付されていること、および証明書がアクティブであることを確認します。詳細については、「AWS IoT Coreデベロッパーガイド」の「クライアント証明書にモノまたはポリシーをアタッチする」および「クライアント証明書をアクティブ化または非アクティブ化する」を参照してください。

java.lang.RuntimeException: Error x-amzn-ErrorType(403)

クライアントデバイスに greengrass:Discover を呼び出すアクセス許可がない場合は、このエラーが表示されることがあります。

クライアントデバイスの証明書に、greengrass:Discover を許可するポリシーがあることを確認します。このアクセス許可には、Resource セクションの [thing policy variables] (モノのポリシー変数) (iot:Connection.Thing.*) を使用できません。詳細については、「検出認証と認可」を参照してください。

java.lang.RuntimeException: Error x-amzn-ErrorType(404)

次の場合にこのエラーが発生する可能性があります。

  • クライアントデバイスが Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループに関連付けられていません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスまたは AWS IoT Greengrass V1 グループには、MQTT ブローカーエンドポイントがありません。

  • クライアントデバイスに関連付けられている Greengrass コアデバイスには、クライアントデバイス認証コンポーネントを実行しているものがありません。

クライアントデバイスが、接続するコアデバイスに関連付けられていることを確認します。次に、コアデバイスがクライアントデバイス認証コンポーネントを実行していて、コアデバイスに少なくとも 1 つの MQTT ブローカーエンドポイントがあることを確認します。詳細については、次を参照してください。

MQTT 接続の問題

クライアントデバイス MQTT 接続の問題のトラブルシューティングには、次の情報を使用します。これらの問題は、クライアントデバイスが MQTT 経由でコアデバイスに接続しようとする際に発生する場合があります。

io.moquette.broker.Authorizator: Client does not have read permissions on the topic

このエラーは、クライアントデバイスがアクセス許可を持たない MQTT トピックをサブスクライブしようとしたときに、Greengrass ログに表示されることがあります。エラーメッセージにはトピックが含まれています。

クライアントデバイス認証コンポーネントの設定に、次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • トピックの mqtt:subscribe アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

MQTT 接続の問題 (Python)

次の情報を使用して、AWS IoT Device SDK v2 for Python 使用時のクライアントデバイスの MQTT 接続に関する問題のトラブルシューティングを行います。

AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

MQTT 接続の問題 (C++)

次の情報を使用して、AWS IoT Device SDK v2 for C++ 使用時のクライアントデバイス MQTT 接続に関する問題のトラブルシューティングを行います。

AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

MQTT 接続の問題 (Java)

次の情報を使用して、AWS IoT Device SDK v2 for Java 使用時のクライアントデバイス MQTT 接続に関する問題のトラブルシューティングを行います。

software.amazon.awssdk.crt.mqtt.MqttException: Protocol error occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

MQTT 接続の問題 (JavaScript)

次の情報を使用して、 AWS IoT Device SDK v2 for JavaScriptを使用する場合のクライアントデバイスの MQTT 接続に関する問題のトラブルシューティングを行います。

AWS_ERROR_MQTT_PROTOCOL_ERROR: Protocol error occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。

AWS_ERROR_MQTT_UNEXPECTED_HANGUP: Unexpected hangup occurred

クライアントデバイス認証コンポーネントで、接続するアクセス許可をクライアントデバイスに付与するクライアントデバイス承認ポリシーが定義されていない場合にこのエラーが発生する可能性があります。

クライアントデバイス認証コンポーネントの設定に次の項目が含まれていることを確認します。

  • クライアントデバイスと一致するデバイスグループ。

  • クライアントデバイスの mqtt:connect アクセス許可を付与する、そのデバイスグループのクライアントデバイス承認ポリシー。

クライアントデバイス認証コンポーネントをデプロイおよび設定する方法の詳細については、次を参照してください。