

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

# AWS IoT SiteWise ルールアクションのトラブルシューティング
<a name="troubleshoot-rule"></a>

で AWS IoT SiteWise ルールアクションをトラブルシューティングするには AWS IoT Core、次のいずれかの手順を実行します。
+ Amazon CloudWatch Logs の設定をする
+ ルールの再パブリッシュエラーアクションを設定する

次に、エラーメッセージとこのトピックのエラーを比較して、問題のトラブルシューティングを行います。

**Topics**
+ [AWS IoT Core ログの設定](#configure-iot-logs)
+ [再発行エラーアクションを設定](#configure-republish-error-action)
+ [ルール問題をトラブルシューティング](#troubleshoot-rule-issues)
+ [ルールをトラブルシューティング (AWS IoT SiteWise)](#rule-tutorial-troubleshoot-rule)
+ [ルールをトラブルシューティング (DynamoDB)](#dynamodb-tutorial-troubleshoot-rule)

## AWS IoT Core ログの設定
<a name="configure-iot-logs"></a>

さまざまなレベルの情報を CloudWatch Logs に記録する AWS IoT ように を設定できます。

**CloudWatch Logs を設定してアクセスするには。**

1. のログ記録を設定するには AWS IoT Core、「 *AWS IoT デベロッパーガイド*」の[CloudWatch Logs によるモニタリング](https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html)」を参照してください。

1. [[CloudWatch console]](https://console.aws.amazon.com/cloudwatch/) (CloudWatch のコンソール) に移動する。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. [**AWSIotLogs**] グループを選択します。

1. 最近のログストリームを選択します。CloudWatch では、デフォルトで最新のログストリームが最初に表示されます。

1. ログエントリを選択して、ログメッセージを展開します。ログエントリは、次のスクリーンショットのようになります。  
![CloudWatch のAWS IoT 「Logs」スクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/rule-ingestion/troubleshoot-rule-logs-console.png)

1. エラーメッセージとこのトピックのエラーを比較して、問題のトラブルシューティングを行います。

## 再発行エラーアクションを設定
<a name="configure-republish-error-action"></a>

エラーメッセージを処理するために、ルールにエラーアクションを設定できます。この手順では、MQTT テストクライアントでエラーメッセージを表示するために、エラーアクションとして再パブリッシュルールアクションを設定します。

**注記**  
再パブリッシュエラーアクションでは、`ERROR` レベルログと同等のログのみが出力されます。より詳細なログが必要な場合は、[[CloudWatch Logs]](#configure-iot-logs) を設定する必要があります。

**再パブリッシュエラーアクションをルールに追加するには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)に移動します。

1. 左側のナビゲーションペインで [**Act (アクト) **] を選択し、[**ルール**] を選択します。

1. ルールを選択します。

1. [**エラーアクション**] で、[**アクションの追加**] を選択します。

1. **「 AWS IoT トピックにメッセージを再発行する**」を選択します。  
![AWS IoT Core 再発行アクションが強調表示された「アクションの選択」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/rule-ingestion/rule-choose-republish-action-console.png)

1. ページの下部にある [**アクションの設定**] を選択します。

1. **トピック**に一意のトピック ( など) を入力します**sitewise/windfarm/rule/error**。 AWS IoT Core はこのトピックにエラーメッセージを再発行します。

1. **Select** を選択して、エラーアクションを実行するための AWS IoT Core アクセス権を付与します。

1. ルールに作成したロールの横にある [**選択**] を選択します。

1. [**ロールの更新**] を選択して、追加のアクセス許可をロールに追加します。

1. **[アクションを追加]** を選択します。

   ルールのエラーアクションは、次のスクリーンショットのようになります。  
![AWS IoT Core 「ルール」ページ 再発行エラーアクションのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/rule-ingestion/rule-confirm-republish-error-action-console.png)

1. コンソールの左上にある戻る矢印を選択して、 AWS IoT コンソールのホームに戻ります。

再パブリッシュエラーアクションを設定したら、 AWS IoT Coreの MQTT テストクライアントでエラーメッセージを見ることができます。

次の手順では、MQTT テストクライアントでエラートピックにサブスクライブします。MQTT テストクライアントでは、問題のトラブルシューティングを行うためにルールのエラーメッセージを受信することができます。

**エラーアクショントピックをサブスクライブするには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)に移動します。

1. 左側のナビゲーションページで、[**テスト**] を選択して MQTT テストクライアントを開きます。

1. [**トピックのサブスクリプション**] フィールドに、前に設定したエラートピック (**sitewise/windfarm/rule/error** など) を入力し、[**トピックへのサブスクライブ**] を選択します。  
![AWS IoT Core 「トピックにサブスクライブ」ボタンが強調表示された「MQTT クライアント」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/rule-ingestion/troubleshoot-rule-subscribe-error-topic-console.png)

1. エラーメッセージが表示されるまで監視し、エラーメッセージで `failures` 配列を展開します。

   次に、エラーメッセージとこのトピックのエラーを比較して、問題のトラブルシューティングを行います。

## ルール問題をトラブルシューティング
<a name="troubleshoot-rule-issues"></a>

ルールの問題をトラブルシューティングするには、次の情報を使用します。

**Topics**
+ [Error: Member must be within 604800 seconds before and 300 seconds after the current timestamp (エラー: メンバーは、現在のタイムスタンプ前の 604800 秒以内で、現在のタイムスタンプ後の 300 秒以内でなければなりません)](#rule-error-timestamp-out-of-range)
+ [Error: Property value does not match data type <type> (エラー: プロパティ値がデータ型 <type> と一致しません)](#rule-error-invalid-data-type)
+ [Error: User: <role-arn> is not authorized to perform: iotsitewise:BatchPutAssetPropertyValue on resource (エラー: ユーザー: <role-arn> には、リソースで iotsitewise:BatchPutAssetPropertyValue を実行するアクセス許可がありません)](#rule-error-role-not-authorized)
+ [Error: iot.amazonaws.com is unable to perform: sts:AssumeRole on resource: <role-arn> (エラー: iot.amazonaws.com がリソースで sts:AssumeRole を実行できません (<role-arn>))](#rule-error-unable-to-assume-role)
+ [Info: No requests were sent. (情報: リクエストは送信されませんでした。) 置換テンプレートの実行後に、PutAssetPropertyValueEntries が空でした。](#rule-info-request-was-empty)

### Error: Member must be within 604800 seconds before and 300 seconds after the current timestamp (エラー: メンバーは、現在のタイムスタンプ前の 604800 秒以内で、現在のタイムスタンプ後の 300 秒以内でなければなりません)
<a name="rule-error-timestamp-out-of-range"></a>

タイムスタンプが、現在の Unix エポック時間と比較して、7 日より前か、5 分より後です。次の操作を試してください：
+ タイムスタンプが Unix エポック (UTC) 時間であることを確認します。別のタイムゾーンでタイムスタンプを指定すると、このエラーが表示されます。
+ タイムスタンプが秒単位であることを確認します。 AWS IoT SiteWise は、タイムスタンプを秒単位 (Unix エポック時間) に分割し、ナノ秒単位でオフセットします。
+ 過去に 7 日以内のタイムスタンプが設定されたデータをアップロードしていることを確認します。

### Error: Property value does not match data type <type> (エラー: プロパティ値がデータ型 <type> と一致しません)
<a name="rule-error-invalid-data-type"></a>

ルールアクションのエントリのデータ型が、ターゲットアセットプロパティとは異なります。たとえば、ターゲットアセットプロパティが `DOUBLE` で、選択したデータ型が [**整数**] であるか、値を `integerValue` に渡したとします。次の操作を試してください：
+  AWS IoT コンソールからルールを設定する場合は、エントリごとに正しい**データ型**が選択されていることを確認します。
+ API または AWS Command Line Interface (AWS CLI) からルールを設定する場合は、`value`オブジェクトが正しい型フィールド (`doubleValue``DOUBLE`プロパティの場合など) を使用していることを確認します。

### Error: User: <role-arn> is not authorized to perform: iotsitewise:BatchPutAssetPropertyValue on resource (エラー: ユーザー: <role-arn> には、リソースで iotsitewise:BatchPutAssetPropertyValue を実行するアクセス許可がありません)
<a name="rule-error-role-not-authorized"></a>

ルールにターゲットアセットプロパティにアクセスする権限がないか、ターゲットアセットプロパティが存在しません。次の操作を試してください：
+ プロパティエイリアスが正しいことと、指定されたプロパティエイリアスを持つアセットプロパティがあることを確認します。詳細については、「[のデータストリームを管理する AWS IoT SiteWise](manage-data-streams.md)」を参照してください。
+ ルールにロールがあることと、ターゲットのアセットプロパティ (ターゲットアセットの階層など) への `iotsitewise:BatchPutAssetPropertyValue` アクセス許可がロールによって許可されていることを確認します。詳細については、「[必要なアクセス権を付与 AWS IoT する](grant-rule-access.md)」を参照してください。

### Error: iot.amazonaws.com is unable to perform: sts:AssumeRole on resource: <role-arn> (エラー: iot.amazonaws.com がリソースで sts:AssumeRole を実行できません (<role-arn>))
<a name="rule-error-unable-to-assume-role"></a>

ユーザーには、 AWS Identity and Access Management (IAM) のルールでロールを引き受ける権限がありません。

作成されたルールで、そのロールに対する `iam:PassRole` へのアクセス許可がユーザーに許可されていることを確認します。詳細については、*[AWS IoT Developer Guide]* (デベロッパーガイド) の[[Pass role permissions]](https://docs.aws.amazon.com/iot/latest/developerguide/pass-role.html) (ロールアクセス許可を渡す) を参照してください。

### Info: No requests were sent. (情報: リクエストは送信されませんでした。) 置換テンプレートの実行後に、PutAssetPropertyValueEntries が空でした。
<a name="rule-info-request-was-empty"></a>

**注記**  
このメッセージは `INFO` レベルのログです。

リクエストに、必須パラメータをすべて含むエントリが少なくとも 1 つ含まれている必要があります。

置換テンプレートなどのルールのパラメータが空でない値になることを確認します。置換テンプレートは、ルールクエリステートメントの `AS` 句に定義されている値にアクセスできません。詳細については、*[AWS IoT Developer Guide]* (デベロッパーガイド) の[[Substitution templates]](https://docs.aws.amazon.com/iot/latest/developerguide/iot-substitution-templates.html) (置換テンプレート) を参照してください。

## ルールをトラブルシューティング (AWS IoT SiteWise)
<a name="rule-tutorial-troubleshoot-rule"></a>

CPU とメモリの使用状況データが想定 AWS IoT SiteWise どおりに表示されない場合は、この手順のステップに従ってルールをトラブルシューティングします。この手順では、MQTT テストクライアントでエラーメッセージを表示するために、エラーアクションとして再パブリッシュルールアクションを設定します。また、トラブルシューティングするために CloudWatch Logs へのロギングを設定することもできます。詳細については、「[AWS IoT SiteWise ルールアクションのトラブルシューティング](#troubleshoot-rule)」を参照してください。

**再パブリッシュエラーアクションをルールに追加するには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)に移動します。

1. 左側のナビゲーションペインで [**メッセージルーティング**] を選択し、[**ルール**] を選択します。

1. 先ほど作成したルールを選択し、[**編集**] を選択します。

1. [**エラーアクション - *オプション***] で、[**エラーアクションの追加**] を選択します。

1. **「 AWS IoT トピックにメッセージを再発行する**」を選択します。

1. **トピック**で、エラーへのパス ( など) を入力します**sitewise/rule/tutorial/error**。 AWS IoT Core はこのトピックにエラーメッセージを再発行します。

1. 先に作成したロール (**SiteWiseTutorialDeviceRuleRole** など) を選択します。

1. **[更新]** を選択します。

再パブリッシュエラーアクションを設定したら、 AWS IoT Coreの MQTT テストクライアントでエラーメッセージを見ることができます。

次の手順では、MQTT テストクライアントでエラートピックにサブスクライブします。

**エラーアクショントピックをサブスクライブするには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)に移動します。

1. 左側のナビゲーションページで、[**MQTT テストクライアント**] を選択して MQTT テストクライアントを開きます。

1. [**トピックのフィルター**] で、**sitewise/rule/tutorial/error** と入力し、[**サブスクリプション**] を選択します。

エラーメッセージが表示された場合は、エラーメッセージで `failures` 配列を表示して問題を診断します。考えられる問題とその解決方法の詳細については、「[AWS IoT SiteWise ルールアクションのトラブルシューティング](#troubleshoot-rule)」を参照してください。

エラーが表示されない場合は、ルールが有効になっていて、再パブリッシュエラーアクションで設定したトピックと同じトピックにサブスクライブしていることを確認します。それでもエラーが表示されない場合は、デバイススクリプトが実行され、デバイスのシャドウが正常に更新されていることを確認します。

**注記**  
デバイスのシャドウ更新トピックにサブスクライブして、 AWS IoT SiteWise アクションが解析するペイロードを表示することもできます。これを行うには、次のトピックをサブスクライブしてください。  

```
$aws/things/+/shadow/update/accepted
```

## ルールをトラブルシューティング (DynamoDB)
<a name="dynamodb-tutorial-troubleshoot-rule"></a>

デモのアセットデータが想定通りに DynamoDB テーブルで表示されない場合は、ここに記載されているステップに従って、ルールをトラブルシューティングします。この手順では、MQTT テストクライアントでエラーメッセージを表示するために、エラーアクションとして再パブリッシュルールアクションを設定します。また、トラブルシューティングするために CloudWatch Logs へのロギングを設定することもできます。詳細については、*AWS IoT [Developer Guide]* (デベロッパーガイド) の [[Monitoring with CloudWatch Logs]](https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html) (CloudWatch Logsでモニタリングする) を参照してください。

**再パブリッシュエラーアクションをルールに追加するには**

1. [AWS IoT コンソール](https://console.aws.amazon.com/iot/)に移動します。

1. 左側のナビゲーションペインで [**アクト**] を選択し、[**ルール**] を選択します。

1. 先ほど作成したルールを選択します。  
![AWS IoT コア「ルール」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-choose-rule-console.png)

1. [**エラーアクション**] で、[**アクションの追加**] を選択します。

1. **「 AWS IoT トピックにメッセージを再発行する**」を選択します。  
![AWS IoT 再発行アクションが強調表示された Core 「アクションの選択」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-choose-republish-action-console.png)

1. ページの下部にある [**アクションの設定**] を選択します。

1. [**Topic**] (トピック) で、**windspeed/error** と入力します。 AWS IoT Core はこのトピックにエラーメッセージを再発行します。  
![AWS IoT 「Topic」が強調表示された Core「Configure Republish action」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-configure-republish-action-console.png)

1. **選択** を選択して、前に作成したロールを使用してエラーアクションを実行するアクセスを AWS IoT Core に付与します。

1. ロールの横にある [**選択**] を選択します。  
![AWS IoT ロール選択ボタンが強調表示された Core 「再発行アクションの設定」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-select-role-console.png)

1. [**ロールの更新**] を選択して、追加のアクセス許可をロールに追加します。  
![AWS IoT ロールの更新ボタンが強調表示された Core 「再発行アクションの設定」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-update-role-console.png)

1. [**アクションの追加]** を選択して、エラーアクションの追加を終了します。

1. コンソールの左上にある戻る矢印を選択して、 AWS IoT Core コンソールのホームに戻ります。

再発行エラーアクションを設定したら、 AWS IoT Core の MQTT テストクライアントでエラーメッセージを表示できます。

次の手順では、MQTT テストクライアントでエラートピックにサブスクライブします。

**エラーアクショントピックをサブスクライブするには**

1.  AWS IoT Core コンソールの左側のナビゲーションページで、**テスト**を選択します。

1. [**トピックのサブスクリプション**] フィールドで、**windspeed/error** と入力し、[**トピックへのサブスクリプション**] を選びます。  
![AWS IoT 「トピックにサブスクライブ」ボタンが強調表示されたコア「MQTT クライアント」ページのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-subscribe-error-topic-console.png)

1. エラーメッセージが表示されるのを監視し、エラーメッセージで `failures` 配列を調べて、次の一般的な問題を診断します。
   + ルールクエリステートメントのタイプミス
   + ロールのアクセス許可の不足

   エラーが表示されない場合は、ルールが有効になっていて、再パブリッシュエラーアクションで設定したトピックと同じトピックにサブスクライブしていることを確認します。それでもエラーが表示されない場合は、デモの風力発電所アセットが存在し、風速プロパティで通知が有効になっているかを確認します。デモアセットの有効期限が切れて消えた場合は AWS IoT SiteWise、新しいデモを作成し、更新されたアセットモデルとプロパティ IDs を反映するようにルールクエリステートメントを更新できます。