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

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

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

以下のセクションを参照して、エラーのトラブルシューティングを行い、 の問題を解決するための解決策を見つけてください AWS IoT Events。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

誤った状態の使用法

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

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

接続メッセージ

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

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

InvalidRequestException メッセージ

CreateDetectorModelUpdateDetectorModel を呼び出そうと InvalidRequestException すると取得されますAPIs。

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

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

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

Amazon CloudWatch Logs action.setTimer エラー

Amazon CloudWatch Logs を設定して、 AWS IoT Events ディテクターモデルインスタンスをモニタリングできます。以下は 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>という名前のタイマーを設定できませんでした。持続時間の表現をチェックして、再試行してください。

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

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

Amazon CloudWatch ペイロードエラー

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

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

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

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

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

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

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

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

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

詳細については、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) 関数で、 のリファレンスを使用する場合 type 値。リファレンスの評価結果は、StringDecimal、または である必要がありますBoolean

詳細については、「AWS IoT Events 式の入力と変数のリファレンス」を参照してください。

にメッセージを送信できませんでした 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 でモデルの入力を作成する AWS IoT Events「」を参照して入力を定義する方法を確認してください。