

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 故障排除 AWS IoT SiteWise
<a name="troubleshooting"></a>

使用以下信息对问题进行故障排除 AWS IoT SiteWise。

**Topics**
+ [对 SiteWise 边缘网关进行故障排除](troubleshooting-gateway.md)
+ [对 AWS IoT SiteWise 门户进行故障排除](troubleshooting-portal.md)
+ [对 AWS IoT SiteWise 规则操作进行故障排除](troubleshoot-rule.md)
+ [批量导入和导出操作故障排除](troubleshooting-bulk.md)

# 对 SiteWise 边缘网关进行故障排除
<a name="troubleshooting-gateway"></a>

浏览相关主题，解决常见的 AWS IoT SiteWise Edge 网关问题。

您还可以查看 SiteWise Edge 网关报告的 CloudWatch 指标，以解决连接或数据流问题。有关更多信息，请参阅 [AWS IoT SiteWise 使用 Amazon CloudWatch 指标进行监控](monitor-cloudwatch-metrics.md)。

**Topics**
+ [配置和访问 SiteWise Edge 网关日志](#configure-gateway-logs)
+ [排除 SiteWise Edge 网关问题](#troubleshoot-gateway-issues)
+ [对 AWS IoT SiteWise Edge 应用程序进行故障排除 Siemens Industrial Edge](#troubleshoot-siemens-app)
+ [边缘开源集成疑难解答](#open-source-troubleshooting)
+ [疑难解答 AWS IoT Greengrass 问题](#troubleshoot-greengrass-issues)

## 配置和访问 SiteWise Edge 网关日志
<a name="configure-gateway-logs"></a>

在查看 SiteWise Edge 网关日志之前，必须将 SiteWise Edge 网关配置为将日志发送到 Amazon CloudWatch Logs 或将日志存储在本地文件系统上。
+ 如果您想使用 CloudWatch AWS 管理控制台 来查看 SiteWise Edge 网关的日志文件，请使用日志。有关更多信息，请参阅 [使用 Amazon CloudWatch 日志](gateway-cloudwatch-logs.md)。
+ 如果您想使用命令行或本地软件查看 SiteWise Edge 网关的日志文件，请使用本地文件系统日志。有关更多信息，请参阅 [使用服务登录 AWS IoT SiteWise](gateway-local-logs.md)。

## 排除 SiteWise Edge 网关问题
<a name="troubleshoot-gateway-issues"></a>

使用以下信息对 SiteWise Edge 网关问题进行故障排除。

**Topics**
+ [无法将包部署到 SiteWise Edge 网关](#gateway-issue-ggv2-packs)
+ [AWS IoT SiteWise 无法从 OPC UA 服务器接收数据](#gateway-issue-data-streams)
+ [控制面板中未显示任何数据](#gateway-issue-no-data)
+ [aws.iot 中显示 “找不到或加载主类”。 SiteWiseEdgePublisher 在/ greengrass/v2/logs 错误处登录](#troubleshoot-java-issues)
+ [我看见了 “SESSION\$1TAKEN\$1OVER” 或 “com.aws.greengrass.mqttclient”。 MqttClient: 无法通过 Spooler 发布消息，将重试。' ”](#sa-troubleshoot-multiple-use)
+ [我看到了 'com.aws.greengrass.deployment。 IotJobsHelper: 未找到部署作业。' 或“Deployment result already reported. ”](#sa-troubleshoot-reuse)
+ [尝试在 OPC UA 数据源的属性组中配置时间戳设置时，我看到 “SYNC\$1FAILED” 状态](#troubleshoot-gateway-sync-failed-timestamp)
+ [不包括转换后的数据类型](#troubleshoot-data-conversion)
+ [信任商店问题](#troubleshoot-trust-stores)
+ [支持代理的安装问题](#troubleshoot-proxy-during-installation)

### 无法将包部署到 SiteWise Edge 网关
<a name="gateway-issue-ggv2-packs"></a>

如果 n AWS IoT Greengrass ucleus 组件 (`aws.greengrass.Nucleus`) 已过期，则可能无法将包部署到您的 SiteWise Edge 网关。您可以使用 AWS IoT Greengrass V2 控制台升级 n AWS IoT Greengrass ucleus 组件。

**升级 n AWS IoT Greengrass ucleus 组件（控制台）**

1. 导航至 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com/greengrassIntro)。

1. 在导航窗格的 **AWS IoT Greengrass** 下，选择**部署**。

1. 在**部署**列表中，选择要修改的部署。

1. 选择**修订**。

1. 在**指定目标**页面，选择**下一步**。

1. 在**选择组件**页面上**公共组件**下的搜索框中，输入 **aws.greengrass.Nucleus**，然后选择 **aws.greengrass.Nucleus**。

1. 选择**下一步**。

1. 在**配置组件**页面上，选择**下一步**。

1. 在**配置高级设置**页面上，选择**下一步**。

1. 在 **检查** 页上，选择 **部署**。

### AWS IoT SiteWise 无法从 OPC UA 服务器接收数据
<a name="gateway-issue-data-streams"></a>

如果您的 AWS IoT SiteWise 资产未接收 OPC UA 服务器发送的数据，则可以搜索 SiteWise Edge 网关的日志来解决问题。查找包含以下消息的信息级别 `swPublisher` 日志。

```
Emitting diagnostic name=PublishError.SomeException
```

根据日志*SomeException*中的类型，使用以下异常类型和相应的问题对您的 SiteWise Edge 网关进行故障排除：
+ **ResourceNotFoundException**— 您的 OPC UA 服务器发送的数据与任何资产的属性别名都不匹配。在以下两种情况下，可能会发生此异常：
  + 您的属性别名与 OPC UA 变量不完全匹配，包括您定义的任何源前缀。检查属性别名和源前缀是否正确。
  + 您尚未将 OPC UA 变量映射到资产属性。有关更多信息，请参阅 [管理数据流 AWS IoT SiteWise](manage-data-streams.md)。

    如果您已经映射了想要输入的所有 OPC UA 变量 AWS IoT SiteWise，则可以筛选 SiteWise Edge 网关发送了哪些 OPC UA 变量。有关更多信息，请参阅 [在 SiteWise Edge 中使用 OPC UA 节点过滤器](opc-ua-node-filters.md)。
+ **InvalidRequestException**— 您的 OPC UA 变量数据类型与您的资产属性数据类型不匹配。例如，如果 OPC UA 变量具有整数数据类型，相应的资产属性则必须是整数数据类型。双精度类型的资产属性不能接收 OPC UA 整数值。要解决此问题，请使用正确的数据类型定义新属性。
+ **TimestampOutOfRangeException**— 您的 SiteWise Edge 网关正在发送超出可 AWS IoT SiteWise 接受范围的数据。 AWS IoT SiteWise 拒绝过去时间戳早于 7 天或将来 5 分钟以上的任何数据点。如果您的 SiteWise Edge 网关断电或与 AWS 云的连接中断，则可能需要清除 SiteWise Edge 网关的缓存。
+ **ThrottlingException**或者 **LimitExceededException**— 您的请求超出了 AWS IoT SiteWise 服务配额，例如提取的数据点速率或资产属性数据 API 操作的请求速率。检查您的配置是否未超过 [AWS IoT SiteWise 配额](endpoints-and-quotas.md#quotas)。

### 控制面板中未显示任何数据
<a name="gateway-issue-no-data"></a>

如果您的控制面板中没有显示任何数据，则 SiteWise Edge 网关的**发布器配置**和 Dat **a Sour** ce 可能不同步。如果二者不同步，更新数据来源名称可能会加快从云端到边缘的同步，从而修复不同步错误。

**要更新数据来源的名称，请按以下步骤操作：**

1. 导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. 在导航窗格中，选择 **Edge 网关**。

1. 选择连接到仪表板的 SiteWise Edge 网关。

1. 在**数据来源**下，选择**编辑**。

1. 选择一个新的源**名称**，然后选择**保存**以确认您的更改。

1. 确认**数据来源**表中的数据来源名称已更新，以验证您的更改。

### aws.iot 中显示 “找不到或加载主类”。 SiteWiseEdgePublisher 在/ greengrass/v2/logs 错误处登录
<a name="troubleshoot-java-issues"></a>

如果您看到此错误，则可能需要更新 SiteWise Edge 网关的 Java 版本。
+ 从终端设备运行以下命令：

  ```
  java -version
  ```

  您的 SiteWise Edge 网关所运行的 java 版本将显示在下面`OpenJDK Runtime Environment`。您会看到如下响应：

  ```
  openjdk version "11.0.20" 2023-07-18 LTS
  OpenJDK Runtime Environment Corretto011.0.20.8.1 (build 11.0.20+8-LTS
  OpenJDK 64-Bit Server VM Corretto-11.0.20.8.1 (build 11.0.20+8-LTS, mixed node)
  ```

如果你运行的是 Java 版本 11.0.20.8.1，则必须将 IoT P SiteWise ublisher 包更新到 2.4.1 或更高版本。只有 java 版本 11.0.20.8.1 受到影响，具有其他 Java 版本的环境可以继续使用旧版本的 IoT SiteWise Publisher 组件。有关更新组件包的更多信息，请参阅[更改 SiteWise Edge 网关组件包的版本](manage-gateways-ggv2.md#manage-gateway-update-packs)。

### 我看见了 “SESSION\$1TAKEN\$1OVER” 或 “com.aws.greengrass.mqttclient”。 MqttClient: 无法通过 Spooler 发布消息，将重试。' ”
<a name="sa-troubleshoot-multiple-use"></a>

如果您在的日志`com.aws.greengrass.mqttclient.MqttClient: Failed to publish the message via Spooler and will retry.`中看到包含的警告`SESSION_TAKEN_OVER`或包含错误的信息`/greengrass/v2/logs/greengrass.log`，则可能是您正在尝试对多台设备上的多个 SiteWise Edge 网关使用相同的配置文件。每个 SiteWise Edge 网关都需要一个唯一的配置文件才能连接到您的 AWS 账户。

### 我看到了 'com.aws.greengrass.deployment。 IotJobsHelper: 未找到部署作业。' 或“Deployment result already reported. ”
<a name="sa-troubleshoot-reuse"></a>

如果您在 `/greengrass/v2/logs/greengrass.log` 的日志中看到 `com.aws.greengrass.deployment.IotJobsHelper: No deployment job found.` 或 `Deployment result already reported.`，则您可能正在尝试重复使用相同的配置文件。

这种情况有多种解决方案：
+ 要重复使用此配置文件，请执行以下操作：

  1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

  1. 在导航窗格中，选择 **Edge 网关**。

  1. 选择要重复使用的 SiteWise Edge 网关。

  1. 选择**更新**选项卡。

  1. 选择其他发布者版本，然后选择**部署**。

按照 [为 Siemens Industrial Edge 创建网关](sa-create-config.md) 中的步骤创建新的配置文件。

### 尝试在 OPC UA 数据源的属性组中配置时间戳设置时，我看到 “SYNC\$1FAILED” 状态
<a name="troubleshoot-gateway-sync-failed-timestamp"></a>

在 AWS IoT SiteWise 更新 2.5.0 版本的 OPC UA 收集器组件时，我们引入了一个新的时间戳配置选项。 AWS IoT Greengrass 您可以使用设备上的时间戳，也可以使用服务器上的时间戳。旧版本的 OPC UA 收集器组件不支持此选项，因此无法同步。

有两种方法可以解决数据源同步失败的状态。推荐的方法是将 IoT SiteWise OPC UA 收集器组件升级到 2.5.0 或更高版本。或者，如果您将时间戳设置为，则可以继续使用较旧的 OPC UA 收集器组件版本。`Source`要了解如何升级 IoT SiteWise OPC UA 收集器组件，请参阅[更新 AWS IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。我们建议使用所有组件的最新版本。

**注意**  
当数据源同步状态失败时，不会出现数据中断。源数据继续流入 AWS IoT SiteWise。配置根本没有与部署中的 IoT SiteWise OPC UA 收集器组件同步。 AWS IoT Greengrass V2 

**更改属性组的时间戳配置**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. 在导航窗格中，选择 **Edge 网关**。

1. 选择要编辑的网关。

1. 在**数据源**部分，选择同步失败状态的数据源，然后选择**编辑**。

1. 展开**高级配置**，然后展开**群组设置**。

1. 在**时间戳**中，选择**来源**。选择 S **ourc** e 会将该`timestampToReturn`属性从配置中删除。默认情况下，此设置允许从您的设备收集数据源时间戳，从而允许数据源与 IoT SiteWise OPC UA 收集器组件同步。

1. 选择**保存**。

### 不包括转换后的数据类型
<a name="troubleshoot-data-conversion"></a>

如果您在将不支持的 OPC UA 数据类型转换为字符串时看到错误 AWS IoT SiteWise，可能有以下几个原因：
+ 您尝试转换的数据类型是复杂数据类型。不支持复杂数据类型。
+ 将**目标**用于**使用 Amazon S3 进行AWS IoT SiteWise 缓冲**时，完整字符串值会保留在推送到 Amazon S3 存储桶的文件中。稍后向中提取数据时 AWS IoT SiteWise，长度超过 1024 字节的完整字符串值将被拒绝。

### 信任商店问题
<a name="troubleshoot-trust-stores"></a>

如果您在 SiteWise Edge 中遇到与信任存储相关的问题，请考虑以下故障排除步骤：
+ 验证 AWS IoT Greengrass 根 CA 证书在相应的信任存储中是否存在且格式正确
+ 确保 Java KeyStore 密码设置正确，并且 SiteWise Edge 组件可以访问
+ 检查所有自定义证书（例如 HTTPS 代理）的格式是否正确（通常为 PEM）并正确导入到信任存储库中
+ 确认信任存储库具有正确的文件权限并且 SiteWise Edge 进程可以访问
+ 查看 SiteWise Edge 日志中是否存在任何 SSL/TLS 相关错误，这些错误可能表明存在信任存储问题
+ 使用诸如验证信任存储库功能`openssl`之类的工具独立测试 SSL/TLS 连接

### 支持代理的安装问题
<a name="troubleshoot-proxy-during-installation"></a>

如果您在代理配置过程中遇到问题，请考虑以下故障排除步骤：
+ 验证代理 URL 的格式是否正确且包含正确的架构（`http://`或`https://`）
+ 如果任何代理凭证包含特殊字符，请确保它们都经过网址编码
+ 确认无代理列表包含所有必需的本地地址和 AWS 服务端点
+ 对于 HTTPS 代理，请验证所提供的 CA 证书是否为 PEM 格式
+ 查看安装日志，了解可能表明问题根源的特定错误消息
+ 独立测试代理连接以确保其正常运行

## 对 AWS IoT SiteWise Edge 应用程序进行故障排除 Siemens Industrial Edge
<a name="troubleshoot-siemens-app"></a>

要对Siemens Industrial Edge设备上的 AWS IoT SiteWise Edge 应用程序进行故障排除，您可以通过Siemens Industrial Edge Management或Siemens Industrial Edge设备 (IED) 门户访问该应用程序的日志。有关更多信息，请参阅 Siemens 文档中的[下载日志](https://docs.eu1.edge.siemens.cloud/build_a_device/device_building/concepts/howto-download-edge-device-logs.html)。

### 我的数据未显示在 AWS IoT SiteWise
<a name="w2aac51b7c19b7"></a>
+ 确保您的 Databus 用户没有任何问题，并且 **Databus\$1Configuration** 的对勾图标为绿色，而非灰色。
+ 您当前运行的 Siemens Industrial Edge Management 版本可能不包含 Secure Storage 功能。请升级您的 Siemens 操作系统版本。有关更多信息，请参阅 [Siemens Secure Storage和 AWS IoT SiteWise Edge 应用程序](sitewise-edge-on-siemens.md#sa-secure-storage)。

### 我在日志中看到 “缺少配置文件 AWS\$1REGION”
<a name="sa-corrupt-json"></a>

如果您在 Siemens 日志中看到 `Config file missing AWS_REGION`，则该配置文件的 JSON 已损坏。您将需要创建一个新的配置文件。按照 [为 Siemens Industrial Edge 创建网关](sa-create-config.md) 中的步骤创建新的配置文件。

### 我在 Edge 网关配置中看到 “不同步” 错误消息
<a name="sa-sync-failed"></a>

部署完成后，如果您在Siemens Industrial Edge网关上看到`Out of sync`错误消息，则表示物联网 SiteWise 发布者组件与您的网关不同步。物联网 SiteWise 发布者组件在Siemens Industrial Edge网关的后台运行，以提供 MQTT 主题功能。我们将Siemens Industrial Edge网关升级为使用功能命名空间，`iotsitewise:publisher:3`而不是`iotsitewise:publisher:2`。您可以更新到最新版本的发布者来解决此问题。

**升级到最新版本的 IoT SiteWise 发行商**

1. <a name="sitewise-open-console"></a>导航至 [AWS IoT SiteWise 控制台](https://console.aws.amazon.com/iotsitewise/)。

1. 在导航窗格中，选择 **Edge 网关**。

1. 选择要编辑的Siemens Industrial Edge网关。

1. 在 **Edge 功能**部分，选择 **View 软件版本**。

1. 在 “发布者” 下拉菜单下选择最新版本的 IoT SiteWise **发行商**。

1. 选择**完成**。

## 边缘开源集成疑难解答
<a name="open-source-troubleshooting"></a>

本节提供了在将开源工具与 SiteWise Edge 集成时可能遇到的常见问题的解决方案。

**注意**  
Node-red®、InfluxDB® 和 Grafana® 不是 Edge 的供应商或供应商。 SiteWise 

### 连接问题
<a name="connection-issues"></a>

Node-red 无法连接到 MQTT 代理  
验证 MQTT 代理是否正在运行且可在指定端口上访问。检查您的网络配置并确保经纪人地址正确无误。  
要验证 MQTT 代理状态，请运行：  

```
docker ps | grep emqx
```

InfluxDB 连接错误  
确保您的身份验证令牌有效，并且您指定了正确的组织和存储桶名称。检查InfluxDB是否正在运行并且可以访问。  
要验证 InfluxDB 状态，请运行：  

```
curl -I http://localhost:8086
```

Grafana 无法连接到 InfluxDB  
验证 Grafana 中的 InfluxDB 数据源配置是否正确，包括网址、身份验证令牌、组织和存储桶。

### 数据流问题
<a name="data-flow-issues"></a>

中没有显示任何数据 AWS IoT SiteWise  
检查 Node-RED 流程中的属性别名是否与预期格式匹配。验证 MQTT 主题结构是否正确，并且 SiteWise Edge 网关已正确配置为接收来自 MQTT 代理的数据。

InfluxDB 中没有存储 SiteWise 边缘数据  
验证 Node-red 保留流程的配置是否正确，以及 InfluxDB 写入器节点是否具有正确的存储桶和测量设置。检查 Node-red 调试输出中是否存在任何错误。

数据格式错误  
确保您的数据转换函数在格式之间正确转换数据。使用 Node-red 调试节点在流程的每个阶段检查数据。

### 性能问题
<a name="performance-issues"></a>

CPU 或内存使用率过高  
监控资源使用情况，并根据需要调整组件的配置。考虑降低数据收集频率或实施数据筛选以减少处理负载。  
要监控资源使用情况，请运行：  

```
docker stats
```

Grafana 仪表板加载速度缓慢  
优化您的InfluxDB查询，并考虑在仪表板面板中添加时间范围限制。使用适当的聚合函数减少显示的数据点数量。

### 日志和诊断
<a name="logging-and-diagnostics"></a>

要对问题进行故障排除，请检查每个组件的日志：

节点红色日志  
在 Node-red 控制台中查看日志或运行：  

```
docker logs node-red
```

InfluxDB 日志  
通过运行以下命令访问日志：  

```
docker logs influxdb
```

Grafana 日志  
运行以下命令查看日志：  

```
docker logs grafana
```

SiteWise 边缘日志  
查看 SiteWise Edge 网关日志，了解 MQTT 连接和数据处理问题。有关更多信息，请参阅 [对 SiteWise 边缘网关进行故障排除](#troubleshooting-gateway)。

## 疑难解答 AWS IoT Greengrass 问题
<a name="troubleshoot-greengrass-issues"></a>

要查找在上配置或部署 SiteWise Edge 网关的许多问题的解决方案 AWS IoT Greengrass，请参阅*AWS IoT Greengrass 开发人员指南 AWS IoT Greengrass*中的[疑难解答](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-troubleshooting.html)。

# 对 AWS IoT SiteWise 门户进行故障排除
<a name="troubleshooting-portal"></a>

解决 AWS IoT SiteWise 门户网站的常见问题。

## 用户和管理员无法访问 AWS IoT SiteWise 门户
<a name="acessing-SiteWise-portals"></a>

如果用户或管理员无法访问您的 AWS IoT SiteWise 门户，则您的附加 AWS Identity and Access Management (IAM) 策略可能会限制您的成功登录。

请参阅以下会导致登录失败的 IAM 策略示例：

**注意**  
任何包含 `"Condition"` 元素的附加 IAM 策略都会导致登录失败。

**示例 1**：此处的条件是 IP 受限，这将导致登录失败。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iotsitewise:DescribePortal"
            ],
            "Resource": "*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "203.0.113.0/24"
                    ]
                }
            }
        }
    ]
}
```

------

**示例 2**：此处的条件是包含标签，这将导致登录失败。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iotsitewise:DescribePortal"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "aws:ResourceTag/project": "*"
                }
            }
        }
    ]
}
```

------

向门户添加用户或管理员时，请避免创建限制用户权限（例如受限 IP）的 IAM policy。任何权限受限的附加策略都将无法连接到 AWS IoT SiteWise 门户。

# 对 AWS IoT SiteWise 规则操作进行故障排除
<a name="troubleshoot-rule"></a>

要对中的 AWS IoT SiteWise 规则操作进行故障排除 AWS IoT Core，可以执行以下步骤之一：
+ 配置 Amazon CloudWatch 日志
+ 为规则配置重新发布错误操作

然后，将错误消息与本主题中的错误进行比较，以排查问题。

**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>

您可以配置为 AWS IoT 将不同级别的信息 CloudWatch 记录到 Logs 中。

**配置和访问 CloudWatch 日志**

1. 要为配置日志记录 AWS IoT Core，请参阅《*AWS IoT 开发人员指南》*中的[使用 CloudWatch 日志进行监控](https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html)。

1. 导航至 [CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择**日志组**。

1. 选择**AWSIot日志**组。

1. 选择最近的日志流。默认情况下，首先 CloudWatch 显示最新的日志流。

1. 选择日志条目以展开日志消息。您的日志条目可能类似于以下屏幕截图。  
![\[CloudWatch “AWS IoT 日志” 屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/rule-ingestion/troubleshoot-rule-logs-console.png)

1. 将错误消息与本主题中的错误进行比较，以排查问题。

## 配置重新发布错误操作
<a name="configure-republish-error-action"></a>

您可以对规则的错误操作进行配置以处理错误消息。在该过程中，您将重新发布规则操作配置为错误操作，以在 MQTT 测试客户端中查看错误消息。

**注意**  
重新发布错误操作仅输出 `ERROR` 级别日志的等效内容。如果需要更多详细日志，则必须[配置 CloudWatch ](#configure-iot-logs)日志。

**在规则中添加重新发布错误操作**

1. 导航至 [AWS IoT 控制台](https://console.aws.amazon.com/iot/)。

1. 在左侧导航窗格中，选择**行动**，然后选择**规则**。

1. 选择您的规则。

1. 在 **错误操作** 下面，选择 **添加操作**。

1. 选择 “**向 AWS IoT 主题重新发布消息”**。  
![\[AWS IoT Core “选择操作” 页面屏幕截图，其中突出显示了 “重新发布” 操作。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/rule-ingestion/rule-choose-republish-action-console.png)

1. 选择页面底部的 **配置操作**。

1. 在**主题**中，输入唯一的主题（例如，**sitewise/windfarm/rule/error**）。 AWS IoT Core 将重新发布此主题的错误消息。

1. 选择 **“选择”** 以授予执行错误操作的 AWS IoT Core 访问权限。

1. 选择为规则创建的角色旁边的 **选择**。

1. 选择 **更新角色** 以在角色中添加其他权限。

1. 选择**添加操作**。

   您的规则的错误操作应类似于以下屏幕截图。  
![\[AWS IoT Core “规则” 页面重新发布错误操作屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/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/zh_cn/iot-sitewise/latest/userguide/images/rule-ingestion/troubleshoot-rule-subscribe-error-topic-console.png)

1. 等待错误消息出现，然后在任何错误消息中展开 `failures` 数组。

   接下来，将错误消息与本主题中的错误进行比较，以排查问题。

## 排查规则问题
<a name="troubleshoot-rule-issues"></a>

使用以下信息排查规则问题。

**Topics**
+ [错误：成员必须在当前时间戳之前 604800 秒和之后 300 秒范围内](#rule-error-timestamp-out-of-range)
+ [错误：Property value does not match data type <type> (属性值与数据类型 <type> 不匹配)](#rule-error-invalid-data-type)
+ [错误：用户：<role-arn>无权在资源上执行：iotsitewise：BatchPutAssetPropertyValue](#rule-error-role-not-authorized)
+ [错误：iot.amazonaws.com 无法在资源上执行：sts：AssumeRole <role-arn>](#rule-error-unable-to-assume-role)
+ [信息：未发送任何请求。 PutAssetPropertyValueEntries 执行替换模板后为空。](#rule-info-request-was-empty)

### 错误：成员必须在当前时间戳之前 604800 秒和之后 300 秒范围内
<a name="rule-error-timestamp-out-of-range"></a>

与当前 Unix 纪元时间相比，您的时间戳早了超过 7 天或晚了超过 5 分钟。尝试以下操作：
+ 检查您的时间戳是否采用 Unix 纪元 (UTC) 时间。如果您提供具有不同时区的时间戳，则会收到此错误。
+ 检查您的时间戳是否以秒为单位。 AWS IoT SiteWise 期望时间戳分为以秒为单位的时间（以 Unix 纪元时间为单位）和以纳秒为单位的偏移量。
+ 检查您正在上传的数据的时间戳是否是在过去 7 天之前。

### 错误：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`属性字段）。

### 错误：用户：<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)。

### 错误：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 开发人员指南*中的 [传递角色权限](https://docs.aws.amazon.com/iot/latest/developerguide/pass-role.html)。

### 信息：未发送任何请求。 PutAssetPropertyValueEntries 执行替换模板后为空。
<a name="rule-info-request-was-empty"></a>

**注意**  
此消息是 `INFO` 级别日志。

您的请求必须至少具有一个包含所有必需参数的条目。

检查规则的参数（包括替换模板）是否会导致非空值。替换模板无法访问规则查询语句中的 `AS` 子句定义的值。有关更多信息，请参阅 *AWS IoT 开发人员指南*中的[替换模板](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 进行故障排除。有关更多信息，请参阅 [对 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 进行故障排除。有关更多信息，请参阅《AWS IoT 开发人员指南》中的[使用 CloudWatch 日志进行监控](https://docs.aws.amazon.com/iot/latest/developerguide/cloud-watch-logs.html)。

**在规则中添加重新发布错误操作**

1. 导航至 [AWS IoT 控制台](https://console.aws.amazon.com/iot/)。

1. 在左侧导航窗格中，选择**行动**，然后选择**规则**。

1. 选择您以前创建的规则。  
![\[AWS IoT 核心 “规则” 页面屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-choose-rule-console.png)

1. 在 **错误操作** 下面，选择 **添加操作**。

1. 选择 “**向 AWS IoT 主题重新发布消息”**。  
![\[AWS IoT 核心 “选择操作” 页面屏幕截图，其中突出显示了 “重新发布” 操作。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-choose-republish-action-console.png)

1. 选择页面底部的 **配置操作**。

1. 在 **Topic**（主题）中输入 **windspeed/error**。 AWS IoT Core 将重新发布此主题的错误消息。  
![\[AWS IoT 核心 “配置重新发布操作” 页面屏幕截图，突出显示 “主题”。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-configure-republish-action-console.png)

1. **选择** Select 以授予使用您之前创建的角色执行错误操作的 C AWS IoT ore 访问权限。

1. 选择您的角色旁边的 **选择**。  
![\[AWS IoT 核心 “配置重新发布操作” 页面屏幕截图，其中角色选择按钮突出显示。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-select-role-console.png)

1. 选择 **更新角色** 以在角色中添加其他权限。  
![\[AWS IoT 核心 “配置重新发布操作” 页面屏幕截图，其中突出显示了更新角色按钮。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-update-role-console.png)

1. 选择 **添加操作** 以完成添加错误操作的过程。

1. 选择主机左上角的后退箭头返回 AWS IoT 酷睿主机主页。

设置重新发布错误操作后，您可以在 Core 的 MQTT 测试客户端中 AWS IoT 查看错误消息。

在以下过程中，您在 MQTT 测试客户端中订阅错误主题。

**订阅错误操作主题**

1. 在 AWS IoT Core 控制台的左侧导航页中，选择 “**测试**”。

1. 在 **订阅主题** 字段中，输入 **windspeed/error** 并选择 **订阅主题**。  
![\[AWS IoT 核心 “MQTT 客户端” 页面屏幕截图，突出显示 “订阅主题” 按钮。\]](http://docs.aws.amazon.com/zh_cn/iot-sitewise/latest/userguide/images/interact-dynamo-db/rule-subscribe-error-topic-console.png)

1. 观察显示的错误消息，并在错误消息中浏览 `failures` 数组以诊断以下常见问题：
   + 规则查询语句中的错别字
   + 角色权限不足

   如果未显示错误，请检查是否启用了您的规则，以及您是否订阅了在重新发布错误操作中配置的相同主题。如果仍未显示错误，请检查您的演示风电场资产是否仍然存在，以及是否在风速属性上启用了通知。如果您的演示资产过期并从中消失 AWS IoT SiteWise，则可以创建一个新的演示并更新规则查询语句以反映更新的资产模型和属性 IDs。

# 批量导入和导出操作故障排除
<a name="troubleshooting-bulk"></a>

要处理和诊断传输任务期间产生的错误，请参阅 AWS IoT TwinMaker **GetMetadataTransferJob**API：

1. 创建并运行传输任务后，调用 **GetMetadataTransferJob**API：

   ```
   aws iottwinmaker get-metadata-transfer-job \ 
   --metadata-transfer-job-id your_metadata_transfer_job_id \ 
   --region us-east-1
   ```

1.  任务状态会变为以下状态之一：
   + COMPLETED
   + CANCELLED
   + ERROR

1.  **GetMetadataTransferJob**API 返回一个[ MetadataTransferJobProgress](https://docs.aws.amazon.com/iot-twinmaker/latest/apireference/API_MetadataTransferJobProgress.html)对象。

1. 该**MetadataTransferJobProgress**对象包含以下参数：
   + **failedCount**：表示在传输过程中失败的资产数量。
   + **skippedCount**：表示在传输过程中跳过的资产数量。
   + **succeededCount**：表示在传输过程中成功的资产数量。
   + **totalCount**：表示传输过程中涉及的资产总数。

1. 此外，该 API 调用还会返回一个 **reportUrl** 元素，其中包含一个预签名 URL。如果您的传输任务出现错误并需要调查，则您可以通过此 URL 下载完整的错误报告。