一般的な AWS IoT Events 問題と解決策 - AWS IoT Events

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

一般的な AWS IoT Events 問題と解決策

次のセクションを参照して、エラーのトラブルシューティングを行い、 の問題を解決するための考えられる解決策を見つけます AWS IoT Events。

ディテクターモデルの作成エラー

ディテクターモデルを作成しようとする時にエラーが発生します。

ディテクターモデルを作成する時は、次の制限を考慮する必要があります。

  • action フィールドで許可されるアクションは 1 つだけです。

  • transitionEvents には condition が必要です。OnEnterOnInput、および OnExit イベントではオプションです。

  • condition フィールドが空の場合、条件表現の評価結果は true と同等です。

  • 条件表現の評価結果はブール値である必要があります。結果がブール値でない場合、false と同等であり、actions をトリガーしたり、イベントで指定された nextState に移行したりすることはありません。

詳細については、「ディテクターモデルの制限と制限」を参照してください。

削除されたディテクターモデルからの更新

数分前にディテクターモデルを更新または削除しましたが、MQTT メッセージまたは SNS アラートを介して古いディテクターモデルから状態の更新を取得しています。

ディテクターモデルを更新、削除、または再作成する場合 (UpdateDetector「モデル」を参照)、すべてのディテクターインスタンスが削除され、新しいモデルが使用されるまでに遅延が発生します。この間、入力は以前のバージョンのディテクターモデルのインスタンスによって処理され続ける可能性があります。以前のディテクターモデルで定義されたアラートを引き続き受信する場合があります。更新を再確認するか、エラーを報告する前に、少なくとも 7 分間待ちます。

アクショントリガーの障害 (条件を満たす場合)

条件が満たされた場合、ディテクターはアクションのトリガーまたは新しい状態への移行に失敗します。

ディテクターの条件表現の評価結果がブール値であることを確認します。結果がブール値でない場合、false と同等であり、action をトリガーしたり、イベントで指定された nextState に移行したりすることはありません。詳細については、「条件表現の構文」を参照してください。

アクショントリガーの障害 (しきい値を超えた場合)

条件表現の可変が指定された値に達した場合、ディテクターはアクションまたはイベント移行をトリガーしません。

onInputonEnter、または onExitsetVariable を更新する場合、現在の処理サイクル中に condition を評価するときに、新しい値は使用されません。代わりに、現在のサイクルが完了するまで元の値が使用されます。この動作は、ディテクターモデル定義で evaluationMethod パラメータを設定することで変更できます。evaluationMethodSERIAL に設定されている場合、可変が更新され、イベントが定義された順序でイベント条件が評価されます。evaluationMethodBATCH (デフォルト) に設定されている場合、可変が更新され、すべてのイベント条件が評価された後にのみイベントが実行されます。

誤った状態の使用法

BatchPutMessage を使用して入力にメッセージを送信しようとすると、ディテクターが間違った状態になります。

BatchPutメッセージを使用して複数のメッセージを入力に送信する場合、メッセージまたは入力が処理される順序は保証されません。順序付けを保証するには、一度に 1 つずつメッセージを送信し、BatchPutMessage が成功を確認するたびに待ちます。

接続メッセージ

API を呼び出したり呼び出したりしようとすると、('Connection aborted.', error(54, 'Connection reset by peer')) エラーが発生します。

OpenSSL が TLS 1.1 以降のバージョンを使用して接続を確立していることを確認します。これは、ほとんどの Linux ディストリビューションまたは Windows バージョン 7 以降ではデフォルトになっているはずです。macOS のユーザーは、OpenSSL をアップグレードする必要があるかもしれません。

InvalidRequestException メッセージ

UpdateDetectorModel APIsを呼び出そうCreateDetectorModelと InvalidRequestException すると、 が表示されます。

問題の解決に役立つように、以下をチェックしてください。詳細については、CreateDetector「Model」とUpdateDetector「Model」を参照してください。

  • SetTimerAction のパラメータとして secondsdurationExpression の両方を同時に使用しないように注意してください。

  • durationExpression の文字列表現が有効であることを確認してください。文字列表現には、数値、可変 ($variable.<variable-name>)、または入力値 ($input.<input-name>.<path-to-datum>) を含めることができます。

Amazon CloudWatch Logs action.setTimer エラー

AWS IoT Events ディテクターモデルインスタンスをモニタリングするように Amazon CloudWatch Logs を設定できます。以下は、 を使用する場合 AWS IoT Eventsに によって生成される一般的なエラーですaction.setTimer

  • エラー: <timer-name> という名前のタイマーの期間表現を数値に評価できませんでした。

    durationExpression の文字列表現を数値に変換できることを確認してください。ブール値などの他のデータ型は許可されていません。

  • エラー: <timer-name>という名前のタイマーの期間表現の評価結果が 31,622,440 を超えています。精度を確保するために、期間表現が 60〜31,622,400 の値を参照していることを確認してください。

    タイマーの持続時間が 31,622,400 秒以下であることを確認してください。期間の評価結果は、最も近い整数に切り捨てられます。

  • エラー: <timer-name> という名前のタイマーの期間表現の評価結果は 60 未満です。精度を確保するために、期間表現が 60〜31,622,400 の値を参照していることを確認してください。

    タイマーの持続時間が 60 秒以上であることを確認してください。期間の評価結果は、最も近い整数に切り捨てられます。

  • エラー: <timer-name>という名前のタイマーの期間表現を評価できませんでした。可変名、入力名、およびデータへのパスをチェックして、既存の可変と入力を参照していることを確認してください。

    文字列表現が既存の可変と入力を参照していることを確認してください。文字列表現には、数値、可変 ($variable.variable-name)、および入力値 ($input.input-name.path-to-datum) を含めることができます。

  • エラー: <timer-name>という名前のタイマーを設定できませんでした。持続時間の表現をチェックして、再試行してください。

    SetTimerアクションアクションを参照して、正しいパラメータを指定し、タイマーを再度設定します。

詳細については、「ディAWS IoT Events テクターモデルの開発時に Amazon CloudWatch ログ記録を有効にする」を参照してください。

Amazon CloudWatch ペイロードエラー

AWS IoT Events ディテクターモデルインスタンスをモニタリングするように Amazon CloudWatch Logs を設定できます。以下は、アクションペイロードを設定するときに AWS IoT Eventsによって生成される一般的なエラーと警告です。

  • エラー: アクションの表現を評価できませんでした。可変名、入力名、およびデータへのパスが既存の可変と入力値を参照していることを確認してください。また、ペイロードのサイズが、ペイロードの最大許容サイズである 1 KB 未満であることを確認してください。

    正しい可変名、入力名、およびデータへのパスを入力していることを確認してください。アクションペイロードが 1 KB より大きい場合にも、このエラーメッセージが表示されることがあります。

  • エラー: <action-type> のペイロードのコンテンツ表現を分析できませんでした。正しい構文でコンテンツ表現を入力してください。

    コンテンツ表現には、文字列 ('string')、可変 ($variable.variable-name)、入力値 ($input.input-name.path-to-datum)、文字列の連結、および ${} を含む文字列を含めることができます。

  • エラー: ペイロード表現 {表現} が無効です。定義されたペイロードタイプは JSON であるため、文字列に評価 AWS IoT Events される式を指定する必要があります。

    指定されたペイロードタイプが JSON の場合、 AWS IoT Events はまず、サービスが式を文字列に評価できるかどうかをチェックします。評価結果をブール値または数値にすることはできません。検証が失敗した場合、このエラーが発生する可能性があります。

  • 警告: アクションは実行されましたが、有効な JSON に対するアクションペイロードのコンテンツ表現を評価できませんでした。定義されたペイロードタイプは JSON です。

    ペイロードタイプを として定義した場合、 AWS IoT Events がアクションペイロードのコンテンツ式を有効な JSON に評価できることを確認してくださいJSON。 がコンテンツ式を有効な JSON に評価できない場合でも、 AWS IoT Events はアクション AWS IoT Events を実行します。

詳細については、「ディAWS IoT Events テクターモデルの開発時に Amazon CloudWatch ログ記録を有効にする」を参照してください。

互換性のないデータ型

メッセージ: 互換性のないデータ型 [<inferred-types>] が次の表現の <reference> で見つかりました: <expression>

次のいずれかの理由でこのエラーが発生する可能性があります。

  • リファレンスの評価結果は、表現の他のオペランドと互換性がありません。

  • 関数に渡される引数の型はサポートされていません。

表現でリファレンスを使用する場合は、以下をチェックしてください。

  • 1 つ以上の演算子でオペランドとしてリファレンスを使用する場合は、参照するすべてのデータ型に互換性があることを確認してください。

    例えば、次の表現では、整数 2== 演算子と && 演算子の両方のオペランドです。オペランドに互換性があることを確認するには、$variable.testVariable + 1$variable.testVariable は整数または 10 進数をリファレンスする必要があります。

    また、整数 1+ 演算子のオペランドです。したがって、$variable.testVariable は整数または 10 進数をリファレンスする必要があります。

    ‘$variable.testVariable + 1 == 2 && $variable.testVariable’
  • 関数に渡される引数としてリファレンスを使用する場合は、関数が参照するデータ型をサポートしていることを確認してください。

    例えば、次の timeout("time-name") 関数では、引数として二重引用符を含む文字列が必要です。timer-name 値のリファレンスを使用する場合は、二重引用符で囲まれた文字列を参照する必要があります。

    timeout("timer-name")
    注記

    convert(type, expression) 関数の場合、タイプ値にリファレンスを使用する場合、リファレンスの評価結果は StringDecimal、または Boolean である必要があります。

詳細については、「リファレンス」を参照してください。

へのメッセージの送信に失敗しました AWS IoT Events

メッセージ: IoT イベントにメッセージを送信できませんでした

このエラーは、次の理由で発生する場合があります。

  • 入力メッセージのペイロードに Input attribute Key が含まれていない。

  • Input attribute Key が、入力の定義で指定されているのと同じ JSON パス にない。

  • 入力メッセージは、 AWS IoT Events 入力で定義されているスキーマと一致しません。

注記

他のサービスからのデータインジェストにも障害が発生します。

例えば、 では AWS IoT Core、 AWS IoT ルールは次のメッセージで失敗します。 Verify the Input Attribute key.

これを解決するには、入力ペイロードメッセージスキーマが AWS IoT Events 入力定義に準拠し、Input attribute Key場所が一致していることを確認します。詳細については、ナビゲーションペインへの入力の作成「」を参照して、 AWS IoT Events 入力を定義する方法を確認してください。