

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

# 使用 Amazon IoT SiteWise 边缘网关
使用 SiteWise 边缘网关

Amazon IoT SiteWise Edge 将云功能扩展到工业边缘环境，支持本地数据处理、分析和决策。 SiteWise Edge 与其他 Amazon 服务集成，提供全面的工业物联网解决方案。 Amazon IoT SiteWise 网关充当您的工业设备和之间的中介 Amazon IoT SiteWise。

SiteWise Edge 网关在两个不同的部署目标上运行：
+ Amazon IoT Greengrass V2
+ Siemens Industrial Edge

您可以使用 SiteWise Edge 网关在边缘收集数据并将其发布到云端。对于在上运行的网关 Amazon IoT Greengrass，您还可以使用资产模型和资产在边缘处理数据。

上的 Amazon IoT SiteWise Edge 应用程序Siemens Industrial Edge支持工业设备之间的集成， Amazon IoT SiteWise 因此您可以聚合和处理原始机器数据，并在本地运行分析，然后再将精确的数据发送到 Amazon 云端。

## SiteWise 边缘网关的关键概念
网关关键概念

SiteWise Edge 为工业环境中的边缘计算提供了多种有用的功能。

**本地数据收集和处理**  
支持使用 OPC-UA 和 MQTT 等协议从工业资产中收集数据。网关在 Amazon IoT Greengrass 核心设备上运行或Siemens Industrial Edge.

**离线操作**  
在互联网中断期间继续收集和处理数据，并在连接恢复后与云端同步。

**带 Amazon IoT Greengrass 组件的边缘计算**  
使用 IoT SiteWise 发布器将数据转发到云端和 Amazon IoT SiteWise 处理器以进行本地转换和计算。发行商和处理器都是 Amazon IoT Greengrass V2 组件。有关 Amazon IoT Greengrass 组件的更多信息，请参阅[Amazon提供的组件](https://docs.amazonaws.cn/greengrass/v2/developerguide/public-components.html)。

**与集成 Amazon IoT SiteWise 以扩展云功能**  
使用 Amazon IoT SiteWise 云功能，将资产模型、分析和仪表板扩展到边缘。  
对于启用了数据处理包的网关，您可以使用 Amazon IoT SiteWise 来集中管理您 Amazon OpsHub 的 SiteWise Edge 网关。 Amazon OpsHub 提供远程管理和监控功能。有关更多信息，请参阅 [使用 Amazon OpsHub 管理 SiteWise 边缘网关 Amazon IoT SiteWise](manage-gateways-ggv2.md#opshub-app)。

**边缘的本地可视化**  
提供自定义仪表板，以便在边缘获得实时见解。  
使用本地设备上的 M SiteWise onitor 门户在设施中本地监控数据。有关更多信息，请参阅 [在边缘启用您的 Amazon IoT SiteWise 门户](monitor-enable-edge.md)。

## 实施 SiteWise Edge 的好处


SiteWise Edge 提供了许多优势，可以显著改善工业运营和决策流程。
+ 实时运营洞察力，避免云处理延迟
+ 断开连接的环境中的操作连续性
+ 通过边缘预处理降低带宽和存储成本
+ 能够在本地做出以数据为依据的决策，从而提高可靠性

# 使用以下方式自行托管 E Amazon IoT SiteWise dge 网关 Amazon IoT Greengrass V2
自托管网关

将 Amazon IoT SiteWise Edge 设置为在本地收集、处理和可视化来自工业设备的数据，然后再将其发送到云端。使用 Amazon IoT Greengrass Version 2自托管。

边 Amazon IoT SiteWise 缘网关充当工业设备和之间的中介 Amazon IoT SiteWise。 SiteWise Edge 网关在上 Amazon IoT Greengrass Version 2运行，支持本地数据收集和处理。

自托管网关有两种类型：

**启用 MQTT 的 V3 网关**  
支持 MQTT 的 V3 网关架构提供了改进的数据摄取能力。它利用 MQTT 协议实现高效的数据通信，并提供可配置的数据目的地。其中包括使用 Amazon S3 进行缓冲数据摄取以及实时数据摄取的选项。您可以实现路径过滤器来订阅特定的 MQTT 主题，从而实现有针对性的数据收集。请注意，支持 MQTT 的 V3 网关不支持数据处理包功能。有关更多信息，请参阅 [支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)。

**经典流、V2 网关**  
Classic Streams，V2 网关代表了传统的 Amazon IoT SiteWise Edge 网关架构。它非常适合现有的 SiteWise Edge 部署和习惯于既定工作流程的用户。当 Classic 直播时，V2 网关支持数据处理包，但请注意，数据处理包生成的数据无法通过 Amazon S3 提取。如果您需要保持与现有部署的兼容性或者需要数据处理包功能，请使用 Classic streams、V2 网关。有关更多信息，请参阅 [经典直播，适用 Amazon IoT SiteWise 于 Edge 的 V2 网关](classic-streams-v2-gateway.md)。

**Topics**
+ [

# Amazon IoT SiteWise Edge 自托管网关要求
](configure-gateway-ggv2.md)
+ [

# 创建自托管 SiteWise Edge 网关
](create-gateway-ggv2.md)
+ [

# 在本地设备上安装 Amazon IoT SiteWise Edge 网关软件
](install-gateway-software-on-local-device.md)
+ [

# 支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise
](mqtt-enabled-v3-gateway.md)
+ [

# 经典直播，适用 Amazon IoT SiteWise 于 Edge 的 V2 网关
](classic-streams-v2-gateway.md)
+ [

# 将数据源添加到您的 Amazon IoT SiteWise Edge 网关
](add-data-sources.md)
+ [

# Amazon IoT Greengrass Amazon IoT SiteWise Edge 的组件
](sw-edge-components.md)
+ [

# 筛选 SiteWise Edge 网关上的资产
](filter-assets-ggv2.md)
+ [

# 为 E Amazon IoT SiteWise dge 配置代理支持并管理信任存储
](edge-apis-manage-trust-stores-proxy.md)
+ [

# Amazon IoT SiteWise APIs 在边缘使用
](edge-apis.md)

# Amazon IoT SiteWise Edge 自托管网关要求
要求

Amazon IoT SiteWise 边缘网关 Amazon IoT Greengrass V2 作为一组 Amazon IoT Greengrass 组件运行，支持本地数据收集、处理和发布。要配置在上运行的 SiteWise Edge 网关 Amazon IoT Greengrass V2，请在中创建网关， Amazon Web Services 云 然后运行 SiteWise Edge 网关软件来设置您的本地设备。使用创建 SiteWise Edge 网关时，会提供安装脚本。 Amazon Web Services 管理控制台 在目标网关设备上运行此脚本以设置必要的软件和依赖关系。

## 本地设备要求


本地设备必须满足以下要求才能安装和运行 SiteWise Edge 网关软件。
+ 支持 Amazon IoT Greengrass V2 核心软件版本 [v2.3.0](https://docs.amazonaws.cn/greengrass/v2/developerguide/greengrass-release-2021-06-29.html) 或更高版本。有关更多信息，请参阅 *Amazon IoT Greengrass Version 2 开发人员指南*中的[要求](https://docs.amazonaws.cn/greengrass/v2/developerguide/setting-up.html#greengrass-v2-requirements)。
+ 以下支持平台之一：
  + OS：Ubuntu 20.04 或更高版本

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + OS：Red Hat Enterprise Linux (RHEL) 8

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + OS：Amazon Linux 2

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + OS：Debian 11

    架构：x86\$164 (AMD64) 或 ARMv8 (Aarch64)
  + OS：Windows Server 2019 及更高版本

    架构：x86\$164 () AMD64
**注意**  
ARM 平台仅支持带有数据收集包的 SiteWise Edge 网关。不支持数据处理包。
+ 内存最低为 4 GB。
+  SiteWise Edge 网关软件至少可用 10 GB 的磁盘空间。
+ 配置您的本地设备以确保可以访问正确的端口。有关所需出站服务终端节点的完整列表，请参阅 [Amazon IoT SiteWise Edge 网关所需的服务终端节点](https://docs.amazonaws.cn/prescriptive-guidance/latest/endpoints-for-iot-sitewise-edge-gateways/required-endpoints.html)。
+ Java 运行时环境（JRE）版本 11 或更高版本。Java 必须在设备的 `PATH` 环境变量中可用。要使用 Java 开发自定义组件，您必须安装 Java 开发工具包 (JDK)。我们建议您使用 [Amazon Corretto](https://docs.amazonaws.cn/corretto/) 或 [OpenJDK](https://openjdk.org/projects/jdk/)。

### 允许列入本地设备许可名单的 Amazon S3 存储桶


配置您的本地设备以提供对以下 Amazon S3 存储桶的防火墙访问权限。根据设备的相应区域配置访问权限。


| Region | 端点 | 
| --- | --- | 
|  亚太地区（东京）  |  https://iot-sitewise-gateway-ap-northeast-1-785558802005.s3.ap-northeast-1.amazonaws.com  | 
|  亚太地区（首尔）  |  https://iot-sitewise-gateway-ap-northeast-2-310055672453.s3.ap-northeast-2.amazonaws.com  | 
|  亚太地区（孟买）  |  https://iot-sitewise-gateway-ap-south-1-677656657204.s3.ap-south-1.amazonaws.com  | 
|  亚太地区（新加坡）  |  https://iot-sitewise-gateway-ap-southeast-1-475191558554.s3.ap-southeast-1.amazonaws.com  | 
|  亚太地区（悉尼）  |  https://iot-sitewise-gateway-ap-southeast-2-396319432685.s3.ap-southeast-2.amazonaws.com  | 
|  加拿大（中部）  |  https://iot-sitewise-gateway-ca-central-1-842060018567.s3.ca-central-1.amazonaws.com  | 
|  中国（北京）  |  https://iot-sitewise-gateway-cn-north-1-237124890262.s3.cn-north-1.amazonaws.com.cn  | 
|  欧洲地区（法兰克福）  |  https://iot-sitewise-gateway-eu-central-1-748875242063.s3.eu-central-1.amazonaws.com  | 
|  欧洲地区（爱尔兰）  |  https://iot-sitewise-gateway-eu-west-1-383414315062.s3.eu-west-1.amazonaws.com  | 
|  美国东部（弗吉尼亚州北部）  |  https://iot-sitewise-gateway-us-east-1-223558168232.s3.us-east-1.amazonaws.com和 https://iot-sitewise-gateway-us-east-1-223558168232.s3.amazonaws.com/  | 
|  美国东部（俄亥俄州）  |  https://iot-sitewise-gateway-us-east-2-005072661813.s3.us-east-2.amazonaws.com  | 
|  Amazon GovCloud （美国西部）  |  https://iot-sitewise-gateway-us-gov-west-1-599984565679.s3.us-gov-west-1.amazonaws.com/  | 
|  美国西部（俄勒冈州）  |  https://iot-sitewise-gateway-us-west-2-502577205460.s3.us-west-2.amazonaws.com  | 

## 数据处理包要求


**注意**  
新客户无法再使用数据处理包（DPP）功能。现有客户可以继续正常使用该服务。有关更多信息，请参阅[数据处理包可用性变更](https://docs.amazonaws.cn/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html)。
+ 如果您计划在边缘使用数据处理包 Amazon IoT SiteWise，则您的本地设备还必须满足以下要求：
  + 配备 x86 64 位四核处理器。
  + 至少有 16 GB 内存。
  + 如果使用，则至少有 32 GB 的内存空间Microsoft Windows。
  + 至少有 256 GB 可用磁盘空间。
  + 本地设备必须支持端口 443 的网络入站流量。
  + 以下端口保留供以下用户使用 Amazon IoT SiteWise：80、443、3001、4569、4572、8000、8081、8082、8084、8085、8445、8085、8445、8086、9000、9500、11080 和 50010。使用预留端口通信可能导致连接终止。
**注意**  
 Amazon IoT Greengrass V2 直播管理器组件有自己的要求。有关更多信息，请参阅《Amazon IoT Greengrass Version 2 开发人员指南**》中的 [Configuration](https://docs.amazonaws.cn/greengrass/v2/developerguide/stream-manager-component.html#stream-manager-component-configuration)。
+ 磁盘空间和计算容量最低要求取决于您的实施和用例所特有的各项因素。
  + 缓存间歇性 Internet 连接数据时所需的磁盘空间取决于以下因素：
    + 上传的数据流数
    + 每秒每个数据流的数据点数
    + 每个数据点的大小
    + 通信速度
    + 预期网络中断
  + 轮询并上传数据时所需的计算容量取决于以下因素：
    + 上传的数据流数
    + 每秒每个数据流的数据点数

## 配置使用 SiteWise Edge 网关的权限


您必须具有以下权限才能使用 SiteWise Edge 网关：

**注意**  
如果您使用 Amazon IoT SiteWise 控制台创建 SiteWise Edge 网关，则会为您添加这些权限。
+ 您的 SiteWise Edge 网关的 IAM 角色必须允许您在 Amazon IoT Greengrass V2 设备上使用 SiteWise 边缘网关来处理资产模型数据和资产数据。

  该角色允许以下服务来代入角色：`credentials.iot.amazonaws.com`。

  **权限详细信息**

  该角色必须具有以下权限：
  + `iotsitewise` — 允许主体在边缘检索资产模型数据和资产数据。
  + `iot`— 允许您的 Amazon IoT Greengrass V2 设备与之交互 Amazon IoT。
  + `logs`— 允许您的 Amazon IoT Greengrass V2 设备向 Amazon Logs 发送 CloudWatch 日志。
  + `s3`— 允许您的 Amazon IoT Greengrass V2 设备从 Amazon S3 下载自定义组件工件。

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "iotsitewise:BatchPutAssetPropertyValue",
                  "iotsitewise:List*",
                  "iotsitewise:Describe*",
                  "iotsitewise:Get*"
              ],
              "Resource": "*"
          },
          {
              "Effect": "Allow",
              "Action": [
                  "iot:DescribeCertificate",
                  "logs:CreateLogGroup",
                  "logs:CreateLogStream",
                  "logs:PutLogEvents",
                  "logs:DescribeLogStreams",
                  "s3:GetBucketLocation",
                  "s3:GetObject",
                  "iot:Connect",
                  "iot:Publish",
                  "iot:Subscribe",
                  "iot:Receive",
                  "iot:DescribeEndpoint"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------

# 创建自托管 SiteWise Edge 网关
创建网关

使用 Amazon IoT SiteWise 控制台或 Amazon CLI 创建自托管 SiteWise Edge 网关。此过程详细介绍了如何创建将安装在自己的硬件上的自托管 SiteWise Edge 网关。有关创建在 Siemens In SiteWise dustrial Edge 上运行的 Edge 网关的信息，请参阅[在上托管 SiteWise Edge 网关 Siemens Industrial Edge](sitewise-edge-on-siemens.md)。

## 创建 SiteWise Edge 网关


------
#### [ Console ]

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

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

1. 选择**创建网关**。

1. 对于**选择部署目标**，请选择**自托管网关**。

1. 选择**启用 MQTT 的 V3 网关或**经典直播、** V** 2 网关。有关每个选项的更多信息，请参阅[使用以下方式自行托管 E Amazon IoT SiteWise dge 网关 Amazon IoT Greengrass V2](gw-self-host-gg2.md)。建议使用支持 MQTT 的 V3 网关，因为它具有面向未来的功能。

1. 在**网关配置**部分，输入 SiteWise Edge 网关的名称或使用生成的名称 Amazon IoT SiteWise。

1. 在 **Greengrass 设备**操作系统下，选择要安装此 Edge 网关的设备的操作系统。 SiteWise 
**注意**  
数据处理包仅在 x86 平台上可用。它仅在 Classic 直播、V2 网关上可用

1. （可选）要在边缘处理和组织数据，请在**边缘功能**下选择**数据处理包**。

1. （可选）在**高级配置**下，执行以下操作：

   1. 对于 **Greengrass 核心设备**，请在以下选项中选择一项：
     + **默认设置**- Amazon 自动使用默认设置在中创建 Greengrass 核心设备。 Amazon IoT Greengrass V2

       1. 输入 Greengrass 核心设备的名称或使用生成的名称。 Amazon IoT SiteWise
     + **高级设置** — 如果您想使用现有 Greengrass 核心设备或手动创建一个核心设备，请选择此项。

       1. 选择 Greengrass 核心设备或选择 “**创建 Greengrass 核心设备” 在主机中创建一个**。 Amazon IoT Greengrass V2 有关更多信息，请参阅 [Amazon IoT Greengrass V2 开发人员指南](https://docs.amazonaws.cn/greengrass/v2/developerguide/setting-up.html)中的*设置Amazon IoT Greengrass Version 2 核心设备*。

1. 选择**创建网关**。

1. 在 “**生成 SiteWise Edge 网关安装程序**” 对话框中，选择 “**生成并下载**”。 Amazon IoT SiteWise 会自动生成一个安装程序，您可以使用它来配置本地设备。
**重要**  
您无法重新生成此文件。请务必将安装程序文件保存在安全位置，因为您稍后会用到该文件。

------
#### [ Amazon CLI ]

要使用创建自托管网关 Amazon CLI，请提供网关名称、指定平台和网关版本。在创建网关时，您可以指定许多其他选项。有关更多信息，请参阅《*Amazon CLI 命令*参考》中的 [create-gatew](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/create-gateway.html) ay Amazon IoT SiteWise

要使用此示例，请将用户输入占位符 替换为您自己的信息。

```
aws iotsitewise create-gateway \
    --gateway-name your-gateway-name \
    --gateway-platform greengrassV2={coreDeviceThingName=your-core-device-thing-name, coreDeviceOperatingSystem=LINUX_AMD64} \                        
    --gateway-version 3 \
    [--cli-input-json your-configuration]
```
+ `gateway-name`— 网关的唯一名称。
+ `gateway-platform`— 指定网关平台配置。对于自托管网关，请输入`greengrassV2`。有关更多信息，请参阅《*Amazon CLI 命令参考*》中 create-gateway 部分中的[选项](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/create-gateway.html#options)。 Amazon IoT SiteWise
  + `coreDeviceThingName`— Amazon IoT Greengrass V2 核心设备的物 Amazon 联网设备名称。
  + `coreDeviceOperatingSystem`— 中核心设备的操作系统 Amazon IoT Greengrass V2。必须指定操作系统`gateway-version 3`，但不适用于`gateway-version 2`。选项包括：`LINUX_AARCH64``LINUX_AMD64`、和 `WINDOWS_AMD64`
+ `gateway-version`— 网关的版本。
  + 要创建支持 MQTT 的 V3 网关，请使用网关`3`版本。
  + 要创建经典流，即 V2 网关，请使用`2`网关版本。
+ `cli-input-json`— 包含请求参数的 JSON 文件。

------

# 在本地设备上安装 Amazon IoT SiteWise Edge 网关软件
安装网关软件

创建 Amazon IoT SiteWise Edge 网关后，在本地设备上安装 SiteWise Edge 网关软件。 SiteWise 边缘网关软件可以安装在安装了 Linux 或Microsoft Windows服务器操作系统的本地设备上。

**重要**  
确保您的本地设备已连接到 Internet。

------
#### [ Linux ]

以下过程使用 SSH 连接到您的本地设备。或者，您可以使用 USB 闪存驱动器或其他工具将安装程序文件传输到本地设备。如果您不想使用 SSH，请跳至下面的**步骤 2：安装 SiteWise Edge 网关软件**。

**SSH 先决条件**

在使用 SSH 连接到您的设备之前，请先完成以下先决条件。
+ Linux 和 macOS – 下载并安装 OpenSSH。有关更多信息，请参阅 [https://www.openssh.com](https://www.openssh.com/)。

**步骤 1：将安装程序复制到您的 SiteWise Edge 网关设备**

以下说明介绍了如何使用 SSH 客户端连接到您的本地设备。

1. 要连接到您的设备，请在计算机的终端窗口中运行以下命令，将*username*和*IP*替换为具有更高权限和 IP 地址的用户名。

   ```
   ssh username@IP
   ```

1. 要将 Amazon IoT SiteWise 生成的安装程序文件传输到您的 SiteWise Edge 网关设备，请运行以下命令。
**注意**  
*path-to-saved-installer*替换为计算机上用于保存安装程序文件的路径和安装程序文件的名称。
*IP-address*替换为本地设备的 IP 地址。
*directory-to-receive-installer*替换为本地设备上用于接收安装程序文件的路径。

   ```
   scp path-to-saved-installer.sh user-name@IP-address:directory-to-receive-installer
   ```

**步骤 2：安装 SiteWise Edge 网关软件**

在以下步骤中，在 SiteWise Edge 网关设备的终端窗口中运行命令。

1. 向安装程序文件授予执行权限。

   ```
   chmod +x path-to-installer.sh
   ```

1. 运行安装程序。

   ```
   sudo ./path-to-installer.sh
   ```

------
#### [ Windows Server ]

**先决条件**

要安装 SiteWise Edge 网关软件，您必须具备以下先决条件：
+ Microsoft Windows已安装 2019 或更高版本的服务器
+ 管理员权限
+ PowerShell 已安装版本 5.1 或更高版本
+ SiteWise Edge 网关安装程序已下载到将在其中进行配置的 Windows 服务器

**步骤 1：以管理员 PowerShell 身份运行**

1. 在要安装 SiteWise 边缘网关的 Windows 服务器上，以管理员身份登录。

1. 在 Windows 搜索栏**PowerShell**中输入。

1. 在搜索结果中，打开 Windows PowerShell 应用程序上的上下文（右键单击）菜单。选择**以管理员身份运行**。

**步骤 2：安装 SiteWise Edge 网关软件**

在 SiteWise Edge Gateway 设备的终端窗口中运行以下命令。

1. 解除封锁 SiteWise Edge 网关安装程序。

   ```
   unblock-file path-to-installer.ps1
   ```

1. 运行安装程序。

   ```
   ./path-to-installer.ps1
   ```
**注意**  
如果在系统上禁用脚本执行，请将脚本执行策略更改为 `RemoteSigned`。  

   ```
   Set-ExecutionPolicy RemoteSigned
   ```

------

下一步取决于您需要的自托管网关的*类型*。继续执行[支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)或[经典直播，适用 Amazon IoT SiteWise 于 Edge 的 V2 网关](classic-streams-v2-gateway.md)。

# 支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise
支持 MQTT 的 V3 网关

Amazon IoT SiteWise 可以使用支持 MQTT 的 V3 网关，这代表了 SiteWise Edge 网关架构的重大进步。这种网关类型利用 MQTT（消息队列遥测传输）协议进行数据通信，为工业物联网部署提供了更高的灵活性和效率。

支持 MQTT 的 V3 网关使用 MQTT 进行数据传输，从而实现了轻量级的发布-订阅网络协议，可在设备和云之间高效传输消息。您可以设置各种数据目标，包括直接将实时数据摄入 Amazon IoT SiteWise 和使用 Amazon S3 进行缓冲数据摄取。要实现精确的数据收集，您可以实现路径过滤器来订阅特定的 MQTT 主题。

支持 MQTT 的 V3 网关带有预先配置的实时目的地，过滤器设置为 “\$1”（所有主题），您可以根据需要对其进行自定义或删除。为了简化数据管理，每个网关中只能存在一个实时目的地。

支持 MQTT 的架构与经典流 V2 网关有很大不同。虽然 V2 使用基于流的方法，但 V3 采用 MQTT，提供了更多可配置的数据目的地和筛选选项。但是，请注意，V3 不支持数据处理包，该包在 V2 中可用。

支持 MQTT 的 V3 网关具有以下优点：
+ 由于 MQTT 的轻量级特性，提高了可扩展性，可以更好地处理大量设备和高频数据传输。
+ 通过路径筛选器增强数据控制，实现对数据收集的精细管理，减少不必要的数据传输和处理。
+ 灵活的数据处理，允许根据特定需求在实时处理和缓冲存储之间进行配置。
+ 与现代物联网通信标准保持一致，为未来的增强和集成奠定基础。

考虑采用支持 MQTT 的 V3 网关进行新部署，尤其是在您需要灵活的数据摄取选项和精确控制数据收集时。

**注意**  
对于需要数据处理包（Classic Streams）的现有部署或场景，V2 网关仍然是一个可行的选择。

通过提供这两种网关类型，无论您优先考虑高级 MQTT 功能还是与现有系统的兼容性，都可以 Amazon IoT SiteWise 确保您可以选择最适合您的特定工业物联网需求的解决方案。

## 目的地和路径过滤器


查看以下主题，详细了解启用 MQTT 的网关中的目的地和路径过滤器：
+ [了解 Amazon IoT SiteWise 边缘目的地](gw-destinations.md#source-destination)
+ [添加 Amazon IoT SiteWise Edge 实时目的地](destinations-real-time.md)
+ [使用 Amazon S3 添加 Amazon IoT SiteWise 缓冲目的地](destinations-buffered.md)
+ [了解 Amazon IoT SiteWise Edge 目标的路径过滤器了解路径筛选条件](gw-destinations.md#destinations-path-filters)
+ [向 Amazon IoT SiteWise Edge 目标添加路径过滤器](destinations-add-path-filters.md)
+ [管理 Amazon IoT SiteWise 边缘目的地](destinations-manage.md)

# 将外部应用程序连接到 EMQX 代理
Connect 外部应用程序

本指南介绍如何通过已部署的支持 MQTT 的 V Amazon IoT SiteWise 3 网关上的 EMQX 代理将外部应用程序连接到 Edge 网关。外部应用程序可能包括自定义监控工具、第三方可视化软件或需要在边缘与工业数据交互的传统系统。

我们将介绍 Linux 和Microsoft Windows环境的配置步骤，包括 EMQX 部署配置、用于安全连接的 TLS 设置以及用于控制对特定主题的访问的授权规则。

**注意**  
EMQX 不是 Edge 的供应商或供应商。 Amazon IoT SiteWise 

**重要**  
为了保护与网关的连接，我们强烈建议通过 Amazon IoT Greengrass 客户端设备身份验证功能使用基于证书的身份验证。此方法通过双向 TLS (mTLS) 身份验证提供强大的安全性。有关更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发者指南》*中的 [Connect 客户端设备与核心设备](https://docs.amazonaws.cn/greengrass/v2/developerguide/connect-client-devices.html)。

如果您无法使用基于证书的身份验证，请按照本指南使用用户名和密码设置身份验证。

## 先决条件

+ 支持 SiteWise Edge MQTT 的 V3 网关，该网关已部署并处于联机状态
+ 访问网关主机
+ 访问 Amazon IoT SiteWise 和 Amazon IoT Greengrass 控制台

**Topics**
+ [

## 先决条件
](#emqx-broker-prerequisites)
+ [

# Edge 上的 EMQX 代理的消息有效载荷格式 Amazon IoT SiteWise
](connect-broker-payload-format.md)
+ [

# 配置 EMQX 代理
](configure-emqx-broker.md)
+ [

# 将应用程序连接到 Edge 上的 EMQX 代理 Amazon IoT SiteWise
](connect-app-to-broker.md)
+ [

# 在 EMQX 中为 Amazon IoT SiteWise Edge 设置授权规则
](authorization-rules-emqx-broker.md)

# Edge 上的 EMQX 代理的消息有效载荷格式 Amazon IoT SiteWise
消息有效载荷格式

要让 IoT SiteWise 发布者组件使用来自外部应用程序的数据并将其发布到 Amazon IoT SiteWise 云端，发送到代理的有效负载必须满足特定要求。

了解有效载荷格式是成功与 Amazon IoT SiteWise Edge 进行 MQTT 通信的关键。虽然连接设置过程将在后面的章节中介绍，但我们将首先介绍有效负载要求，以帮助您规划实施。

## MQTT 主题要求


对 MQTT 主题结构没有限制，包括使用的关卡数量或字符数。但是，我们建议主题与有效载荷中的`propertyAlias`字段相匹配。

**Example 属性别名示例**  
如果 MQTT 主题是`site1/line1/compressor1/temperature`，请确保`propertyAlias`匹配。  

```
{
  "assetId": "compressor_asset_01",
  "propertyAlias": "site1/line1/compressor1/temperature",
  "propertyId": "temperature_sensor_01",
  "propertyValues": [
    {
      "quality": "GOOD",
      "timestamp": {
        "offsetInNanos": 0,
        "timeInSeconds": 1683000000
      },
      "value": {
        "doubleValue": 23.5
      }
    }
  ]
}
```

## JSON 负载结构


MQTT 消息负载以 JSON 编写，并遵循 [Amazon IoT SiteWise API 参考](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_PutAssetPropertyValueEntry.html)中定义的`PutAssetPropertyValueEntry`消息格式。

```
{
   "assetId": "string",
   "propertyAlias": "string",
   "propertyId": "string",
   "propertyValues": [
      {
         "quality": "string",
         "timestamp": {
            "offsetInNanos": number,
            "timeInSeconds": number
         },
         "value": {
            "booleanValue": boolean,
            "doubleValue": number,
            "integerValue": number,
            "stringValue": "string"
         }
      }
   ]
}
```

**注意**  
要使消息被视为有效，只能满足以下条件之一：  
`propertyAlias`已设置，或者
`assetId`和`propertyId`都设置好了
`PutAssetPropertyValueEntry`有一个在此上下文中不是必填的`entryId`字段。

# 配置 EMQX 代理


本节介绍如何添加用户名和密码。它还介绍了如何使用添加的用户名和密码从外部来源建立 TLS 连接。您可以使用 Linux 来配置 EMQX 代理，也可以使用。Microsoft Windows

**注意**  
要配置代理，您需要在支持 MQTT 的 V3 网关中使用默认 EMQX 配置设置的核心设备。

**重要**  
完成此过程后，我们强烈建议您配置授权规则。有关更多信息，请参阅 [在 EMQX 中为 Amazon IoT SiteWise Edge 设置授权规则](authorization-rules-emqx-broker.md)。针对已添加用户的授权规则可增强安全性。

## 更新 EMQX 部署配置以进行身份验证


**更新 EMQX 部署配置以进行身份验证**

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

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择要配置的网关。

1. 在 **Edge 网关配置**部分，复制您的 **Greengrass 核心设备值**。将其保存以备后用。

1. 打开 [Amazon IoT 控制台](https://console.amazonaws.cn/iot/)。

1. **在左侧导航栏的 “**管理**” 部分下，选择 **Greengrass** 设备，然后选择 “部署”。**

1. 找到您之前保存的核心设备值，然后选择该链接以打开部署。

1. 选择 “**操作**” 下拉按钮，然后选择 “**修改**”。

1. 阅读显示的消息，然后选择**修订部署**。将出现 **“指定目标**” 页面。

1. 选择 “**下一步**”，直到进入 “**配置组件**” 步骤。

1. 选择 `aws.greengrass.clientdevices.mqtt.EMQX` 单选按钮。

1. 选择 “**配置组件**” 按钮。此时将显示该组件的配置页面。

1. 在 “**配置更新**” 下，选择 “**重置为组件版本的默认配置：2.\$1”。 **\$1。

1. 根据您的操作系统，在 “**要合并的配置**” 部分中输入以下配置。

------
#### [ Linux ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 8883:8883 -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 -v emqx-data:/opt/emqx/data -e EMQX_NODE__NAME=emqx@local",
       "requiresPrivilege": "true"
   }
   ```

------
#### [ Windows ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "requiresPrivilege": "true"
   }
   ```

   该`dockerOptions`字段仅适用于 Linux 网关。

------

1. 选择**确认**。

1. 选择 “**下一**步”，直到进入 “**查看**” 步骤。

1. 选择**部署**。

1. 部署成功后，继续下一步。

## 启用用户名和密码认证


本节介绍如何通过 EMQX 控制面板 GUI 添加用户名和密码。

**注意**  
所提供的 EMQX 相关说明仅供参考。由于 EMQX 的文档和功能可能会随着时间的推移而发生变化，并且我们不保留其文档，因此我们建议您查阅 [EMQX 的官方文档](https://docs.emqx.com/en/emqx/latest/)以获取最新信息。

------
#### [ EMQX Dashboard ]

**通过 EMQX 控制面板启用用户名和密码身份验证**

1. 确保您在网关主机内。

1. 打开浏览器窗口并访问[http://localhost:18083/](http://localhost:18083/)。

1. 输入的默认用户名**admin**和默认的密码**public**。*有关更多信息，请参阅 [EMQX 文档中的 EMQX 控制面板](https://docs.emqx.com/en/emqx/latest/dashboard/introduction.html#first-login)。*

1. 登录后，系统会提示您更改密码。更新您的密码以继续进入 EMQX 控制面板。

1. 在左侧导航栏中，选择盾牌图标，然后选择**身份验证**。

1. 在 “**内置数据库**” 行中，选择 “**用户**” 按钮。

1. 选择加号图标按钮以添加用户。**将出现 “添加**” 屏幕。

1. 输入外部应用程序用户的用户名和密码。

1. 选择**保存**。您选择的用户名将显示在 “**身份验证**” 页面的表格中。

**注意**  
现有或默认的授权规则适用于新用户。建议根据您的外部应用程序需求对其进行审查和调整。

------
#### [ EMQX Management with Linux ]

使用 Amazon IoT SiteWise EMQX CLI 工具，网址为。`/greengrass/v2/bin/swe-emqx-cli`

**使用 Linux 通过 EMQX 管理启用用户名和密码认证**

1. 通过运行以下命令更改管理员密码：

   ```
   /greengrass/v2/bin/swe-emqx-cli admin change-pwd
   ```

1. 出现提示时，请执行以下操作：

   1. 输入您当前的管理员用户（默认为`admin`）和密码（默认为`public`）。

   1. 输入并确认您的新密码。

   如果成功，您将看到以下消息：

   ```
   admin password changed successfully
   ```

1. 通过运行以下命令为外部应用程序添加用户：

   ```
   /greengrass/v2/bin/swe-emqx-cli users add
   ```

1. 出现提示时，请执行以下操作：

   1. 输入新用户的用户名。

   1. 输入并确认新用户的密码。

   如果成功，您将看到以下消息：

   ```
   User '[username]' created successfully
   ```

1. 通过运行以下命令来验证用户配置：

   ```
   /greengrass/v2/bin/swe-emqx-cli users list
   ```

   输出显示所有已配置的用户：

   ```
   Users:
   - [your-added-username]
   
   Total users: 1
   ```

------
#### [ EMQX Management with Windows ]

在以下位置之一使用 Amazon IoT SiteWise EMQX CLI 工具：
+ PowerShell: `C:\greengrass\v2\bin\swe-emqx-cli.ps1`
+ 命令提示符：`C:\greengrass\v2\bin\swe-emqx-cli.bat`

**使用 Windows 通过 EMQX 管理功能启用用户名和密码身份验证**

1. 通过运行以下命令更改管理员密码：

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 admin change-pwd
   ```

1. 出现提示时，请执行以下操作：

   1. 输入您当前的管理员用户（默认为`admin`）和密码（默认为`public`）。

   1. 输入并确认您的新密码。

   如果成功，您将看到以下消息：

   ```
   admin password changed successfully
   ```

1. 通过运行以下命令为外部应用程序添加用户：

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 users add
   ```

1. 出现提示时，请执行以下操作：

   1. 输入新用户的用户名。

   1. 输入并确认新用户的密码。

   如果成功，您将看到以下消息：

   ```
   User '[username]' created successfully
   ```

1. 通过运行以下命令来验证用户配置：

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 users list
   ```

   输出显示所有已配置的用户：

   ```
   Users:
   - [your-added-username]
   
   Total users: 1
   ```

------

# 将应用程序连接到 Edge 上的 EMQX 代理 Amazon IoT SiteWise
Connect 应用程序

EMQX 代理在端口 8883 上使用传输层安全 (TLS) 来加密所有通信，确保您的数据在传输过程中受到保护。本节将引导您完成在应用程序和 EMQX 代理之间建立连接的步骤。遵循这些步骤有助于维护工业数据的完整性和机密性。连接过程包括两种主要方法：通过组件使用自动 IP 发现，或者在 TLS 证书中手动将 DNS 名称和 IP 地址配置为主题备用名称 (SANs)。每种方法都有其自身的优势，具体取决于您的网络设置和安全要求。本文档将指导您完成这两个选项。

**Topics**
+ [

## 配置 TLS 以实现与 Edge 上的 EMQX 代理的安全连接 Amazon IoT SiteWise
](#configure-tls-emqx-broker)
+ [

## 在 Edge 上测试 EMQX 代理连接 Amazon IoT SiteWise
](#test-emqx-connection)
+ [

## 使用你自己的 CA
](#configure-tls-custom-ca)
+ [

## 为外部防火墙连接打开 8883 端口
](#emqx-firewall)

## 配置 TLS 以实现与 Edge 上的 EMQX 代理的安全连接 Amazon IoT SiteWise
配置 TLS

默认情况下，为 EMQX 代理 Amazon IoT Greengrass 生成由核心设备证书颁发机构 (CA) 签名的 TLS 服务器证书。有关更多信息，请参阅使用 [MQTT 代理将客户端设备连接到 Amazon IoT Greengrass 核心设备](https://docs.amazonaws.cn/greengrass/v2/developerguide/connecting-to-mqtt.html)。

### 检索 TLS 证书


要获取 CA 证书，请在网关主机上运行以下命令：

------
#### [ Linux ]

在网关主机上的 shell 会话中运行以下命令：

```
/greengrass/v2/bin/swe-emqx-cli cert
```

此命令显示证书位置并打印证书的内容。

您也可以使用以下命令将证书保存到文件中：

```
/greengrass/v2/bin/swe-emqx-cli cert --output /path/to/certificate.pem
```

------
#### [ Windows ]

在网关主机的 PowerShell 会话中运行以下命令：

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert
```

此命令显示证书位置并打印证书的内容。

您也可以使用以下命令将证书保存到文件中：

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert --output C:\path\to\certificate.pem
```

无论您的系统上的确切路径如何，CLI 都会自动找到证书。

------

将 ca.pem 文件的内容复制到要连接到代理的外部应用程序中。将其保存为 `BrokerCoreDeviceCA.pem`。

### 向 TLS 服务器证书添加自定义 DNS names/IP 地址


由生成的证书上的主题备用名称 (SAN) Amazon IoT Greengrass 是`localhost`。从网关主机外部建立 TLS 连接时，TLS 验证步骤会失败，因为代理的主机名与服务器证书`localhost`上的主机名不匹配。

为了解决主机名不匹配的问题， Amazon IoT Greengrass 提供了两种管理核心设备端点的方法。本节涵盖这两个选项。有关更多详细信息，请参阅《*Amazon IoT Greengrass Version 2 开发人员指南》*中的[管理核心设备端点](https://docs.amazonaws.cn/greengrass/v2/developerguide/manage-core-device-endpoints.html)。
+ 要使用核心设备的 IP 地址连接到 EMQX 代理，请使用自动 IP 发现部分。
+ 要使用 DNS 名称而不是 IP 地址连接到 EMQX 代理，请使用手动管理部分。

------
#### [ Automated IP discovery ]

此选项允许您的核心设备自动发现其 IP 地址，并将其作为主题备用名称 (SAN) 添加到代理证书中。

1. 将该`aws.greengrass.clientdevices.IPDetector`组件添加到核心设备的部署中。

1. 将更改部署到您的设备

1. 等待部署完成。

   部署完成后，您可以使用代理的 IP 地址建立安全的 TLS 连接。

   IP 地址将作为 SAN 自动添加到代理证书中。

------
#### [ Manual DNS and IP Configuration ]

您可以手动将 DNS 名称和 IP 地址作为主题备用名称 (SANs) 添加到您的 TLS 证书。当您为网关主机配置了 DNS 名称时，此方法很有用。

**重要**  
如果您正在使用该 IPDetector 组件，请在继续操作之前将其从部署中删除。该 IPDetector组件会覆盖手动端点配置。

**手动配置终端节点**

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

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择要配置的网关。

1. 在 **Edge 网关配置**部分，选择您的 **Greengrass 核心设备**网址。将显示核心设备的页面。

1. 选择 “**客户端设备**” 选项卡。

1. 选择**管理端点**。

1. 在 “管理终端节点” 对话框中，输入 DNS 名称和要添加的任何 IP 地址 SANs。使用端口 8883。

1. 选择**更新**。

代理的 TLS 服务器证书会自动更新以包含您的新端点。

**使用 Linux 验证 TLS 服务器证书更新**

1. 在您的网关主机上启动 shell 会话。

   ```
   docker exec emqx openssl x509 -in ./data/cert.pem -text -noout | grep -A1 "Subject Alternative Name"
   ```

1. 该命令返回的输出类似于以下内容：

   ```
   X509v3 Subject Alternative Name: 
   DNS:endpoint_you_added, DNS:localhost
   ```

1. 验证您的终端节点是否出现在列表中 SANs。

**使用 Windows 验证 TLS 服务器证书更新**

1. 在您的网关主机上启动 shell 会话。

   ```
   (Get-PfxCertificate -FilePath "C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\cert.pem").Extensions | Where-Object { $_.Oid.FriendlyName -eq "Subject Alternative Name" } | ForEach-Object { "Subject Alternative Name:", ($_.Format($true) -split "`n")[0..1] }
   ```

1. 该命令返回的输出类似于以下内容：

   ```
   Subject Alternative Name:
   DNS Name=your-endpoint
   DNS Name=localhost
   ```

1. 验证您添加的终端节点是否在列表中 SANs。

------

## 在 Edge 上测试 EMQX 代理连接 Amazon IoT SiteWise
测试连接

使用 TLS 证书和身份验证凭证配置 EMQX 代理后，请务必验证您的设置是否正常运行。测试连接有助于确保您的安全配置得到正确实施，并且客户端可以成功地与代理建立加密连接。本节演示如何使用 Mosquitto 命令行接口 (CLI) 客户端（一种广泛使用的支持 TLS 加密和身份验证的 MQTT 客户端工具）测试您的代理连接。

### 使用 Mosqitto CLI 客户端测试 EMQX 代理连接


在此步骤中，我们将使用 mosquitto CLI 客户端来测试我们的设置，并确保我们可以使用之前创建的用户名和密码成功连接到代理。要获取`BrokerCoreDeviceCA.pem`步骤 3：设置 TLS 下的以下步骤。

```
mosquitto_sub -h hostname|ip address \
    -p 8883 \
    -t "#" \
    -q 1 \
    -u username -P password \
    --cafile BrokerCoreDeviceCA.pem
```

**注意**  
如果您要连接 hostname/IP 的地址与您传递给客户端的 CA 证书上的主题备用名称 (SAN) 不匹配，则可能会出现 SSL: Verify 错误。有关如何使用正确的 SAN 获取证书，请参阅步骤 3：设置 TLS 下的 “向 TLS 服务器证书添加自定义 DNS names/IP 地址”。

此时，所有用户都可以发布和订阅经纪商上的所有主题。继续执行[在 EMQX 中为 Amazon IoT SiteWise Edge 设置授权规则](authorization-rules-emqx-broker.md)。

## 使用你自己的 CA


Amazon IoT Greengrass 概述了如何将自己的客户端设备身份验证组件配置为使用自己的证书颁发机构 (CA)。客户端设备身份验证组件（`aws.greengrass.clientdevices.Auth`）对客户端设备进行身份验证并授权客户端设备操作。有关更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发人员指南》*中的[使用自己的证书颁发机构](https://docs.amazonaws.cn/greengrass/v2/developerguide/connecting-to-mqtt.html#use-your-own-CA)。

要使用自己的 CA，请将该`aws.greengrass.clientdevices.Auth`组件添加到您的部署中，以便您可以指定自定义配置。

## 为外部防火墙连接打开 8883 端口


------
#### [ Linux ]

在 Linux 主机防火墙规则中，为端口 8883 添加入站规则，以允许来自网关主机外部的传入连接。如果有任何防火墙，请确保允许端口 8883 上的传入 TLS 连接。

------
#### [ Windows ]

在您的Microsoft Windows主机防火墙规则中，为端口 8883 添加入站规则，以允许来自网关主机外部的传入连接。确保该规则是允许规则，类型为端口，指定端口 8883。您可以根据自己的网络配置进行配置，以允许从外部应用程序连接到代理。

------

# 在 EMQX 中为 Amazon IoT SiteWise Edge 设置授权规则
设置授权规则

EMQX 支持根据用户名、IP 地址或客户端 ID 等标识符添加授权规则。如果您想限制连接到各种操作或主题的外部应用程序的数量，这很有用。

**Topics**
+ [

# 在 Linux 中使用内置数据库配置授权
](add-auth-rules-database-emqx-broker-linux.md)
+ [

# 在 Windows 中使用内置数据库配置授权
](add-auth-rules-database-emqx-broker-windows.md)
+ [

# 更新 EMQX 部署配置以进行授权
](update-emqx-broker-authorization.md)
+ [

# 通过 EMQX 控制面板为用户添加授权规则
](add-rules-emqx-broker.md)

# 在 Linux 中使用内置数据库配置授权
使用 Linux 配置授权

配置授权规则时，有两种配置选项取决于您的部署设置。
+ **Docker**— 如果您在没有的情况下运行标准Docker安装Litmus Edge，请使用 **Docker 网桥网关**配置。当你只部署了 Amazon IoT SiteWise 组件时，通常会出现这种情况。
+ **Litmus Edge**— 如果您已在网关上Litmus Edge安装，请使用**Litmus Edge网络子网**配置。

**注意**  
如果您最初配置网Docker桥网关，然后再进行安装Litmus Edge，请使用Litmus Edge网络子网选项重新配置授权规则，以确保所有组件之间的通信正常。

**添加基本授权规则**

1. 验证 EMQX 代理是否已部署并正在运行。

1. 在您的网关主机上启动 shell 会话。

------
#### [ Docker without Litmus Edge ]

   对于不带标准Docker安装Litmus Edge，请运行：

   ```
   /greengrass/v2/bin/swe-emqx-cli acl init
   ```

------
#### [ Litmus Edge network subnet ]

   如果你使用的是Litmus Edge，请确定 Litmus Edge 网络子网 IP：

   ```
   docker network inspect LitmusNetwork | grep IPAM -A9
   ```

   记下输出中的子网值并运行以下命令。`litmus_subnet_ip`替换为上一步中的子网值。

   ```
   /greengrass/v2/bin/swe-emqx-cli acl init litmus_subnet_ip
   ```

------

   该工具会自动创建并应用授权规则，以允许从提供的 IP 地址连接到代理。它允许访问所有主题。这包括物联网 SiteWise OPC UA 收集器和物联网 SiteWise 发布者。

1. 继续执行[更新 EMQX 部署配置以进行授权](update-emqx-broker-authorization.md)。

# 在 Windows 中使用内置数据库配置授权
使用配置授权 Microsoft Windows

本节介绍如何使用内置数据库为 Windows 部署配置授权规则。

**添加基本授权规则**

1. 验证 EMQX 代理是否已部署并正在运行。

1. 运行 Amazon IoT SiteWise EMQX CLI 工具：

   ```
   C:\greengrass\v2\bin\swe-emqx-cli.ps1 acl init
   ```

   该工具会自动创建并应用 ACL 规则，允许从本地主机 (127.0.0.1) 连接到代理。它允许访问所有主题。这包括物联网 SiteWise OPC UA 收集器和物联网 SiteWise 发布者。

1. 继续执行[更新 EMQX 部署配置以进行授权](update-emqx-broker-authorization.md)。

# 更新 EMQX 部署配置以进行授权
更新部署

**更新 EMQX 部署配置以进行授权**

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

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择要配置的网关。

1. 在 **Edge 网关配置**部分，复制您的 **Greengrass 核心设备值**。将其保存以备后用。

1. 打开 [Amazon IoT 控制台](https://console.amazonaws.cn/iot/)。

1. **在左侧导航栏的 “**管理**” 部分下，选择 **Greengrass** 设备，然后选择 “部署”。**

1. 找到您之前保存的核心设备值，然后选择该链接以打开部署。

1. 选择 “**操作**” 下拉按钮，然后选择 “**修改**”。

1. 阅读显示的消息，然后选择**修订部署**。将出现 **“指定目标**” 页面。

1. 选择 “**下一步**”，直到进入 “**配置组件**” 步骤。

1. 选择 `aws.greengrass.clientdevices.mqtt.EMQX` 单选按钮。

1. 选择 “**配置组件**” 按钮。此时将显示该组件的配置页面。

1. 在 “**配置更新**” 下，选择 “**重置为组件版本的默认配置：2.\$1”。 **\$1。

1. 根据您的操作系统将以下内容粘贴**到要合并的配置**部分。

------
#### [ Linux ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "deny",
               "sources": [
                   {
                       "type": "built_in_database"
                   },
                   {
                       "type": "file",
                       "path": "data/authz/acl.conf"
                   }
               ]
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 8883:8883 -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 -v emqx-data:/opt/emqx/data -e EMQX_NODE__NAME=emqx@local",
       "requiresPrivilege": "true"
   }
   ```

------
#### [ Windows ]

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "deny",
               "sources": [
                   {
                       "type": "built_in_database"
                   },
                   {
                       "type": "file",
                       "path": "C:\\greengrass\\v2\\work\\aws.greengrass.clientdevices.mqtt.EMQX\\v2\\data\\authz\\acl.conf"
                   }
               ]
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               },
               "ssl": {
                   "default": {
                       "enabled": true,
                       "enable_authn": true,
                       "ssl_options": {
                           "verify": "verify_none",
                           "fail_if_no_peer_cert": false
                       }
                   }
               }
           },
           "authentication": {
               "enable": true,
               "backend": "built_in_database",
               "mechanism": "password_based",
               "password_hash_algorithm": {
                   "iterations": 210000,
                   "mac_fun": "sha512",
                   "name": "pbkdf2"
               },
               "user_id_type": "username"
           },
           "dashboard": {
               "listeners": {
                   "http": {
                       "bind": 18083
                   }
               }
           }
       },
       "authMode": "bypass",
       "requiresPrivilege": "true"
   }
   ```

------

1. 选择**确认**。

1. 选择 “**下一**步”，直到进入 “**查看**” 步骤。

1. 选择**部署**。

**注意**  
此后，您无法编辑 ACL 文件来更新授权规则。或者，您可以在成功部署[通过 EMQX 控制面板为用户添加授权规则](add-rules-emqx-broker.md)后继续。

# 通过 EMQX 控制面板为用户添加授权规则
为用户添加授权规则

您可以使用 EMQX 控制面板或 EMQX CLI 工具添加或更新授权规则。 Amazon IoT SiteWise Amazon IoT SiteWise EMQX CLI 工具使用 EMQX 的内置数据库管理授权。

**注意**  
添加授权规则是一个高级配置步骤，需要了解 MQTT 主题模式和访问控制。*有关使用 EMQX 的内置数据库创建授权规则的更多信息，请参阅 EMQX 文档中的[使用内置数据库](https://docs.emqx.com/en/emqx/latest/access-control/authz/mnesia.html)。*

**注意**  
所提供的 EMQX 相关说明仅供参考。由于 EMQX 的文档和功能可能会随着时间的推移而发生变化，并且我们不保留其文档，因此我们建议您查阅 [EMQX 的官方文档](https://docs.emqx.com/en/emqx/latest/)以获取最新信息。

------
#### [ EMQX dashboard ]

此过程说明如何在 EMQX 控制面板上添加授权规则。

EMQX 控制面板只能从网关主机内部访问。如果您尝试从网关主机外部进行连接，则无法访问控制面板。

**使用 EMQX 控制面板添加授权规则**

1. 确保您在网关主机内。

1. 打开浏览器窗口并访问[http://localhost:18083/](http://localhost:18083/)。

1. 登录 EMQX 控制面板。此过程假设您已将默认登录凭证更改为自己选择的登录凭证。有关初始设置的更多信息，请参阅[启用用户名和密码认证](configure-emqx-broker.md#emqx-broker-username-password-auth)。

1. 选择盾牌图标，然后从下拉菜单中选择 “**授权**”。

1. 在 “**内置数据库**” 行上选择 “**权限**” 按钮。

1. 在 “内置数据库授权” 部分，根据您的业务需求添加或更新用户授权规则。有关创建规则的更多指导，请参阅 *EMQX* 文档中的[使用内置数据库](https://docs.emqx.com/en/emqx/latest/access-control/authz/mnesia.html)部分。

------
#### [ Amazon IoT SiteWise CLI tool using Linux ]

**要在 Linux 中使用 Amazon IoT SiteWise EMQX CLI 工具管理授权规则，请执行以下操作：**
+ 使用以下格式为用户添加授权规则：

  ```
  /greengrass/v2/bin/swe-emqx-cli auth add your-username your-action your-permission your-topic [your-action-permission-topic]
  ```

**Example 为用户添加授权规则**  
此示例说明如何为名为`system1`：的用户添加规则：  

```
/greengrass/v2/bin/swe-emqx-cli auth add system1 \
    publish allow "sensors/#" \
    subscribe allow "control/#" \
    all deny "#"
```

**Example ：查看用户的授权规则**  
要查看`system1`用户的授权规则，请运行以下命令：  

```
/greengrass/v2/bin/swe-emqx-cli auth list system1
```

**Example : 查看所有现有的授权规则**  
要查看您当前拥有的所有授权规则，请运行以下命令：  

```
/greengrass/v2/bin/swe-emqx-cli auth list
```

**Example : 删除用户的所有授权规则**  
要删除应用于特定用户的所有授权规则，请运行以下命令：  

```
/greengrass/v2/bin/swe-emqx-cli auth delete system1
```
系统将提示您确认删除。

------
#### [ Amazon IoT SiteWise CLI tool using Windows ]

**要使用 Amazon IoT SiteWise EMQX CLI 工具管理授权规则，请执行以下操作：Windows PowerShell**
+ 使用以下格式为用户添加授权规则：

  ```
  C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth add your-username your-action your-permission your-topic [your-action-permission-topic]
  ```

**Example : 为用户添加授权规则**  
此示例说明如何为名为`system1`：的用户添加规则：  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth add system1 `
    publish allow "sensors/#" `
    subscribe allow "control/#" `
    all deny "#"
```

**Example ：查看用户的授权规则**  
要查看`system1`用户的授权规则，请运行以下命令：  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth list system1
```

**Example : 查看所有现有的授权规则**  
要查看您当前拥有的所有授权规则，请运行以下命令：  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth list
```

**Example : 删除用户的所有授权规则**  
要删除应用于特定用户的所有授权规则，请运行以下命令：  

```
C:\greengrass\v2\bin\swe-emqx-cli.ps1 auth delete system1
```
系统将提示您确认删除。

------

# 使用 SiteWise Edge 和开源工具处理和可视化数据
在边缘处理和可视化数据

使用开源工具配置支持 Amazon IoT SiteWise Edge MQTT 的网关，用于本地处理和可视化，以增强您的工业数据管理能力。

借 SiteWise 助 Edge，您可以使用外部开源工具创建本地数据处理管道。[使用 [Node-RED®](https://nodered.org/) 通过 [InfluxDB® 存储时间序列数据，并通过 Grafana®](https://www.influxdata.com/lp/influxdb-database/) 仪表板监控操作。](https://grafana.com/)

Node-red 处理和转换您的数据流，而 InfluxDB 提供时间序列数据存储。Grafana 显示您的实时运营数据。将这些工具与 SiteWise Edge 配合使用，可以在本地环境与之间同步数据 Amazon Web Services 云，从而为您提供即时的本地见解和基于云的长期分析功能。

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

![\[该图显示了一些数据源以及连接到 EMQX Broker 以供发布的涡轮机仿真器。然后 EMQX 代理订阅 Amazon IoT SiteWise 网关和 Node-red。节点红色输入到 InfluxDB，然后 Influx DB 输入到 Grafana 控制面板。\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-open-source-overview.png)


**注意**  
在本指南中，我们使用的是开源版本的 [Grafana](https://grafana.com/) for Edge，而不是[亚马逊托管](https://docs.amazonaws.cn/grafana/latest/userguide/what-is-Amazon-Managed-Service-Grafana.html) Grafana SiteWise 服务。

## 部署选项


您可以使用以下两种方法之一来部署此解决方案。通过Microsoft Windows手动设置，您可以控制组件配置以及与基础架构的集成。使用Linux，您可以使用 Docker 在容器中部署预配置的组件。

选择符合您的操作要求的方法。
+ [手动设置开源集成 (Windows)](windows-manual-setup.md)— 用于自定义配置或现有基础架构
+ [设置与 Docker 的开源集成 (Linux)](linux-docker-setup.md)— 使用预先配置的组件进行快速部署

## 风电场示例概述


本指南以风力发电场为例，演示如何监控风力发电场中涡轮机的风速。这个实际场景说明了常见的工业监控需求，在这些需求中，本地和基于云的可视性对于提高运营效率都非常重要。

通过此集成，您可以：
+ 使用 Amazon IoT SiteWise Edge 网关从工业设备收集数据
+ 使用 Node-RED、InfluxDB 和 Grafana 在本地处理数据
+ 使用 InfluxDB 在本地存储数据
+ 使用 Grafana 仪表板实时监控数据

在本指南中，我们以风电场为例。我们使用 Node-RED 来模拟生成风速数据的涡轮机。Node-red 转换数据有效负载，将数据发布到 SiteWise Edge MQTT 代理，订阅接收来自代理的数据，并将数据本地存储在 InfluxDB 中。这种方法可确保所有运营数据均可在本地立即访问，也可在云端进行进一步分析。通过实施这种模式，您可以获得抵御网络中断的弹性，同时保持在网络中执行高级分析的能力。 Amazon Web Services 云 Grafana 连接到 InfluxDB 进行本地监控，让操作员无需依赖云即可实时查看指标。支持 SiteWise Edge MQTT 的网关连接到同一 MQTT 代理以向其发送数据 Amazon IoT SiteWise，从而在边缘操作和基于云的服务之间架起一座桥梁。

无论您是在监控制造设备、公用事业基础设施还是其他工业资产，您都可以使用自己的数据和配置来创建针对您的特定行业要求量身定制的类似工作流程。

## 开源集成的要求


在与 SiteWise Edge 实现开源集成之前，请确保您的环境满足必要要求。
+ **硬件要求**-您的网关硬件必须满足 SiteWise Edge 网关的要求。有关更多信息，请参阅启[Amazon IoT SiteWise Edge 自托管网关要求](configure-gateway-ggv2.md)用 MQTT、V3 网关和。[Amazon IoT SiteWise 边缘应用程序的要求](siemens-app-gateway-requirements.md)
**重要**  
[部署其他开源组件时，请确保您的硬件满足 [InfluxDB](https://docs.influxdata.com/influxdb/v2/install/)、[Nod](https://nodered.org/docs/getting-started/) e-RED 和 Grafana 的要求。](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)
+ 您的网络配置必须支持组件之间的本地通信和 SiteWise Edge 的云连接。
+ 所有服务都必须在同一台主机上运行。

## 安全注意事项


我们建议您对组件之间的所有通信进行加密，尤其是在从非本地网络访问接口时。对每个组件实施适当的访问控制，并遵循 Amazon IoT SiteWise 边缘网关配置和 Amazon 账户安全 Amazon 的最佳实践。

**开发环境**  
本指南演示了 Node-RED、InfluxDB 和 Grafana 在网关主机上运行和本地访问。对于需要外部访问的生产部署，请实施包括 TLS 加密、身份验证和授权在内的安全措施。遵循每个应用程序的安全最佳实践。

**第三方软件**  
此解决方案使用非由其维护的第三方软件 Amazon，包括 InfluxDB、Node-RED、Grafana 和插件。`node-red-contrib-influxdb`在部署之前，请确保这些组件符合贵组织的安全要求、合规性标准和监管政策。

**重要**  
本指南引用并使用并非由其拥有或维护的第三方软件 Amazon。在实施之前，请确保所有组件都满足您的安全、合规和管理要求。使用最新的安全补丁更新所有软件，并遵循最佳实践来保护边缘部署。  
 InfluxDB、Node-red、Grafana 不是 Edge 的供应商或供应商。 SiteWise 

## 其他考虑因素


在实现与 SiteWise Edge 的开源集成时，请考虑这些其他因素。
+ 使用所有服务、工具和组件的最新版本。
+ 在云端传输之前，在本地筛选和聚合数据，以降低 Amazon IoT SiteWise 数据摄取成本。在 InfluxDB 中配置适当的数据保留期，并正确调整网关硬件的大小。有关更多信息，请参阅[Amazon IoT SiteWise 定价](https://www.amazonaws.cn/iot-sitewise/pricing/)。
+ 对所有数据实施定期备份程序。
+ 监控网关上的资源使用情况，并为每个组件配置适当的资源限制。在InfluxDB中实施数据保留策略以管理磁盘使用情况。

# 手动设置开源集成 (Windows)
使用 Windows 进行手动设置

使用本指南为与 Grafana® 和 Node-RED® 连接的风速数据手动创建时序存储桶。

 手动安装和配置 Node-RED、InfluxDB® 和 Grafana 以控制您的部署配置。Microsoft Windows您可以使用InfluxDB存储和管理来自设备的时间序列数据。

## 手动设置的先决条件


在开始之前，请完成以下要求：

**注意**  
在同一台主机上运行所有服务（SiteWise Edge、InfluxDB、Node-RED 和 Grafana）。
+ 安装支持 MQTT 的 V3 网关。有关更多信息，请参阅 [支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)。
+ 在本地安装和运行以下服务：
  + InfluxDB OSS v2。有关安装步骤，请参阅[安装 InfluxDB](https://docs.influxdata.com/influxdb/v2/install/)。
  + Node-red。有关安装步骤，请参阅在本地[安装 Node-RED](https://nodered.org/docs/getting-started/local)。
  + Grafana。有关安装步骤，请参阅[安装 Grafana](https://grafana.com/docs/grafana/latest/setup-grafana/installation/)。

# 使用 InfluxDB 设置本地存储


使用 InfluxDB®，您可以在本地存储设备上的时间序列数据。本地存储功能的目的是在网络中断期间保持操作可见性，并减少时间关键型应用程序的延迟。您可以在边缘执行分析和可视化，同时仍然可以选择性地将数据转发到云端。

在本节中，您将为涡轮机风速数据创建时间序列存储桶，并为 Grafana® 和 Node-RED® 连接生成一个 API 令牌。InfluxDB 存储桶可用作时间序列数据的专用存储容器，类似于传统系统中的数据库。API 令牌支持以编程方式安全地访问您的数据。

**设置 InfluxDB**

1. 完成必备步骤并确保所有工具都在同一台主机上运行后，打开您的 Web 浏览器并前往 [http://127.0.0.1:8086](http://127.0.0.1:8086)。

1. （可选）启用 TLS 加密以增强安全性。有关更多信息，请参阅中的[启用 TLS 加密*InfluxData Documentation*](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/)。

1. 创建一个时间序列 InfluxDB 存储桶来存储来自 Node-RED 的数据。该存储桶将用作风电场数据的专用容器，允许您组织和管理特定于该数据集的保留策略。有关更多信息，请参阅中的[管理存储桶](https://docs.influxdata.com/influxdb/v2/admin/buckets/)。*InfluxData Documentation*

1. （可选）为您的边缘站点配置数据保留期。设置适当的保留期可以自动删除本地操作不再需要的旧数据，从而有助于高效地管理存储资源。

   有关数据保留的信息，请参阅[中的 InfluxDB 中的数据保留](https://docs.influxdata.com/influxdb/v2/reference/internals/data-retention/)。*InfluxData Documentation*

1. 为存储桶生成 API 令牌。该令牌将启用InfluxDB与其他组件（例如Node-red和Grafana）之间的安全通信。这样，只有经过授权的服务才能读取或写入您的数据存储。有关更多信息，请参阅中的[创建令牌*InfluxData Documentation*](https://docs.influxdata.com/influxdb/cloud/admin/tokens/create-token/)。

完成这些步骤后，您可以将时间序列数据存储在InfluxDB实例中，从而为边缘环境中的本地数据持久性和分析奠定基础。

# 为数据集成配置 Node-red 流程 Amazon IoT SiteWise
配置 Node-red 流

借助 Node-red®，您可以实现两个流程来管理设备和之间的数据。 Amazon IoT SiteWise这些流程共同创建了一个全面的数据管理解决方案，可同时满足本地和云端数据流的需求。
+ **数据发布流程**-发布到云端。数据发布流程将数据发送到 Amazon IoT SiteWise。该流程通过生成传感器数据、将其转换为 Amazon IoT SiteWise 格式并发布到 SiteWise Edge MQTT 代理来模拟涡轮机设备。这使您能够利用 Amazon IoT SiteWise云功能进行存储、分析以及与其他 Amazon 服务的集成。

  有关更多信息，请参阅 [配置数据发布流程](windows-nodered-data-publish-flow.md)。
+ **数据保留流程**-将数据存储在边缘。数据保留流程订阅 SiteWise Edge MQTT 代理以接收数据，将其转换为 InfluxDB® 格式，然后将其存储在本地以进行监控。这种本地存储允许即时访问操作数据，减少时间关键型应用程序的延迟，并确保网络中断期间的连续性。

  有关更多信息，请参阅 [配置数据保留流程](windows-nodered-data-retention-flow.md)。

这两个流程协同工作，确保数据既发送到本地， Amazon IoT SiteWise 又存储在本地，以便立即访问。

[要访问你的 Node-red 主机，请访问 http://127.0.0.1:1880。](http://127.0.0.1:1880)有关启用 TLS 的信息，请参阅[启用 TLS 加密](https://docs.influxdata.com/influxdb/v2/admin/security/enable-tls/)。

# 配置数据发布流程


数据发布流程使用三个节点来创建将您的工业数据发送到云端的管道。该流程对于实现基于云的分析、长期存储以及与其他 Amazon 服务的集成至关重要。首先，将模拟设备数据发送到 SiteWise Edge MQTT 代理。网关从经纪人那里获取数据，然后将其传输到 Amazon IoT SiteWise 云端，在那里你可以利用强大的分析和可视化功能。
+ **数据输入**-接收来自工业设备或模拟器的设备数据
+ **数据转换器 Amazon IoT SiteWise**-将数据转换为 Amazon IoT SiteWise 格式，以确保与 SiteWise Edge 网关兼容
+ **MQTT 发布者**-向 SiteWise Edge MQTT 代理发布数据，使其可供本地和云用户使用

![\[显示了 Node-red 数据发布流程的图表。它将模拟设备数据发送到 SiteWise Edge MQTT 代理，由 Ed SiteWise ge Gateway 获取，然后发送到 Amazon IoT SiteWise 云端。\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)


## 配置数据输入节点


在此示例中，数据输入节点使用模拟风力涡轮机设备来生成风速数据。无论是来自模拟源（如我们的示例）还是来自生产环境中的实际工业设备，此节点都是您的工业数据的入口点。

我们对数据负载使用自定义 JSON 格式，以提供可与本地处理工具和 Amazon IoT SiteWise 云服务高效配合使用的标准化结构。这种格式包括时间戳和质量指标等基本元数据以及实际测量值，从而在整个管道中实现全面的数据管理和质量跟踪。导入注入节点，以此标准化 JSON 格式接收带有时间戳、质量指标和值的模拟数据。

*有关 Node-RED 注入节点的更多信息，请参阅文档中的[注入](https://nodered.org/docs/user-guide/nodes#inject)部分。Node-RED*

涡轮机模拟器每秒以这种标准化 JSON 格式生成风速数据：

**Example : 涡轮机数据有效载荷**  

```
{
    name: string,         // Property name/identifier
    timestamp: number,    // Epoch time in nanoseconds
    quality: "GOOD" | "UNCERTAIN" | "BAD",
    value: number | string | boolean
}
```

这种格式有几个好处：
+ 该`name`字段标识特定的属性或测量值，允许您跟踪来自同一设备的多个数据点
+ `timestamp`以纳秒为单位可确保精确的时间跟踪，从而进行准确的历史分析
+ 该`quality`指标可帮助您根据数据的可靠性筛选和管理数据
+ 灵活的`value`字段支持不同的数据类型，以适应不同的传感器输出

**Example : 涡轮模拟器的注入节点**  

```
[
    {
        "id": "string",
        "type": "inject",
        "z": "string",
        "name": "Turbine Simulator",
        "props": [
            {
                "p": "payload.timestamp",
                "v": "",
                "vt": "date"
            },
            {
                "p": "payload.quality",
                "v": "GOOD",
                "vt": "str"
            },
            {
                "p": "payload.value",
                "v": "$random()",
                "vt": "jsonata"
            },
            {
                "p": "payload.name",
                "v": "/Renton/WindFarm/Turbine/WindSpeed",
                "vt": "str"
            }
        ],
        "repeat": "1",
        "crontab": "",
        "once": false,
        "onceDelay": "",
        "topic": "",
        "x": 270,
        "y": 200,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

## 为数据转换配置节点


E SiteWise dge 网关需要特定格式的数据，以确保与 Amazon IoT SiteWise 云的兼容性。转换器节点是将输入数据转换为所需 Amazon IoT SiteWise 有效载荷格式的重要组件。此转换步骤可确保您的工业数据能够在 Amazon IoT SiteWise 云环境中得到正确处理、存储和分析。

通过在此阶段对数据格式进行标准化，您可以实现边缘设备与云服务之间的集成，您可以在其中使用资产建模、分析和可视化功能。使用以下结构：

**Example : SiteWise Edge 数据解析的有效载荷结构**  

```
{
  "propertyAlias": "string",  
  "propertyValues": [
    {
      "value": { 
          "booleanValue": boolean, 
          "doubleValue": number, 
          "integerValue": number,
          "stringValue": "string" 
     },
      "timestamp": {
          "timeInSeconds": number,
          "offsetInNanos": number
      },
      "quality": "GOOD" | "UNCERTAIN" | "BAD",
  }]
}
```

**注意**  
`propertyAlias`将与您的 MQTT 主题层次结构相匹配（例如，`/Renton/WindFarm/Turbine/WindSpeed`）。这样可以确保您的数据与中的正确资产属性正确关联 Amazon IoT SiteWise。有关更多信息，请参阅中的 “数据流别名” 概念[Amazon IoT SiteWise 概念](concept-overview.md)。

1. 导入用于 Amazon IoT SiteWise 有效载荷转换的示例函数节点。此函数处理从标准化输入格式到 Amazon IoT SiteWise兼容格式的转换，确保正确的时间戳格式、质量指标和值键入。

   ```
   [
       {
           "id": "string",
           "type": "function",
           "z": "string",
           "name": "Translate to SiteWise payload",
           "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n    \"timeInSeconds\": timeInSeconds,\n    \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n    \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n    \"boolean\": (x) => \"booleanValue\",\n    \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n    payload: JSON.stringify(output)\n};",
           "outputs": 1,
           "timeout": "",
           "noerr": 0,
           "initialize": "",
           "finalize": "",
           "libs": [],
           "x": 530,
           "y": 200,
           "wires": [
               [
                   "string"
               ]
           ]
       }
   ]
   ```

1. 验证 JavaScript 代码是否正确转换了风速数据。该函数执行几项重要任务：
   + 从输入中提取属性名称并将其设置为 propertyAlias
   + 将时间戳从毫秒转换为所需的秒和纳秒格式
   + 保留用于数据可靠性跟踪的质量指标
   + 自动检测值类型并根据 Amazon IoT SiteWise 要求对其进行格式化

1. 将该节点连接到您的流程，将其链接到数据输入节点和 MQTT 发布者之间。

有关编写特定于业务需求的函数的指导，请参阅*Node-RED文档*中的[编写函数](https://nodered.org/docs/user-guide/writing-functions)

## 配置 MQTT 发布器


翻译完成后，数据就可以发布到 SiteWise Edge MQTT 代理了。

使用以下设置配置 MQTT 发布者以向 SiteWise Edge MQTT 代理发送数据：

**导入 MQTT 输出节点**

1. 使用`"type": "mqtt out"`将 MQTT 导出配置节点。MQTT 输出节点允许您共享经纪商的配置。

1. 输入键值对以获取与 MQTT 代理连接和消息路由相关的信息。

导入示例`mqtt out`节点。

**Example**  

```
[
    {
        "id": "string",
        "type": "mqtt out",
        "z": "string",
        "name": "Publish to MQTT broker",
        "topic": "/Renton/WindFarm/Turbine/WindSpeed",
        "qos": "1",
        "retain": "",
        "respTopic": "",
        "contentType": "",
        "userProps": "",
        "correl": "",
        "expiry": "",
        "broker": "string",
        "x": 830,
        "y": 200,
        "wires": []
    },
    {
        "id": "string",
        "type": "mqtt-broker",
        "name": "emqx",
        "broker": "127.0.0.1",
        "port": "1883",
        "clientid": "",
        "autoConnect": true,
        "usetls": false,
        "protocolVersion": "5",
        "keepalive": 15,
        "cleansession": true,
        "autoUnsubscribe": true,
        "birthTopic": "",
        "birthQos": "0",
        "birthPayload": "",
        "birthMsg": {},
        "closeTopic": "",
        "closePayload": "",
        "closeMsg": {},
        "willTopic": "",
        "willQos": "0",
        "willPayload": "",
        "willMsg": {},
        "userProps": "",
        "sessionExpiry": ""
    }
]
```

示例 MQTT 输出节点使用以下信息创建 MQTT 连接：
+ Server：`127.0.0.1`
+ 端口：`1883`
+ 协议：`MQTT V5`

然后，MQTT 输出节点使用以下信息配置消息路由：
+ 主题: `/Renton/WindFarm/Turbine/WindSpeed`
+ 服务质量：`1`

## 部署并验证节点


配置三个数据发布流程节点后，请按照以下步骤部署流程并验证数据是否正确传输到 Amazon IoT SiteWise

**部署和验证连接**

1. 按照数据发布流程所示连接三个节点。  
![\[Data publish flow diagram showing input from turbine simulator to Amazon IoT SiteWise to MQTT broker.\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-publish-flow.png)

1. 选择 **Deploy** 以应用所有节点连接更改。

1. 导航到[Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)并选择 “**数据流**”。

1. 确保在下拉菜单中选择了**别名前缀**。然后，搜索`/Renton/WindFarm/Turbine/WindSpeed`别名。

如果您在搜索中看到正确的别名，则表示您已经部署了流程并验证了数据传输。

# 配置数据保留流程


数据保留流程可用于保持边缘的操作可见性。这在网络中断或需要立即访问数据时非常有用。此流程订阅 MQTT 代理以接收设备数据，将其转换为 InfluxDB® 格式，然后将其存储在本地。通过实施此流程，您可以创建弹性本地数据存储，操作员无需依赖云即可访问该数据存储，从而实现边缘的实时监控和决策。

该流程由三个关键组件组成，它们协同工作，以确保正确捕获和存储您的数据：
+ **MQTT 订阅客户端**-接收来自经纪商的数据，确保您捕获所有相关的行业数据
+ **InfluxDB 转换器**-将 Amazon IoT SiteWise 有效负载转换为 InfluxDB 格式，为高效的时间序列存储做好准备
+ **InfluxDB 写入器**-处理本地存储，确保本地应用程序的数据持久性和可用性

![\[Node-red 数据保留流程\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)


## 设置 MQTT 订阅客户端

+ 通过导入以下示例，在 Node-RED 中配置 MQTT 订阅客户端，使其接收来自 MQTT EMQX 代理的数据。 Amazon IoT SiteWise   
**Example : 节点中的 MQTT**  

  ```
  [
      {
          "id": "string",
          "type": "mqtt in",
          "z": "string",
          "name": "Subscribe to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "datatype": "auto-detect",
          "broker": "string",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
              [
                  "string"
              ]
          ]
      },
      {
          "id": "string",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "127.0.0.1",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
      }
  ]
  ```

此订阅可确保捕获发布给经纪商的所有相关数据以供本地存储，从而提供您的工业运营的完整记录。该节点使用与该[配置 MQTT 发布器](windows-nodered-data-publish-flow.md#windows-nodered-mqtt-publisher-config)部分相同的 MQTT 连接参数，订阅设置如下：
+ 话题 — `/Renton/WindFarm/Turbine/WindSpeed`
+ 服务质量 — `1`

有关更多信息，请参阅*Node-RED文档*中的 [Connect 到 MQTT 代理](https://cookbook.nodered.org/mqtt/connect-to-broker)。

## 配置 InfluxDB 转换器


InfluxDB 使用[标签](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#tag)进行索引，使用[字段](https://docs.influxdata.com/influxdb/v1/concepts/glossary/#field)作为值来组织数据。该组织优化了时间序列数据的查询性能和存储效率。导入包含将 Amazon IoT SiteWise 有效载荷转换为 InfluxDB 格式的 JavaScript 代码的示例函数节点。翻译器将属性分成两组：
+ 标签-用于高效索引的质量和名称属性
+ 字段-时间戳（自纪元以来的毫秒数）和值

**Example : 转换为 InfluxDB 有效负载的函数节点**  

```
[
    {
        "id": "string",
        "type": "function",
        "z": "string",
        "name": "Translate to InfluxDB payload",
        "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
        "outputs": 1,
        "timeout": "",
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 560,
        "y": 340,
        "wires": [
            [
                "string"
            ]
        ]
    }
]
```

有关其他配置选项，请参阅 Node-red GitHub 存储库[node-red-contrib-influxdb](https://github.com/mblackstock/node-red-contrib-influxdb)中的。

## 设置 InfluxDB 写入器


InfluxDB 写入器节点是数据保留流程中的最后一个组件，负责将工业数据存储在本地 InfluxDB 数据库中。这种本地存储对于在网络中断期间保持操作可见性以及为时间紧迫的应用程序提供即时数据访问非常重要。

1. 通过 “管理面板” 选项安装 node-red-contrib-influxdb软件包。该软件包提供了将 Node-RED 与 InfluxDB 连接所需的节点。

1. 向您的流程中添加一个 InfluxDB 输出节点。这个节点将处理向你的InfluxDB数据库实际写入数据。

1. 配置服务器属性以建立与InfluxDB实例的安全连接：

   1. 将版本设置为 2.0-这指定您要连接到 InfluxDB v2.x，该版本使用与早期版本不同的 API

   1. 将 URL 设置为 `http://127.0.0.1:8086`-这指向您的本地 InfluxDB 实例

   1. 输入你的 InfluxDB 身份验证令牌。此安全令牌授权与您的数据库的连接。您在[使用 InfluxDB 设置本地存储](windows-influxdb-setup.md)操作过程中生成了令牌。

1. 指定存储位置参数以定义数据的存储位置和方式：

   1. 输入您的InfluxDB组织名称-该组织是一个供一组用户使用的工作空间，您的存储桶和仪表板属于该组。有关更多信息，请参阅中的[管理组织*InfluxData Documentation*](https://docs.influxdata.com/influxdb/v2/admin/organizations/)。

   1. 指定 InfluxDB 存储桶（例如，`WindFarmData`）— 该存储桶等同于传统系统中的数据库，可用作时间序列数据的容器

   1. 设置 InfluxDB 测量（例如`TurbineData`）— 测量值类似于关系数据库中的表，用于组织相关数据点

**注意**  
在InfluxDB实例的左侧边栏中找到您的组织名称。组织、存储桶和测量概念是InfluxDB数据组织模型的基础。有关更多信息，请参阅 [InfluxDB 文档](https://docs.influxdata.com/influxdb/v2/admin/organizations/)。

## 部署并验证保留流程


配置数据保留流程的所有组件后，您需要部署并验证系统是否正常运行。这种验证可确保您的工业数据正确存储在本地，便于即时访问和分析。

1. 如数据保留流程图所示，连接三个节点。这将创建从数据订阅到本地存储的完整管道。  
![\[Node-red 数据保留流程\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-open-source-nodered-data-retention.png)

1. 选择 **Deploy** 以应用您的更改并激活流程。这将启动数据收集和存储过程。

1. 使用 InfluxDB 数据资源管理器查询和可视化您的数据。此工具允许您验证数据存储是否正确，并创建时间序列数据的初始可视化效果。

   在 Data Explorer 中，您应该能够看到随时间推移记录的风速测量结果，从而确认从数据生成到本地存储的整个管道是否正常运行。

   有关更多信息，请参阅[中的在数据资源管理器中查询*InfluxData Documentation*](https://docs.influxdata.com/influxdb/v2/query-data/execute-queries/data-explorer/)。

部署了数据发布流程和数据保留流程后，您现在拥有了一个完整的系统，可以将数据发送到 Amazon IoT SiteWise 云端，同时维护本地副本以实现即时访问和弹性。这种双路径方法可确保您从基于云的分析和存储中受益，同时保持边缘的运营可见性。

# 为 Edge 设置 Gra SiteWise fana


 Grafana® 允许您为工业数据创建本地实时监控仪表板。通过可视化存储在InfluxDB® 中的数据，您可以为操作员提供有关设备性能、过程效率和潜在问题的即时见解。这种边缘可见性对于时间敏感型运营和在网络中断期间保持连续性非常重要。

## 配置数据来源


将 Grafana 连接到您的 InfluxDB 数据库可为您的工业数据创建强大的可视化层。这种连接支持实时监控仪表板，操作员可以使用这些仪表板做出明智的决策，而无需依赖云。

1. 在浏览器中导航到 http://127.0.0.1:3000，即可在本地访问你的 Grafana 实例[。](http://127.0.0.1:3000)*如果需要启用 TLS，您可以参考文档中的[设置 Grafana HTTPS 以实现安全的网络](https://grafana.com/docs/grafana/latest/setup-grafana/set-up-https/)流量。Grafana Labs*

1. 添加一个 InfluxDB 数据源，该数据源指向 Node-RED 写入数据的 InfluxDB 时间序列存储桶。例如 `WindFarmData`。此连接在您存储的数据和可视化平台之间建立了链接。

1. *有关详细说明，请参阅文档[中的配置 InfluxDB 数据源](https://grafana.com/docs/grafana/latest/datasources/influxdb/configure-influxdb-data-source/)。Grafana Labs*

### 为边缘数据创建 Grafana 控制面板 SiteWise


创建仪表板是构建本地监控解决方案的最后一步。仪表板可直观地呈现您的工业数据，使您可以更轻松地一目了然地识别趋势、异常和潜在问题。
+ 按照指南创建仪表板。有关更多信息，请参阅*Grafana Labs文档*中的[创建您的第一个仪表板](https://grafana.com/docs/grafana/latest/getting-started/build-first-dashboard/)。此模板假设您的存储桶已命名`WindFarmData`，测量值为`TurbineData`。

  您还可以使用快速入门指南，通过导入提供的示例仪表板模板来快速创建带有时间序列图的仪表板，该仪表板包含上一节中 Node-RED 生成的数据的时间序列图。此模板提供了一个起点，您可以对其进行自定义以满足您的特定监控需求。

  ```
  {
    "__inputs": [
      {
        "name": "DS_WINDFARM-DEMO",
        "label": "windfarm-demo",
        "description": "",
        "type": "datasource",
        "pluginId": "influxdb",
        "pluginName": "InfluxDB"
      }
    ],
    "__elements": {},
    "__requires": [
      {
        "type": "grafana",
        "id": "grafana",
        "name": "Grafana",
        "version": "11.6.0-pre"
      },
      {
        "type": "datasource",
        "id": "influxdb",
        "name": "InfluxDB",
        "version": "1.0.0"
      },
      {
        "type": "panel",
        "id": "timeseries",
        "name": "Time series",
        "version": ""
      }
    ],
    "annotations": {
      "list": [
        {
          "builtIn": 1,
          "datasource": {
            "type": "grafana",
            "uid": "-- Grafana --"
          },
          "enable": true,
          "hide": true,
          "iconColor": "rgba(0, 211, 255, 1)",
          "name": "Annotations & Alerts",
          "type": "dashboard"
        }
      ]
    },
    "editable": true,
    "fiscalYearStartMonth": 0,
    "graphTooltip": 0,
    "id": null,
    "links": [],
    "panels": [
      {
        "datasource": {
          "type": "influxdb",
          "uid": "${DS_WINDFARM-DEMO}"
        },
        "fieldConfig": {
          "defaults": {
            "color": {
              "mode": "palette-classic"
            },
            "custom": {
              "axisBorderShow": false,
              "axisCenteredZero": false,
              "axisColorMode": "text",
              "axisLabel": "",
              "axisPlacement": "auto",
              "barAlignment": 0,
              "barWidthFactor": 0.6,
              "drawStyle": "line",
              "fillOpacity": 0,
              "gradientMode": "none",
              "hideFrom": {
                "legend": false,
                "tooltip": false,
                "viz": false
              },
              "insertNulls": false,
              "lineInterpolation": "linear",
              "lineWidth": 1,
              "pointSize": 5,
              "scaleDistribution": {
                "type": "linear"
              },
              "showPoints": "auto",
              "spanNulls": false,
              "stacking": {
                "group": "A",
                "mode": "none"
              },
              "thresholdsStyle": {
                "mode": "off"
              }
            },
            "mappings": [],
            "thresholds": {
              "mode": "absolute",
              "steps": [
                {
                  "color": "green"
                },
                {
                  "color": "red",
                  "value": 80
                }
              ]
            }
          },
          "overrides": []
        },
        "gridPos": {
          "h": 8,
          "w": 12,
          "x": 0,
          "y": 0
        },
        "id": 1,
        "options": {
          "legend": {
            "calcs": [],
            "displayMode": "list",
            "placement": "bottom",
            "showLegend": true
          },
          "tooltip": {
            "hideZeros": false,
            "mode": "single",
            "sort": "none"
          }
        },
        "pluginVersion": "11.6.0-pre",
        "targets": [
          {
            "datasource": {
              "type": "influxdb",
              "uid": "${DS_WINDFARM-DEMO}"
            },
            "query": "from(bucket: \"WindFarmData\")\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"TurbineData\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> filter(fn: (r) => r[\"name\"] == \"/Renton/WindFarm/Turbine/WindSpeed\")\n  |> filter(fn: (r) => r[\"quality\"] == \"GOOD\")\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n  |> yield(name: \"mean\")",
            "refId": "A"
          }
        ],
        "title": "Panel Title",
        "type": "timeseries"
      }
    ],
    "schemaVersion": 41,
    "tags": [],
    "templating": {
      "list": []
    },
    "time": {
      "from": "now-6h",
      "to": "now"
    },
    "timepicker": {},
    "timezone": "browser",
    "title": "demo dashboard",
    "uid": "fejc0t08o6d4wb",
    "version": 1,
    "weekStart": ""
  }
  ```

# 设置与 Docker 的开源集成 (Linux)
使用 Linux 设置 Docker

为了简化部署流程，你可以使用 Docker 在 Linux 环境中设置 Node-RED®、InfluxDB® 和 Grafana®。此方法使用预先配置的容器，可以快速部署并更轻松地管理组件。

## Docker 安装前提条件


在开始之前，请验证是否符合以下条件：
+ 支持 MQTT 的 V3 网关。有关更多信息，请参阅 [支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)。
+ Docker Compose 插件。有关安装步骤，请参阅 *Docker* 手册文档中的[安装Docker Compose插件](https://docs.docker.com/compose/install/linux/)。

## 部署服务


此部署在同一台主机上运行 SiteWise Edge、InfluxDB、Node-RED 和 Grafana。

### 设置环境


1. 获得根访问权限：

   ```
   sudo -i
   ```

1. 创建.env 文件或导出以下环境变量：

   ```
   export INFLUXDB_PASSWORD=your-secure-influxdb-password
   export INFLUXDB_TOKEN=your-secure-influxdb-token
   export GRAFANA_PASSWORD=your-secure-grafana-password
   ```

### 配置 Docker 网络

+ 使用名称创建桥接网络`SiteWiseEdgeNodeRedDemoNetwork`。

  ```
  docker network create --driver=bridge SiteWiseEdgeNodeRedDemoNetwork
  ```

### 准备Docker Compose文件


将以下 YAML 文件的内容复制到您的 SiteWise Edge 网关设备。

#### 展开查看 Docker Compose YAML 文件示例


```
services:
  influxdb:
    image: influxdb:latest
    container_name: influxdb
    ports:
      - "127.0.0.1:8086:8086"
    volumes:
      - influxdb-storage:/.influxdbv2
    environment:
      - DOCKER_INFLUXDB_INIT_MODE=setup
      - DOCKER_INFLUXDB_INIT_USERNAME=admin
      - DOCKER_INFLUXDB_INIT_PASSWORD=${INFLUXDB_PASSWORD}
      - DOCKER_INFLUXDB_INIT_ORG=iot-sitewise-edge
      - DOCKER_INFLUXDB_INIT_BUCKET=WindFarmData
      - DOCKER_INFLUXDB_INIT_RETENTION=0
      - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=${INFLUXDB_TOKEN}
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    ports:
      - "127.0.0.1:3000:3000"
    volumes:
      - grafana-storage:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    environment:
      - GF_SECURITY_ADMIN_USER=admin
      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
      - GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
      - GF_PATHS_CONFIG=/etc/grafana/grafana.ini
      - GF_LOG_LEVEL=info
    configs:
      - source: grafana_datasource
        target: /etc/grafana/provisioning/datasources/influxdb.yaml
      - source: grafana_preload_dashboard_config
        target: /etc/grafana/provisioning/dashboards/dashboard.yml
      - source: grafana_preload_dashboard
        target: /etc/grafana/provisioning/dashboards/demo_dashboard.json
    depends_on:
      - influxdb
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

  nodered:
    build:
      context: .
      dockerfile_inline: |
        FROM nodered/node-red:latest
        RUN npm install node-red-contrib-influxdb
    container_name: nodered
    ports:
      - "127.0.0.1:1880:1880"
    volumes:
      - node_red_data:/data
    environment:
      - NODE_RED_ENABLE_SAFE_MODE=false
      - NODE_RED_ENABLE_PALETTE_EDIT=true
      - NODE_RED_AUTO_INSTALL_MODULES=true
    configs:
      - source: nodered_flows
        target: /data/flows.json
      - source: nodered_settings
        target: /data/settings.js
      - source: nodered_flows_cred
        target: /data/flows_cred.json
    depends_on:
      - influxdb
    networks:
      - SiteWiseEdgeNodeRedDemoNetwork
    restart: unless-stopped

volumes:
  influxdb-storage:
  grafana-storage:
  node_red_data:

networks:
  SiteWiseEdgeNodeRedDemoNetwork:
    external: true

configs:
  grafana_datasource:
    content: |
      apiVersion: 1
      datasources:
        - name: windfarm-demo
          type: influxdb
          access: proxy
          url: http://influxdb:8086
          jsonData:
            version: Flux
            organization: iot-sitewise-edge
            defaultBucket: WindFarmData
            tlsSkipVerify: true
          secureJsonData:
            token: ${INFLUXDB_TOKEN}
          editable: false

  grafana_preload_dashboard_config:
    content: |
      apiVersion: 1
      providers:
        - name: "Dashboard provider"
          orgId: 1
          type: file
          options: 
            path: /etc/grafana/provisioning/dashboards

  grafana_preload_dashboard:
    content: |
      {
        "annotations": {
          "list": [
            {
              "builtIn": 1,
              "datasource": {
                "type": "grafana",
                "uid": "-- Grafana --"
              },
              "enable": true,
              "hide": true,
              "iconColor": "rgba(0, 211, 255, 1)",
              "name": "Annotations & Alerts",
              "type": "dashboard"
            }
          ]
        },
        "editable": true,
        "fiscalYearStartMonth": 0,
        "graphTooltip": 0,
        "id": 1,
        "links": [],
        "panels": [
          {
            "datasource": {
              "type": "influxdb",
              "uid": "PEB0DCBF338B3CEB2"
            },
            "fieldConfig": {
              "defaults": {
                "color": {
                  "mode": "palette-classic"
                },
                "custom": {
                  "axisBorderShow": false,
                  "axisCenteredZero": false,
                  "axisColorMode": "text",
                  "axisLabel": "",
                  "axisPlacement": "auto",
                  "barAlignment": 0,
                  "barWidthFactor": 0.6,
                  "drawStyle": "line",
                  "fillOpacity": 0,
                  "gradientMode": "none",
                  "hideFrom": {
                    "legend": false,
                    "tooltip": false,
                    "viz": false
                  },
                  "insertNulls": false,
                  "lineInterpolation": "linear",
                  "lineWidth": 1,
                  "pointSize": 5,
                  "scaleDistribution": {
                    "type": "linear"
                  },
                  "showPoints": "auto",
                  "spanNulls": false,
                  "stacking": {
                    "group": "A",
                    "mode": "none"
                  },
                  "thresholdsStyle": {
                    "mode": "off"
                  }
                },
                "mappings": [],
                "thresholds": {
                  "mode": "absolute",
                  "steps": [
                    {
                      "color": "green"
                    },
                    {
                      "color": "red",
                      "value": 80
                    }
                  ]
                }
              },
              "overrides": []
            },
            "gridPos": {
              "h": 8,
              "w": 12,
              "x": 0,
              "y": 0
            },
            "id": 1,
            "options": {
              "legend": {
                "calcs": [],
                "displayMode": "list",
                "placement": "bottom",
                "showLegend": true
              },
              "tooltip": {
                "hideZeros": false,
                "mode": "single",
                "sort": "none"
              }
            },
            "pluginVersion": "11.6.0",
            "targets": [
              {
                "datasource": {
                  "type": "influxdb",
                  "uid": "PEB0DCBF338B3CEB2"
                },
                "query": "from(bucket: \"WindFarmData\")\n  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)\n  |> filter(fn: (r) => r[\"_measurement\"] == \"TurbineData\")\n  |> filter(fn: (r) => r[\"_field\"] == \"value\")\n  |> filter(fn: (r) => r[\"name\"] == \"/Renton/WindFarm/Turbine/WindSpeed\")\n  |> filter(fn: (r) => r[\"quality\"] == \"GOOD\")\n  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)\n  |> yield(name: \"mean\")",
                "refId": "A"
              }
            ],
            "title": "Wind Speed",
            "type": "timeseries"
          }
        ],
        "preload": false,
        "schemaVersion": 41,
        "tags": [],
        "templating": {
          "list": []
        },
        "time": {
          "from": "now-6h",
          "to": "now"
        },
        "timepicker": {},
        "timezone": "browser",
        "title": "Demo Dashboard",
        "uid": "eejtureqjo9a8c",
        "version": 2
      }

  nodered_flows:
    content: |
      [
        {
          "id": "95fce448fdd43b47",
          "type": "tab",
          "label": "Demo Flow",
          "disabled": false,
          "info": ""
        },
        {
          "id": "5f63740b66af3386",
          "type": "mqtt out",
          "z": "95fce448fdd43b47",
          "name": "Publish to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "retain": "",
          "respTopic": "",
          "contentType": "",
          "userProps": "",
          "correl": "",
          "expiry": "",
          "broker": "5744207557fa19be",
          "x": 830,
          "y": 200,
          "wires": []
        },
        {
          "id": "8f2eb590d596679b",
          "type": "function",
          "z": "95fce448fdd43b47",
          "name": "Translate to SiteWise payload",
          "func": "let input = msg.payload;\nlet output = {};\n\noutput[\"propertyAlias\"] = input.name;\n\nlet propertyVal = {}\n\nlet timeInSeconds = Math.floor(input.timestamp / 1000);\nlet offsetInNanos = (input.timestamp % 1000) * 1000000;\n\npropertyVal[\"timestamp\"] = {\n    \"timeInSeconds\": timeInSeconds,\n    \"offsetInNanos\": offsetInNanos,\n};\n\npropertyVal[\"quality\"] = input.quality\n\nlet typeNameConverter = {\n    \"number\": (x) => Number.isInteger(x) ? \"integerValue\" : \"doubleValue\",\n    \"boolean\": (x) => \"booleanValue\",\n    \"string\": (x) => \"stringValue\", \n}\nlet typeName = typeNameConverter[typeof input.value](input.value)\npropertyVal[\"value\"] = {}\npropertyVal[\"value\"][typeName] = input.value;\n\noutput[\"propertyValues\"] = [propertyVal]\n\nreturn {\n    payload: JSON.stringify(output)\n};",
          "outputs": 1,
          "timeout": "",
          "noerr": 0,
          "initialize": "",
          "finalize": "",
          "libs": [],
          "x": 530,
          "y": 200,
          "wires": [
            [
              "5f63740b66af3386"
            ]
          ]
        },
        {
          "id": "4b78cbdea5e3258c",
          "type": "inject",
          "z": "95fce448fdd43b47",
          "name": "Turbine Simulator",
          "props": [
            {
              "p": "payload.timestamp",
              "v": "",
              "vt": "date"
            },
            {
              "p": "payload.quality",
              "v": "GOOD",
              "vt": "str"
            },
            {
              "p": "payload.value",
              "v": "$$random()",
              "vt": "jsonata"
            },
            {
              "p": "payload.name",
              "v": "/Renton/WindFarm/Turbine/WindSpeed",
              "vt": "str"
            }
          ],
          "repeat": "1",
          "crontab": "",
          "once": false,
          "onceDelay": "",
          "topic": "",
          "x": 270,
          "y": 200,
          "wires": [
            [
              "8f2eb590d596679b"
            ]
          ]
        },
        {
          "id": "b658bf337ea2e316",
          "type": "influxdb out",
          "z": "95fce448fdd43b47",
          "influxdb": "2f1c38495035d2e4",
          "name": "Store data in InfluxDB",
          "measurement": "TurbineData",
          "precision": "",
          "retentionPolicy": "",
          "database": "",
          "retentionPolicyV18Flux": "",
          "org": "iot-sitewise-edge",
          "bucket": "WindFarmData",
          "x": 840,
          "y": 340,
          "wires": []
        },
        {
          "id": "9432d39af35b202f",
          "type": "function",
          "z": "95fce448fdd43b47",
          "name": "Translate to InfluxDB payload",
          "func": "let data = msg.payload;\n\nlet timeInSeconds = data.propertyValues[0].timestamp.timeInSeconds;\nlet offsetInNanos = data.propertyValues[0].timestamp.offsetInNanos;\nlet timestampInMilliseconds = (timeInSeconds * 1000) + (offsetInNanos / 1000000);\n\nmsg.payload = [\n    {\n        \"timestamp(milliseconds_since_epoch)\": timestampInMilliseconds,\n        \"value\": data.propertyValues[0].value.doubleValue\n    },\n    {\n        \"name\": data.propertyAlias,\n        \"quality\": data.propertyValues[0].quality\n    }\n]\n\nreturn msg",
          "outputs": 1,
          "timeout": "",
          "noerr": 0,
          "initialize": "",
          "finalize": "",
          "libs": [],
          "x": 560,
          "y": 340,
          "wires": [
            [
              "b658bf337ea2e316"
            ]
          ]
        },
        {
          "id": "b689403d2c80816b",
          "type": "mqtt in",
          "z": "95fce448fdd43b47",
          "name": "Subscribe to MQTT broker",
          "topic": "/Renton/WindFarm/Turbine/WindSpeed",
          "qos": "1",
          "datatype": "auto-detect",
          "broker": "5744207557fa19be",
          "nl": false,
          "rap": true,
          "rh": 0,
          "inputs": 0,
          "x": 290,
          "y": 340,
          "wires": [
            [
              "9432d39af35b202f"
            ]
          ]
        },
        {
          "id": "4f59bed8e829fc35",
          "type": "comment",
          "z": "95fce448fdd43b47",
          "name": "Data Publish Flow",
          "info": "dfgh",
          "x": 270,
          "y": 160,
          "wires": []
        },
        {
          "id": "b218c7fc58c8b6e7",
          "type": "comment",
          "z": "95fce448fdd43b47",
          "name": "Data Retention flow",
          "info": "",
          "x": 270,
          "y": 300,
          "wires": []
        },
        {
          "id": "5744207557fa19be",
          "type": "mqtt-broker",
          "name": "emqx",
          "broker": "emqx",
          "port": "1883",
          "clientid": "",
          "autoConnect": true,
          "usetls": false,
          "protocolVersion": "5",
          "keepalive": 15,
          "cleansession": true,
          "autoUnsubscribe": true,
          "birthTopic": "",
          "birthQos": "0",
          "birthPayload": "",
          "birthMsg": {},
          "closeTopic": "",
          "closePayload": "",
          "closeMsg": {},
          "willTopic": "",
          "willQos": "0",
          "willPayload": "",
          "willMsg": {},
          "userProps": "",
          "sessionExpiry": ""
        },
        {
          "id": "2f1c38495035d2e4",
          "type": "influxdb",
          "hostname": "influxdb",
          "port": 8086,
          "protocol": "http",
          "database": "",
          "name": "InfluxDB",
          "usetls": false,
          "tls": "",
          "influxdbVersion": "2.0",
          "url": "http://influxdb:8086",
          "timeout": "",
          "rejectUnauthorized": false
        }
      ]

  nodered_flows_cred:
    content: |
      {
        "2f1c38495035d2e4": {
          "token": "${INFLUXDB_TOKEN}"
        }
      }

  nodered_settings:
    content: |
      module.exports = {
        flowFile: 'flows.json',
        credentialSecret: false,
        adminAuth: null,
        editorTheme: {
          projects: {
            enabled: false
          }
        }
      }
```

### 更新边 SiteWise 缘部署


1. 导航到 [Amazon IoT 控制台](https://console.amazonaws.cn/iot/)

1. ****在 “管理” **部分下的左侧导航菜单中选择 Greengrass** 设备，然后选择 “核心设备”。****

1. 选择连接到 SiteWise Edge 网关的核心设备。

1. 选择 “部**署**” 选项卡，然后选择 “部**署 ID**” 值。

1. 选择 “**操作**”，然后选择 “**修订**”。

1. 阅读弹出消息，然后选择 “**修订部署**”。

1. 在**步骤 2-选择组件中**，选择以下组件，然后选择**下一步**。
   + `aws.greengrass.clientdevices.mqtt.EMQX`
   + `aws.iot.SiteWiseEdgePublisher`

1. 在**步骤 3-配置组件**中，选择`aws.greengrass.clientdevices.mqtt.EMQX`组件值并添加以下网络配置：

   ```
   {
       "emqxConfig": {
           "authorization": {
               "no_match": "allow"
           },
           "listeners": {
               "tcp": {
                   "default": {
                       "enabled": true,
                       "enable_authn": false
                   }
               }
           }
       },
       "authMode": "bypass",
       "dockerOptions": "-p 127.0.0.1:1883:1883 --network=SiteWiseEdgeNodeRedDemoNetwork",
       "requiresPrivilege": "true"
   }
   ```

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

1. 在**步骤 4-配置高级设置中**，选择**下一步**。

1. 选择**部署**

### 启动服务


1. 使用 Docker 撰写文件启动服务。在包含该`compose.yaml`文件的目录下运行以下命令。

   ```
   docker compose up -d
   ```

1. 创建 SSH 隧道以访问服务：

   ```
   ssh -i path_to_your_ssh_key -L 1880:127.0.0.1:1880 -L 3000:127.0.0.1:3000 -L 8086:127.0.0.1:8086 username@gateway_ip_address
   ```

此部署在中创建了以下服务`SiteWiseEdgeNodeRedDemoNetwork network`：

**InfluxDB v2（端口 8086）**  
包括预先配置的组织 (iot-sitewise-edge)、 WindFarmData InfluxDB 存储桶和管理员凭证

**Node-red（端口 1880）**  
包括 InfluxDB 节点和用于集成的预配置流程 Amazon IoT SiteWise 

**Grafana（端口 3000）**  
包括管理员用户、InfluxDB 数据源和监控控制面板

### 访问服务


部署后，使用以下内容 URLs 和凭据访问服务：

**注意**  
您可以从主机或网关计算机访问每项服务。


**服务访问详情**  

| 服务 | URL | 凭据 | 
| --- | --- | --- | 
| Node-RED | [http://127.0.0.1:1880](http://127.0.0.1:1880) | 无需凭证 | 
| InfluxDB | [http://127.0.0.1:8086](http://127.0.0.1:8086) |  用户名：管理员 密码：\$1INFLUXDB\$1PASSWORD  | 
| Grafana | [http://127.0.0.1:3000](http://127.0.0.1:3000) |  用户名：管理员 密码：\$1GRAFANA\$1PASSWORD  | 

## 验证部署


为确保部署成功，请执行以下检查：

1. 对于 Node-RED，请验证是否存在两个预加载的流：
   + 数据发布流程
   + 数据保留流程

1. 对于 Amazon IoT SiteWise，在 Amazon IoT SiteWise 控制台中，使用别名确认是否存在数据流`/Renton/WindFarm/Turbine/WindSpeed`。

1. 对于 InfluxDB，使用数据资源管理器验证存储桶内`TurbineData`测量中的数据存储。`WindFarmData`

1. 对于 Grafana，请查看控制面板以确认显示从 Node-RED 生成的时间序列数据。

# 处理开源集成的数据


可以使用不同的工具在不同的阶段处理数据（例如转换或聚合），每种工具都满足不同的监控要求。

## 使用 Node-red 节点处理数据


使用 Node-RED® 内置处理节点实时转换数据。通过 Node-RED 控制台配置这些节点以创建您的数据管道。

### 数据转换节点


使用以下节点变换单个数据点 Amazon IoT SiteWise，类似于中的变换：
+ **更改节点**-对数据执行简单的值修改。
+ **函数节点**-为复杂的数据处理启用自定义 JavaScript转换。

### 指标计算节点


使用以下节点，将多个数据点合并成单个输出，类似于中的 Amazon IoT SiteWise Metrics：
+ **batch 节点**-将多条消息分组以进行批处理。
+ **join node**-将多个数据流合并为一个输出。
+ **聚合器节点**-计算来自多个数据点的聚合指标。

有关其他节点选项，请参阅 [Node-red 库](https://flows.nodered.org/)。

## 创建 InfluxDB 任务


虽然 Node-RED 擅长通过快速设置进行基本数据处理，但在基于流程的编程中，复杂的度量计算可能会变得具有挑战性。InfluxDB® Tasks 通过计划的 Flux 脚本提供了一种替代方案，以满足高级处理需求。

使用 InfluxDB 任务执行以下操作：
+ 跨大型数据集的统计聚合
+ 对多个属性的数学运算
+ 来自多个来源的测量结果

### 任务功能

+ **计划执行**-基于 cron 表达式运行任务
+ **Batch** Processing-优化时间序列数据的操作
+ **错误恢复**-自动重试失败的操作
+ **监控**-通过详细日志跟踪执行情况

通过 InfluxDB 用户界面、API 或 CLI 管理任务。有关更多信息，请参阅[使用 InfluxDB 任务处理数据](https://docs.influxdata.com/influxdb/cloud/process-data/)。

## 使用 Grafana 变换


在 Grafana® 中转换数据可视化，无需修改 InfluxDB 中的源数据。Grafana 转换仅适用于可视化层。
+ **Visual Builder**-无需编写代码即可创建转换
+ **实时预览**-实时查看转换结果
+ **多源**-处理来自多个数据库源的数据
+ **存储效率高**-在可视化时转换数据，无需存储中间结果

有关更多信息，请参阅[转换数据](https://grafana.com/docs/grafana/latest/panels/transform-data/)。

## 开源集成疑难解答


有关与 SiteWise Edge 网关开源集成相关的疑难解答主题的更多信息，请参阅[边缘开源集成疑难解答](troubleshooting-gateway.md#open-source-troubleshooting)。

# 经典直播，适用 Amazon IoT SiteWise 于 Edge 的 V2 网关
经典直播、V2 网关

了解 Classic 直播的功能和局限性，即适用于 Amazon IoT SiteWise Edge 的 V2 网关。

Classic Streams，V2 网关保留了在推出支持 MQTT 的 V3 网关之前的早期 Amazon IoT SiteWise 部署中熟悉的传统功能。这些 SiteWise Edge 网关被视为经典流，即 V2 网关。它们保持向后兼容性，并且可以与数据处理包配合使用。虽然 Classic 直播，但 V2 网关为现有设置提供了可靠的性能，但与较新的网关选项相比，它存在局限性。具体而言，这种网关类型与支持 MQTT 的 V3 网关目标中提供的高级功能不完全兼容。要使用 MQTT 消息协议，您可以创建一个支持 MQTT 的新的 V3 网关。有关更多信息，请参阅 [支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)。

# 配置 Amazon IoT SiteWise 发布者组件
配置发布者

创建 Amazon IoT SiteWise Edge 网关并安装软件后，您可以设置发布者组件，以便您的 SiteWise Edge 网关可以将数据导出到 Amazon 云端。使用发布者组件启用其他特征或配置默认设置。有关更多信息，请参阅《Amazon IoT Greengrass Version 2 开发者指南》**中的 [Amazon IoT SiteWise publisher](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)。

**注意**  
发布者配置因您使用的网关类型而异。对于经典流，V2 网关，请使用`iotsitewise:publisher:2`命名空间。对于支持 MQTT 的 V3 网关，请使用命名空间。`iotsitewise:publisher:3`

------
#### [ Console ]

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要为其配置发布商的 SiteWise Edge 网关。

1. 在**发布者配置**部分，选择**编辑**

1. 对于**发布顺序**，请选择下列选项之一：
   + **先发布最旧的数据**-默认情况下， SiteWise Edge 网关会先将最旧的数据发布到云端。
   + **首先发布最新数据** — SiteWise Edge 网关首先将最新数据发布到云端。

1. （可选）如果您不希望 SiteWise Edge 网关压缩您的数据，请取消选择 “**上传数据时激活压缩**”。

1. （可选）如果您不想发布旧数据，请选择**排除已过期数据**，然后执行以下操作：

   1. 在**截止期**中输入一个值并选择一个单位。截止期必须介于 5 分钟到 7 天之间。例如，如果截止期为三天，则早于三天的数据不会被发布到云端。

1. （可选）要设置有关如何在本地设备上处理数据的自定义设置，请选择**本地存储设置**并执行以下操作：

   1. 在**保留期**中输入一个数字并选择一个单位。保留期必须介于 1 分钟到 30 天之间，且大于或等于轮换期。例如，如果保留期为 14 天，则 SiteWise Edge 网关会在边缘存储超过 14 天后删除所有早于指定截止期限的数据。

   1. 在**轮换期**中输入一个数字并选择一个单位。轮换期必须多于 1 分钟，且等于或小于保留期。例如，假设轮换周期为两天， SiteWise Edge 网关会批量处理并将早于截止期限的数据保存到单个文件中。对于通过自托管的网关 Amazon IoT Greengrass V2， SiteWise Edge 网关每两天将一批数据传输到以下本地目录一次：`/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/exports`。

   1. 对于**存储容量**，请输入一个大于或等于 1 的值。如果存储容量为 2 GB，则当本地存储的数据超过 2 GB 时， SiteWise Edge 网关会开始删除数据。

1. 选择**保存**。

------
#### [ Amazon CLI ]

使用 [UpdateGatewayCapabilityConfiguration](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_UpdateGatewayCapabilityConfiguration.html)API 配置发布者。

将 `capabilityNamespace` 参数设置为 `iotsitewise:publisher:2`。

**Example : Classic Stream、V2 网关的发行商配置**  
发布者命名空间：`iotsitewise:publisher:2`  

```
{
    "SiteWisePublisherConfiguration": {                               
        "publishingOrder": "TIME_ORDER",
        "enableCompression": true,
        "dropPolicy": {
            "cutoffAge": "7d",
            "exportPolicy": {
                "retentionPeriod": "7d",
                "rotationPeriod": "6h",
                "exportSizeLimitGB": 10
            }
        }
    },
    "SiteWiseS3PublisherConfiguration": {
        "accessRoleArn": "arn:aws:iam:123456789012:role/roleName",
        "streamToS3ConfigMapping": [
            {
                "streamName": "S3_OPC-UA_Data_Collector",
                "targetBucketArn": "arn:aws:s3:::amzn-s3-demo-bucket/dataCollector",
                "publishPolicy": {
                    "publishFrequency": "10m",
                    "localSizeLimitGB": 10
                },
                "siteWiseImportPolicy": {
                    "enableSiteWiseStorageImport": true,
                    "enableDeleteAfterImport": true
                }
            }
        ]
    }
}
```

发布者提供了您可以自定义的以下配置参数：

`SiteWisePublisherConfiguration`    
`publishingOrder`  
数据发布到云的顺序。此参数值可能为下列其中之一：  
+ `TIME_ORDER`（**先发布最早的数据**）— 默认情况下，网关会先将最早的数据发布到云。
+ `RECENT_DATA`（**先发布最新数据**）— 网关会先将最新数据发布到云。  
`enableCompression`  
将其设置`true`为可在发布之前压缩数据。数据压缩可以减少带宽使用量。  
`dropPolicy`  
（可选）控制将数据发布到云的策略。    
`cutoffAge`  
要发布的数据的最大期限，以天、小时和分钟为单位指定。例如，`7d` 或 `1d7h16m`。不会将早于您指定时间的数据发送到 Amazon IoT SiteWise。  
早于截止期的数据不会发布到云端。截止期必须介于 5 分钟到 7 天之间。  
当您指定截止期时，可以使用 `m`、`h` 和 `d`。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。  
`exportPolicy`  
（可选）管理边缘数据存储的策略。本策略适用于早于截止期的数据。    
`retentionPeriod`  
您的 SiteWise Edge 网关在存储指定保留期后，会从本地存储中删除所有早于截止期限的数据。保留期必须介于 1 分钟到 30 天之间，且大于或等于轮换期。  
当您指定保留期时，可以使用 `m`、`h` 和 `d`。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。  
`rotationPeriod`  
将早于截止期的数据进行批处理和保存至单个文件的时间间隔。 SiteWise Edge 网关在每个轮换周期结束时将一批数据传输到以下本地目录:`/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/exports`. 轮换期必须多于 1 分钟，且等于或小于保留期。  
当您指定轮换期时，可以使用 `m`、`h` 和 `d`。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。  
`exportSizeLimitGB`  
允许存储在本地的数据最大以 GB 为单位。如果超过此配额， SiteWise Edge 网关会开始删除最早的数据，直到本地存储的数据大小等于或小于配额。该参数值必须大于或等于 1。

`SiteWiseS3PublisherConfiguration`    
`accessRoleArn`  
授予管理您要发布到的 Amazon S3 存储桶的 Amazon IoT SiteWise 权限的访问角色。  
`streamToS3ConfigMapping`  
将流映射到 Amazon S3 配置的一组配置。    
`streamName`  
要读取并发布到 Amazon S3 配置的流。  
`targetBucketArn`  
要发布到的 ARN 存储桶。  
`publishPolicy`  
    
`publishFrequency`  
 SiteWise 边缘网关向 Amazon S3 存储桶发布内容的频率。  
`localSizeLimitGB`  
写入本地磁盘的文件的最大大小。如果突破此阈值，则发布者会将所有缓冲的数据发布到其目的地。  
`siteWiseImportPolicy`  
    
`enableSiteWiseStorageImport`  
将其设置为可`true`将数据从 Amazon S3 存储桶导入 Amazon IoT SiteWise 存储。  
`enableDeleteAfterImport`  
将其设置为 `true`，以在将 Amazon S3 存储桶中的文件摄取到 Amazon IoT SiteWise 存储空间后将其删除。

------

# 目的地和 Amazon IoT Greengrass 直播管理器
Amazon IoT Greengrass 直播管理器

Amazon IoT Greengrass 流管理器允许您将数据发送到以下 Amazon Web Services 云 目的地：传入的频道 Amazon IoT Analytics、Amazon Kinesis Data Streams 中的流、 Amazon IoT SiteWise中的资产属性或亚马逊简单存储服务 (Amazon S3) 中的对象。有关更多信息，请参阅《Amazon IoT Greengrass Version 2 开发人员指南》**中的 [Manage data streams on the Amazon IoT Greengrass Core](https://docs.amazonaws.cn/greengrass/v2/developerguide/manage-data-streams.html)。

**Example : 数据流消息结构**  
以下示例显示了流管理器传输的所需数据 Amazon IoT Greengrass 流消息结构。  

```
{
   "assetId": "string",
   "propertyAlias": "string",
   "propertyId": "string",
   "propertyValues": [
      {
         "quality": "string",
         "timestamp": {
            "offsetInNanos": number,
            "timeInSeconds": number
         },
         "value": {
            "booleanValue": boolean,
            "doubleValue": number,
            "integerValue": number,
            "stringValue": "string"
         }
      }
   ]
}
```

**注意**  
数据流消息的结构中必须包含（`assetId` 和 `propertyId`）或 `propertyAlias`。

`assetId`  
（可选）要更新的资产的 ID。

`propertyAlias`  
（可选）标识属性的别名，例如 OPC UA 服务器数据流路径。例如：  

```
/company/windfarm/3/turbine/7/temperature
```
有关更多信息，请参阅《*Amazon IoT SiteWise 用户指南》*中的[管理数据流](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-data-streams.html)。

`propertyId`  
（可选）此条目的资产属性的 ID。

`propertyValues`  
（必需）要上传的属性值的列表。您最多可以指定 10 个 `propertyValues` 数组元素。    
`quality`  
（可选）资产属性值的质量。  
 `timestamp`   
（必需）资产属性值的时间戳。    
 `offsetInNanos`   
（可选）来自 `timeInSeconds` 的纳秒偏移量。  
 `timeInSeconds`   
（必需）采用 Unix 纪元时间格式的时间戳日期（以秒为单位）。分数纳秒数据由 `offsetInNanos` 提供。  
 `value`   
（必需）资产属性的值。  
`value` 字段仅可以是以下值之一。  
 `booleanValue`   
（可选）布尔型（`true` 或 `false`）资产属性数据。  
 `doubleValue`   
（可选）双精度型（浮点数）资产属性数据。  
 `integerValue`   
（可选）整数型（整数）资产属性数据。  
 `stringValue`   
（可选）字符串型（字符序列）资产属性数据。

# 在 Edge 上配置 Amazon IoT SiteWise 边缘功能
配置边缘功能

**注意**  
新客户无法再使用数据处理包（DPP）功能。现有客户可以继续正常使用该服务。有关更多信息，请参阅[数据处理包可用性变更](https://docs.amazonaws.cn/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html)。

您可以使用 Amazon IoT SiteWise Edge 收集和临时存储数据，以便可以在本地组织和处理设备数据。通过启用边缘处理，您可以选择仅向发送聚合数据， Amazon Web Services 云 以优化带宽使用率和云存储成本。使用带有的 Amazon IoT SiteWise 组件 Amazon IoT Greengrass，您可以在将数据发送到之前在边缘收集和处理数据 Amazon Web Services 云，或者使用 E SiteWise dge 在本地对其进行管理 APIs。

数据收集是通过数据包和在其上运行的 Amazon IoT SiteWise 组件进行的 Amazon IoT Greengrass。

**注意**  
Amazon IoT SiteWise 在 Edge 网关上保留您的 SiteWise 边缘数据长达 30 天。数据的保留期取决于您的设备的可用磁盘空间。
如果您的 SiteWise Edge 网关已与 Edge 网关断开连接 30 天，则[数据处理包](configure-opcua-source.md)将自动禁用。 Amazon Web Services 云 

**Topics**
+ [

## 在 Edge 中设置 SiteWise 边缘功能
](#using-sitewise-edge)

## 在 Edge 中设置 SiteWise 边缘功能
设置边缘功能

Amazon IoT SiteWise 提供了以下数据包，您的 SiteWise Edge 网关可用来确定如何收集和处理您的数据。选择包以为 Edge 网关启用 SiteWise 边缘功能。
+ **数据收集包**使您的 SiteWise Edge 网关能够从多台 OPC UA 服务器收集数据，然后将数据从边缘导出到 Amazon 云端。向 SiteWise Edge 网关添加数据源后，它将变为活动状态。
+ **数据处理包**使您的 SiteWise Edge 网关能够在边缘处理您的设备数据。例如，您可以使用资产模型来计算指标和转换。有关资产模型和资产的更多信息，请参阅 [为工业资产建模](industrial-asset-models.md)。
**注意**  
数据处理包仅在 x86 平台上可用。

**要配置边缘功能，请执行以下步骤：**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要为其激活 SiteWise 边缘功能的 Edge 网关。

1. 在**边缘功能**部分，选择**编辑**

1. 在**边缘功能**部分，选择**启用数据处理包（会产生额外费用）**。

1. （可选）在 **Edge LDAP 连接**部分，您可以授予公司目录中的用户组访问此 SiteWise Edge 网关的权限。用户组可以使用轻型目录访问协议 (LDAP) 凭据访问 SiteWise Edge 网关。然后，他们可以使用 Amazon IoT SiteWise 应用程序、 Amazon IoT SiteWise API 操作或其他工具来管理 SiteWise Edge 网关。 Amazon OpsHub 有关更多信息，请参阅 [管理 SiteWise Edge 网关](manage-gateways-ggv2.md)。
**注意**  
您也可以使用 Linux 或Microsoft Windows凭据访问边 SiteWise 缘网关。有关更多信息，请参阅 [使用 Linux 操作系统凭据访问您的 SiteWise Edge 网关](manage-gateways-ggv2.md#linux-user-pool)。

   1. 选择**已激活**。

   1. 对于**提供者名称**，为您的 LDAP 提供者输入一个名称。

   1. 对于**主机名或 IP 地址**，输入 LDAP 服务器的主机名或 IP 地址。

   1. 对于**端口**，输入端口号。

   1. 对于**基本可分辨名称 (DN)**，输入基本的可分辨名称 (DN)。

      支持以下属性类型：公用名 (CN)、LocalityName (L)、名称 (ST)、组织 stateOrProvince名称 (O)、(OU)、国家名称 organizationalUnitName (C)、街道地址 (STREET)、域名组件 (DC) 和用户 ID (UID)。

   1. 对于**管理员组 DN**，输入 DN。

   1. 对于**用户组 DN**，输入 DN。

1. 选择**保存**。

现在，您已经在 Edge 网关上激活了 SiteWise 边缘功能，您需要为边缘配置资产模型。您的资产模型边缘配置指定计算资产属性的位置。您可以在边缘计算所有属性，或单独配置资产模型属性。资产模型属性包括[指标](concept-overview.md#concept-metric)、[转换](concept-overview.md#concept-transform)和[测量值](concept-overview.md#concept-measurement)。

有关资产属性的更多信息，请参阅 [定义数据属性](asset-properties.md)。

 创建资产模型后，您可以为边缘进行配置。有关您的边缘资产模型配置的更多信息，请参阅 [创建资产模型（控制台）](create-asset-models.md#create-asset-model-console)。

**注意**  
资产模型和仪表板每 10 分钟在 Amazon 云端和 SiteWise 边缘网关之间自动同步一次。您也可以从本地 SiteWise Edge 网关应用程序手动同步。

# 为 Amazon IoT SiteWise 模型和资产配置边缘数据处理
配置边缘数据处理

**注意**  
新客户无法再使用数据处理包（DPP）功能。现有客户可以继续正常使用该服务。有关更多信息，请参阅[数据处理包可用性变更](https://docs.amazonaws.cn/iot-sitewise/latest/appguide/iotsitewise-dpp-availability-change.html)。

 您可以使用 Amazon IoT SiteWise Edge 在本地收集、存储、组织和监控设备数据。您可以使用 SiteWise Edge 对工业数据进行建模并在本地对其进行可视化。您可以在本地处理数据并将其发送到 Amazon 云端，也可以使用 Amazon IoT SiteWise API 在本地进行处理。

借 Amazon IoT SiteWise 助 Edge，您可以在本地处理原始数据，并选择仅将聚合数据发送到 Amazon 云端，以优化带宽使用率和云存储成本。

**注意**  
Amazon IoT SiteWise 在 Edge 网关上保留您的 SiteWise 边缘数据长达 30 天。数据的保留期取决于您的设备的可用磁盘空间。
如果您的 SiteWise Edge 网关已与 Amazon 云端断开连接 30 天，[在 Edge 中 SiteWise 设置 OPC UA 来源](configure-opcua-source.md)则会自动禁用。

## 在 E SiteWise dge 上配置用于数据处理的资产模型
在边缘处理数据

资产属性包括指标、转换和测量值：
+ 指标是在指定的时间段内资产的汇总数据。您可以使用现有指标数据计算新的指标。 Amazon IoT SiteWise 始终将您的指标发送到 Amazon 云端以进行长期存储。 Amazon IoT SiteWise 默认情况下，在 Amazon 云端计算指标。您可以配置资产模型以计算边缘指标。 Amazon IoT SiteWise 将处理后的结果发送到 Amazon 云端。
+ 转换是将资产属性的数据点从一种形式映射到另一种形式的数学表达式。转换可以使用指标作为输入数据，并且必须在与其输入相同的位置进行计算和存储。如果将指标输入配置为在边缘计算，则 Amazon IoT SiteWise 还会在边缘计算其关联的转换。
+ 默认情况下，测量值格式为原始数据，您的设备会收集这些数据并发送到 Amazon 云端。您可以将资产模型配置为将数据存储于本地设备。

有关资产属性的更多信息，请参阅 [定义数据属性](asset-properties.md)。

 创建资产模型后，您可以为边缘进行配置。有关您的边缘资产模型配置的更多信息，请参阅 [创建资产模型（控制台）](create-asset-models.md#create-asset-model-console)。

**注意**  
资产模型和仪表板每 10 分钟在 Amazon 云端和 SiteWise 边缘网关之间自动同步一次。您也可以从 [管理 SiteWise Edge 网关](manage-gateways-ggv2.md) 手动同步。

您可以使用 Amazon IoT SiteWise REST APIs 和 Amazon Command Line Interface (Amazon CLI) 来查询 SiteWise Edge 网关以获取边缘的数据。在向 SiteWise Edge 网关查询边缘数据之前，必须满足以下先决条件：
+ 必须为 REST 设置您的证书 APIs。有关设置凭证的更多信息，请参阅 [管理 SiteWise Edge 网关](manage-gateways-ggv2.md)。
+ SDK 终端节点必须指向您的 SiteWise Edge 网关的 IP 地址。您可以在您的 SDK 文档中了解更多信息。例如，请参阅 *Amazon SDK for Java 2.x Developer Guide（开发人员指南）*中的 [Specifying Custom Endpoints（指定自定义端点）](https://docs.amazonaws.cn/sdk-for-javascript/v2/developer-guide/specifying-endpoints.html)。
+ 必须注册您的 SiteWise Edge 网关证书。您可以在软件开发工具包的文档中找到有关注册 SiteWise Edge 网关证书的更多信息。例如，请参阅 *Amazon SDK for Java 2.x 开发人员指南*中的 [在 Node.js 中注册证书包](https://docs.amazonaws.cn/sdk-for-javascript/v2/developer-guide/node-registering-certs.html)。

有关使用查询数据的更多信息 Amazon IoT SiteWise，请参阅[从中查询数据 Amazon IoT SiteWise](query-industrial-data.md)。

# 将数据源添加到您的 Amazon IoT SiteWise Edge 网关
添加数据源

设置 Amazon IoT SiteWise Edge 网关后，您可以添加和配置数据源，以便从本地工业设备摄取数据。 Amazon IoT SiteWise SiteWise Edge 支持各种协议，包括 OPC UA 以及通过合作伙伴数据源提供的许多其他协议。这些来源使您的网关能够连接到本地服务器并检索您的工业数据。通过配置数据源，您可以从各种数据源提取数据，然后将数据流与资产属性相关联，从而在中 Amazon IoT SiteWise实现全面的工业资产建模和数据映射。

**Topics**
+ [

# Amazon IoT SiteWise 边缘网关的 OPC UA 数据源
](configure-sources-opcua.md)

# Amazon IoT SiteWise 边缘网关的 OPC UA 数据源
OPC UA 数据来源

设置 Amazon IoT SiteWise Edge 网关后，您可以配置数据源，以便您的 SiteWise Edge 网关可以将来自本地工业设备的数据摄取到 Amazon IoT SiteWise。每个源都代表一个本地服务器，例如 OPC UA 服务器，您的 SiteWise 边缘网关可以连接和检索工业数据流。有关设置 SiteWise Edge 网关的更多信息，请参阅[创建自托管 SiteWise Edge 网关](create-gateway-ggv2.md)。

网关类型（支持 MQTT）、V3 网关与经典流（V2 网关）会影响 OPC UA 数据的处理方式。在 Classic Stream 中，V2 网关、OPC UA 数据源直接添加到网关 IoT SiteWise 发布者配置中。每个数据源都与网关耦合，并且为每个源单独配置数据路由。相比之下，使用支持 MQTT 的 V3 网关，OPC UA 数据源会转换为 MQTT 主题，并通过集中式目的地进行管理。有关每种类型的更多信息，请参见[支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)和[经典直播，适用 Amazon IoT SiteWise 于 Edge 的 V2 网关](classic-streams-v2-gateway.md)。

**注意**  
Amazon IoT SiteWise 每次添加或编辑源时都会重新启动 SiteWise Edge 网关。您的 SiteWise Edge 网关在更新源配置时不会提取数据。重启 SiteWise Edge 网关的时间取决于 E SiteWise dge 网关源上的标签数量。重启时间可以从几秒钟（对于标签较少的 SiteWise Edge 网关）到几分钟（对于具有许多标签的 SiteWise Edge 网关）不等。

创建源后，您可以将数据流与资产属性关联。有关如何创建和使用资产的更多信息，请参阅[为工业资产建模](industrial-asset-models.md)。

您可以查看 CloudWatch 指标以验证数据源是否已连接 Amazon IoT SiteWise。有关更多信息，请参阅 [Amazon IoT Greengrass Version 2 网关指标](monitor-cloudwatch-metrics.md#gateway-metrics-ggv2)。

目前， Amazon IoT SiteWise 支持以下数据源协议：
+ [OPC UA](https://en.wikipedia.org/wiki/OPC_Unified_Architecture) — 一种用于工业自动化的通信协议 machine-to-machine（M2M）。

## Support 支持其他工业协议


SiteWise 通过与数据源合作伙伴的集成，Edge 支持各种工业协议。这些合作伙伴关系可实现与 200 多种不同协议的连接，适用于各种工业系统和设备。

# 在 Edge 中 SiteWise 设置 OPC UA 来源
设置 OPC UA 源

您可以使用 Amazon IoT SiteWise 控制台或 SiteWise Edge 网关功能来定义并向边缘网关添加 OPC UA 源，以表示本地 OPC UA 服务器。 SiteWise 

**Topics**
+ [

## 配置 OPC UA 源（控制台）
](#config-opcua-source-console)
+ [

## 配置 OPC UA 来源 ()Amazon CLI
](#configure-opc-ua-source-cli)

## 配置 OPC UA 源（控制台）


您可以使用控制台按照以下步骤配置 OPC UA 源。

**注意**  
警告：重复 TQVs 可能会导致双重充电。

**使用控制台配置 OPC UA 源 Amazon IoT SiteWise**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择边 SiteWise 缘网关以添加 OPC UA 源。

1. 选择**添加数据来源**。

1. 输入源名称。

1. 输入数据源服务器的 **本地终端节点**。端点可以是 IP 地址或主机名。您也可以向本地端点添加端口号。例如，您的本地端点可能类似于 **opc.tcp://203.0.113.0:49320**。

1. 启用 MQTT 的 V3 网关和经典直播 V2 网关之间的@@ **目的地**各不相同。
   + **Classic Steam、V2 网关目的地**与源有 1:1 的关系。每个源都将数据发送到特定的目的地。
   + **支持 MQTT 的 V3 网关目的地**是单独设置的，因为中心和分支模型允许您集中配置和管理跨不同网关的多个数据源。要在 V3 网关中设置目的地，请参阅[了解 Amazon IoT SiteWise 边缘目的地](gw-destinations.md#source-destination)。

------
#### [ Classic steams, V2 gateway destinations ]
   + **Amazon IoT SiteWise 实时**-选择此选项可将数据直接发送到 Amazon IoT SiteWise 存储器。在边缘实时摄取和监控数据。
   + **Amazon IoT SiteWise 使用 Amazon S3 进行缓冲** — 以 Parquet 格式将数据发送到 Amazon S3，然后导入 Amazon IoT SiteWise 存储。选择此选项可批量摄取数据，并以经济高效的方式存储历史数据。您可以配置您的首选 Amazon S3 存储桶位置，以及您希望将数据上传到 Amazon S3 的频率。您还可以选择在将数据摄取到 Amazon IoT SiteWise后如何处理数据。您可以选择同时在 Amazon S3 Amazon IoT SiteWise 和 Amazon S3 中提供数据，也可以选择在数据导入 Amazon S3 后自动将其从 Amazon S3 中删除 Amazon IoT SiteWise。
     + Amazon S3 存储桶是一种暂存和缓冲机制，支持 Parquet 格式的文件。
     + 如果您选中 “**将数据导入 Amazon IoT SiteWise 存储**” 复选框，则会先将数据上传到 Amazon S3，然后上传到 Amazon IoT SiteWise 存储中。
       + 如果您选中 “**从 Amazon S3 中删除数据**” 复选框，则在数据导入 SiteWise 存储后，数据将从 Amazon S3 中删除。
       + 如果您清除 “**从 Amazon S3 中删除数据**” 复选框，则数据将存储在 Amazon S3 和 SiteWise 存储中。
     + 如果您清除**将数据导入 Amazon IoT SiteWise 存储**复选框，则数据将仅存储在 Amazon S3 中，它不会导入到 SiteWise 存储中。

     有关 Amazon IoT SiteWise 提供的各种存储选项的详细信息，请访问[管理数据存储](manage-data-storage.md)。要了解有关定价选项的更多信息，请参阅 [Amazon IoT SiteWise 定价](https://www.amazonaws.cn/iot-sitewise/pricing/)。

      
   + **Amazon IoT Greengrass 流管理器** — 使用 Amazon IoT Greengrass 流管理器将数据发送到以下 Amazon 云端目标：传入的频道、Amazon Kinesis Data Streams 中的流 Amazon IoT Analytics、中的资产属性或亚马逊简单存储服务 (Amazon S3) Simple Storage Service Amazon IoT SiteWise中的对象。有关更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发者指南》*中的 [“在 Amazon IoT Greengrass Core 上管理数据流](https://docs.amazonaws.cn/greengrass/v2/developerguide/manage-data-streams.html)”。

     输入 Amazon IoT Greengrass 直播的名称。

------
#### [ MQTT-enabled, V3 gateway destinations ]

   1. [支持 MQTT 的边缘版 V3 网关 Amazon IoT SiteWise](mqtt-enabled-v3-gateway.md)有关添加相关目的地的信息，请参阅。

   1. 添加源目标后，返回此过程。

------

1. 在**高级配置**窗格中，您可以执行以下操作：

   1. 为源服务器和 SiteWise Edge 网关之间传输的连接和数据选择**消息安全模式**。此字段是 OPC UA 安全策略和消息安全模式的组合。选择与您为 OPC UA 服务器指定的相同的安全策略和消息安全模式。

   1. 如果您的来源需要身份验证，请从**身份验证配置**列表中选择一个 Amazon Secrets Manager 密钥。 SiteWise Edge 网关在连接到此数据源时使用此密钥中的身份验证凭据。您必须将密钥附加到 SiteWise Edge 网关的 Amazon IoT Greengrass 组件，才能将其用于数据源身份验证。有关更多信息，请参阅 [为 SiteWise Edge 配置数据源身份验证](configure-source-authentication-ggv2.md)。
**提示**  
您的数据服务器可能有一个名为 **允许匿名登录** 的选项。如果此选项为 **是**，则说明您的源不需要身份验证。

   1. （可选）您可以通过选择**激活数据流前缀 - *可选***来激活数据流前缀。

      1. （可选）输入**数据流前缀**。 SiteWise Edge 网关将此前缀添加到来自该源的所有数据流。使用数据流前缀，可以区分来自不同源的同名数据流。在您的账户中，每个数据流都应具有唯一的名称。

   1. （可选）选择**数据类型转换**选项，将不支持的 OPC UA 数据类型转换为字符串，然后再将其摄取到 Amazon IoT SiteWise中。将具有简单数据类型的数组值转换为 JSON 字符串，将 DateTime 数据类型转换为 ISO 8601 字符串。有关更多信息，请参阅 [转换不支持的数据类型](string-conversion.md)。

   1. 为不包含在用户定义的属性组中的节点选择**默认数据更改触发器**。默认的数据更改触发器决定 OPC UA 服务器何时向网关发送更新的值。您可以选择以下选项之一：
      + **状态**-仅在状态更改时接收数据。
      + **StatusValue**— 用于在状态或值发生变化时接收数据。
      + **StatusValueTimestamp**— 用于在状态、值或时间戳发生变化时接收数据。

   1. （可选）在支持 MQTT 的 V3 网关上，您可以使用**发现配置来配置** OPC UA 节点发现过程。Discovery 配置将这些选项的先前配置覆盖文件系统替换为基于控制台的设置，这些设置无需重新启动网关即可动态更新。
**注意**  
**默认数据更改触发器**需要 IoT SiteWise OPC UA 收集器组件的 3.1.0 或更高版本。有关更多信息，请参阅 [更新 Amazon IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。

      1. 对于**最大并发浏览请求数**，请输入您的 OPC UA 服务器可以同时处理的最大浏览请求数。每个数据源最多可以配置 500 个并发浏览请求。

      1. 对于**每次浏览请求的最大节点数**，请输入每次浏览请求中发送到 OPC UA 服务器的最大节点数。每个浏览请求最多可以发送 1,000 个节点。

      1. 选择 “**避免节点树循环**”，以防止网关在浏览 OPC UA 服务器的结构时陷入循环引用中。选中后，网关会跟踪访问过的位置，以避免服务器节点以圆形模式相互引用时可能出现的无限循环。

      1. 选择 “**启用节点遍历**”，允许网关浏览 OPC UA 服务器的完整结构，发现设备和设备中的所有可用数据点。选中后，网关将在根级别之外的设备数据组织中导航，以自动查找所有传感器、控件和测量点。

      1. 选择 “**启用定期发现**” 可定期自动运行发现操作，以检测 OPC UA 服务器结构的变化。选中后，网关会持续监控新添加的设备或数据点，确保它们被自动检测并可供数据收集。

         1. 对于**定期发现间隔**，请设置运行定期发现时自动发现操作之间的时间间隔。最小周期性发现间隔为 30 秒，最长为 30 天。

         1. 对于**每间隔发现的最大节点**数，请设置每个发现间隔应发现的最大节点数。这有助于控制发现操作期间网关和 OPC UA 服务器的负载。

   1. （可选）对于**属性组**，选择**添加新组**。

      1. 为属性组输入**名称**。

      1. 对于**属性**：

         1. 对于**节点路径**，添加 OPC UA 节点筛选条件以限制上传到 Amazon IoT SiteWise的 OPC UA 路径。其格式类似于**要选择的节点 ID**。

      1. 对于 **组设置**，请执行以下操作：

         1. 在**数据质量设置**中，选择您希望 C Amazon IoT SiteWise ollector 采集的数据质量类型。

         1. 对于**扫描模式设置**，请使用**扫描模式**配置标准订阅属性。您可以选择**订阅**或**轮询**。有关扫描模式的更多信息，请参阅 [使用 OPC UA 筛选数据摄取范围](opcua-data-acquisition.md)。

------
#### [ Subscribe ]

**要发送每个数据点，请执行以下步骤：**

            1. 选择**订阅**并设置以下内容：

               1. **[数据更改触发器](https://reference.opcfoundation.org/v104/Core/docs/Part4/7.17.2/)** — 启动数据变更警报的条件。

               1. **[订阅队列大小](https://reference.opcfoundation.org/v104/Core/docs/Part4/7.16/)**-OPC UA 服务器上特定指标的队列深度，其中监控项目的通知已排队。

               1. **[订阅发布间隔](https://reference.opcfoundation.org/v104/Core/docs/Part4/5.13.2/)** — 创建订阅时指定的发布周期间隔（以毫秒为单位）。

               1. **快照间隔-*可选*-** 用于确保 Amazon IoT SiteWise Edge 摄取稳定的数据流的快照频率超时设置。

               1. **扫描速率** — 您希望 SiteWise Edge 网关读取寄存器的速率。 Amazon IoT SiteWise 自动计算您的 SiteWise Edge 网关允许的最低扫描速率。

               1. **时间戳** — 要包含在 OPC UA 数据点中的时间戳。您可以使用服务器时间戳或设备的时间戳。
**注意**  
使用 2.5.0 或更高版本的 IoT SiteWise OPC UA 收集器组件。如果您在早期版本中使用时间戳功能，则配置更新会失败。有关更多信息，请参阅 [更新 Amazon IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。

            1. 在**死区设置**中，配置**死区类型**。死区类型控制您的源发送给您的 Amazon IoT SiteWise数据以及它丢弃了哪些数据。有关死区设置的更多信息，请参阅 [使用 OPC UA 筛选数据摄取范围](opcua-data-acquisition.md)。
               + **无** — 关联的服务器发送此属性组的所有数据点。
               + **百分比** — 关联的服务器仅发送超出数据范围指定百分比的数据。该范围由服务器根据为每个节点定义的最小和最大工程单位计算得出。如果服务器不支持百分比死区或缺少定义的工程单元，则网关将使用下面提供的最小值和最大值来计算范围。
               + **绝对** — 关联的服务器仅发送超出特定范围的数据。

               1. 将**死区值**设置为数据范围与死区的百分比。

               1. （可选）使用**最小范围 - *可选***和**最大范围 - *可选***，为死区范围指定最小值和最大值。

------
#### [ Poll ]

**要按特定间隔发送数据点，请执行以下步骤：**
            + 选择**轮询**并设置以下内容：

              1. **扫描速率** — 您希望 SiteWise Edge 网关读取寄存器的速率。 Amazon IoT SiteWise 自动计算您的 SiteWise Edge 网关允许的最低扫描速率。

              1. **时间戳** — 要包含在 OPC UA 数据点中的时间戳。您可以使用服务器时间戳或设备的时间戳。
**注意**  
使用 IoT SiteWise OPC UA 收集器组件的 3.1.0 或更高版本。如果您在早期版本中使用时间戳功能，则配置更新会失败。有关更多信息，请参阅 [更新 Amazon IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。

**注意**  
当您在**扫描模式设置**中选择**订阅**时，**死区设置**适用。

------

1. 选择**保存**。

## 配置 OPC UA 来源 ()Amazon CLI
配置 OPC UA 源（CLI）

您可以使用为 SiteWise Edge 网关定义 OPC UA 数据源。 Amazon CLI为此，请创建一个 OPC UA 功能配置 JSON 文件，然后使用[ update-gateway-capability-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotsitewise/update-gateway-capability-configuration.html#)命令更新 SiteWise Edge 网关配置。您必须在单个功能配置中定义所有 OPC UA 源。

------
#### [ MQTT-enabled, V3 gateway ]

此功能具有以下命名空间。
+ `iotsitewise:opcuacollector:3`

```
{
  "sources": [
    {
      "name": "string",
      "endpoint": {
        "certificateTrust": {
          "type": "TrustAny" | "X509",
          "certificateBody": "string",
          "certificateChain": "string",
        },
        "endpointUri": "string",
        "securityPolicy": "NONE" | "BASIC128_RSA15" | "BASIC256" | "BASIC256_SHA256" | "AES128_SHA256_RSAOAEP" | "AES256_SHA256_RSAPSS",
        "messageSecurityMode": "NONE" | "SIGN" | "SIGN_AND_ENCRYPT",
        "identityProvider": {
          "type": "Anonymous" | "Username",
          "usernameSecretArn": "string"
        },
        "nodeFilterRules": [
          {
            "action": "INCLUDE",
            "definition": {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          }
        ]
      },
      "measurementDataStreamPrefix": "string",
      "typeConversions": {
        "array": "JsonArray",
        "datetime": "ISO8601String"
        },
      "destination": {
        {
          "type":"MQTT"
        }           
      },
      "defaultPropertyGroupConfig": {
        "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP"
      },
      "discoveryConfig": {
        "enableNodeTraversal": true | false,
        "avoidNodeTreeLoops": true | false,
        "maxConcurrentBrowseRequests": integer,
        "maxNodesPerBrowseRequest": integer,
        "periodicDiscovery": {
          "interval": "string",
          "maxNodesDiscoveredPerInterval": integer
        }
      },
      "propertyGroups": [
        {
          "name": "string",
          "nodeFilterRuleDefinitions": [
            {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          ],
          "deadband": {
            "type": "PERCENT" | "ABSOLUTE",
            "value": double,
            "eguMin": double,
            "eguMax": double,
            "timeoutMilliseconds": integer
          },
          "scanMode": {
            "type": "EXCEPTION" | "POLL",
            "rate": integer,
            "timestampToReturn": "SOURCE_TIME" | "SERVER_TIME"
          },
          "dataQuality": {
            "allowGoodQuality": true | false,
            "allowBadQuality": true | false,
            "allowUncertainQuality": true | false
          },
          "subscription": {
            "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP",
            "queueSize": integer,
            "publishingIntervalMilliseconds": integer,
            "snapshotFrequencyMilliseconds": integer
          }  
        }  
      ]  
    }  
  ]  
}
```

------
#### [ Classic streams, V2 gateway ]

此功能具有以下命名空间。
+ `iotsitewise:opcuacollector:2`

请求语法

```
{
  "sources": [
    {
      "name": "string",
      "endpoint": {
        "certificateTrust": {
          "type": "TrustAny" | "X509",
          "certificateBody": "string",
          "certificateChain": "string",
        },
        "endpointUri": "string",
        "securityPolicy": "NONE" | "BASIC128_RSA15" | "BASIC256" | "BASIC256_SHA256" | "AES128_SHA256_RSAOAEP" | "AES256_SHA256_RSAPSS",
        "messageSecurityMode": "NONE" | "SIGN" | "SIGN_AND_ENCRYPT",
        "identityProvider": {
          "type": "Anonymous" | "Username",
          "usernameSecretArn": "string"
        },
        "nodeFilterRules": [
          {
            "action": "INCLUDE",
            "definition": {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          }
        ]
      },
      "measurementDataStreamPrefix": "string",
      "typeConversions": {
        "array": "JsonArray",
        "datetime": "ISO8601String"
        },
      "destination": {
        "type": "StreamManager",
        "streamName": "string",
        "streamBufferSize": integer,                      
      },
      "propertyGroups": [
        {
          "name": "string",
          "nodeFilterRuleDefinitions": [
            {
              "type": "OpcUaRootPath",
              "rootPath": "string"
            }
          ],
          "deadband": {
            "type": "PERCENT" | "ABSOLUTE",
            "value": double,
            "eguMin": double,
            "eguMax": double,
            "timeoutMilliseconds": integer
          },
          "scanMode": {
            "type": "EXCEPTION" | "POLL",
            "rate": integer,
            "timestampToReturn": "SOURCE_TIME" | "SERVER_TIME"
          },
          "dataQuality": {
            "allowGoodQuality": true | false,
            "allowBadQuality": true | false,
            "allowUncertainQuality": true | false
          },
          "subscription": {
            "dataChangeTrigger": "STATUS" | "STATUS_VALUE" | "STATUS_VALUE_TIMESTAMP",
            "queueSize": integer,
            "publishingIntervalMilliseconds": integer,
            "snapshotFrequencyMilliseconds": integer
          }  
        }  
      ]  
    }  
  ]  
}
```

------

### 请求正文


`sources`  
OPC UA 源定义结构的列表，每个结构均包含以下信息：    
`name`  
源的唯一友好名称。  
`endpoint`  
一个包含以下信息的终端节点结构：    
`certificateTrust`  
一个包含以下信息的证书信任策略结构：    
`type`  
源的证书信任模式。选择下列选项之一：  
+ `TrustAny`— 边 SiteWise 缘网关在连接到 OPC UA 源时信任任何证书。
+ `X509`— 边 SiteWise 缘网关在连接到 OPC UA 源时信任 X.509 证书。如果选择此选项，则必须在 `certificateTrust` 中定义 `certificateBody`。也可以在 `certificateTrust` 中定义 `certificateChain`。  
`certificateBody`  
（可选）X.509 证书的正文。  
如果您在 `certificateTrust` 中为 `type` 选择 `X509`，则此字段为必填字段。  
`certificateChain`  
（可选）X.509 证书的信任链。  
仅当您在 `certificateTrust` 中为 `type` 选择 `X509` 时使用此字段。  
`endpointUri`  
OPC UA 源的本地端点。例如，您的本地终端节点可能类似于 `opc.tcp://203.0.113.0:49320`。  
`securityPolicy`  
要使用的安全策略，可保护从 OPC UA 源读取的消息。选择下列选项之一：  
+ `NONE`— 边 SiteWise 缘网关不保护来自 OPC UA 来源的消息。建议您选择不同的安全策略。如果选择此选项，则还必须为 `messageSecurityMode` 选择 `NONE`。
+ `BASIC256_SHA256` — `Basic256Sha256` 安全政策。
+ `AES128_SHA256_RSAOAEP` — `Aes128_Sha256_RsaOaep` 安全政策。
+ `AES256_SHA256_RSAPSS` — `Aes256_Sha256_RsaPss` 安全政策。
+ `BASIC128_RSA15` —（已弃用）OPC UA 规范中已弃用 `Basic128Rsa15` 安全策略，因为它被视为不再安全。建议您选择不同的安全策略。有关更多信息，请参阅[配置文件 SecurityPolicy — Basic](https://profiles.opcfoundation.org/profile/1532) 128Rsa15。
+ `BASIC256` —（已弃用）OPC UA 规范中已弃用 `Basic256` 安全策略，因为它被视为不再安全。建议您选择不同的安全策略。有关更多信息，请参阅 [SecurityPolicy — Basic256](https://profiles.opcfoundation.org/profile/1536)。
如果您选择除 `NONE` 外的其他安全策略，则 `messageSecurityMode` 必须选择 `SIGN` 或 `SIGN_AND_ENCRYPT`。您还必须将源服务器配置为信任 SiteWise Edge 网关。有关更多信息，请参阅 [设置 OPC UA 服务器以信任边 Amazon IoT SiteWise 缘网关](enable-source-trust.md)。  
`messageSecurityMode`  
用于保护与 OPC UA 源的连接的消息安全模式。选择下列选项之一：  
+ `NONE`— 边 SiteWise 缘网关无法保护与 OPC UA 源的连接。建议您选择不同的消息安全模式。如果选择此选项，则还必须为 `securityPolicy` 选择 `NONE`。
+ `SIGN`— 在 SiteWise Edge 网关和 OPC UA 源之间传输的数据已签名，但未加密。
+ `SIGN_AND_ENCRYPT` — 对网关和 OPC UA 源之间的传输中数据进行签名和加密。
如果您选择除 `NONE` 外的消息安全模式，则必须选择除 `NONE` 外的 `securityPolicy`。您还必须将源服务器配置为信任 SiteWise Edge 网关。有关更多信息，请参阅 [设置 OPC UA 服务器以信任边 Amazon IoT SiteWise 缘网关](enable-source-trust.md)。  
`identityProvider`  
一个包含以下信息的身份提供程序结构：    
`type`  
源所需的身份验证凭证的类型。选择下列选项之一：  
+ `Anonymous` — 源不需要身份验证即可连接。
+ `Username` — 源需要用户名和密码才能连接。如果选择此选项，则必须在 `identityProvider` 中定义 `usernameSecretArn`。  
`usernameSecretArn`  
（可选）密钥的 ARN。 Amazon Secrets Manager SiteWise Edge 网关在连接到此源时使用此密钥中的身份验证凭证。您必须将密钥附加到 SiteWise Edge 网关的 IoT SiteWise 连接器，才能将其用于源身份验证。有关更多信息，请参阅 [为 SiteWise Edge 配置数据源身份验证](configure-source-authentication-ggv2.md)。  
如果您在 `identityProvider` 中为 `type` 选择 `Username`，则此字段为必填字段。  
`nodeFilterRules`  
此列表中的每个结构都必须包含以下信息：    
`action`  
此节点筛选器规则的操作。可以选择以下选项：  
+ `INCLUDE`— SiteWise Edge 网关仅包含符合此规则的数据流。  
`definition`  
一个包含以下信息的节点筛选器规则结构：    
`type`  
此规则的节点筛选器路径的类型。可以选择以下选项：  
+ `OpcUaRootPath`— SiteWise Edge 网关根据 OPC UA 路径层次结构的根目录评估此节点筛选路径。  
`rootPath`  
根据 OPC UA 路径层次结构的根进行评估的节点筛选条件路径。此路径必须以 `/` 开头。  
`measurementDataStreamPrefix`  
要在源中所有数据流的前面加上的字符串。 SiteWise Edge 网关将此前缀添加到来自该源的所有数据流。使用数据流前缀，可以区分来自不同源的同名数据流。在您的账户中，每个数据流都应具有唯一的名称。  
`typeConversions`  
不支持的 OPC UA 数据类型可用的转换类型。每种数据类型都转换为字符串。有关更多信息，请参阅 [转换不支持的数据类型](string-conversion.md)。    
`array`  
转换为字符串的简单数组数据类型。可以选择以下选项：  
+ `JsonArray` — 表示您选择将简单数组数据类型转换为字符串。  
`datetime`  
转换为字符串 DateTime 的数据类型。可以选择以下选项：  
+ `ISO8601String` — 表示您选择将 ISO 8601 数据类型转换为字符串。  
`destination`  
OPC UA 标签目标的配置。支持 v2 和 MQTT 的 Classic Stream、V3 网关对目的地的配置不同。    
`type`  
目标的类型。  
`streamName`— *仅适用于经典直播、V2 网关*  
流的名称。流名称应该唯一。  
`streamBufferSize`— *仅适用于经典直播、V2 网关*  
流的缓冲区大小。这对于管理来自 OPC UA 源的数据流非常重要。  
`defaultPropertyGroupConfig`— *支持 MQTT，仅*限 V3 网关  
（可选）默认属性组的配置。默认属性组包含所有未包含在用户定义的属性组中的节点。    
`dataChangeTrigger`  
要在默认属性组中使用的默认数据更改触发器。有效值为 `STATUS_VALUE_TIMESTAMP`、`STATUS_VALUE` 或 `STATUS`。
`defaultPropertyGroupConfig`需要物联网 SiteWise OPC UA 收集器组件的 3.1.0 或更高版本。有关更多信息，请参阅 [更新 Amazon IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。  
`discoveryConfig`— *支持 MQTT，仅*限 V3 网关  
（可选）OPC UA 节点发现过程的配置。    
`enableNodeTraversal`  
指定是否继续遍历由数据源的节点筛选器定义的根节点的子节点。设置为时`false`，发现将在根节点停止。  
`avoidNodeTreeLoops`  
指定是否在 OPC UA 节点浏览过程中避免无限循环。设置为时`true`，网关会跟踪访问过的节点以防止循环引用。  
`maxConcurrentBrowseRequests`  
您的 OPC UA 服务器可以同时处理的最大并发浏览请求数。有效范围为 1 到 500。  
`maxNodesPerBrowseRequest`  
每次浏览请求中向 OPC UA 服务器发送的最大节点数。有效范围为 1 到 1,000。  
`periodicDiscovery`  
以固定间隔定期运行发现的配置。提供此配置后，将启用定期发现。    
`interval`  
定期发现操作之间的时间间隔。你可以使用几`m`分钟、`h`几小时和几`d`天。例如，`90m` 或 `1h`。最小间隔为 30 秒。  
`maxNodesDiscoveredPerInterval`  
每个发现间隔应发现的最大节点数。这有助于控制网关和 OPC UA 服务器上的负载。
`periodicDiscovery`需要物联网 SiteWise OPC UA 收集器组件的 3.1.0 或更高版本。有关更多信息，请参阅 [更新 Amazon IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。
如果发现无限循环，请启用`avoidNodeTreeLoops`。在`aws.iot.SiteWiseOpcUaCollector`组件下的 CloudWatch 日志中监控发现进度。

`propertyGroups`  
（可选）定义协议要求的 `deadband` 和 `scanMode` 的属性组列表。    
`name`  
属性组的名称。这应该是一个唯一的标识符。  
`deadband`  
`deadband` 值定义了在将数据发送到云端之前数据点的值必须发生的最小变化。它包含以下信息：    
`type`  
支持的死区类型。可以选择以下选项：  
+ `ABSOLUTE` — 一个固定值，它指定了将数据点视为足够重要以发送到云端所需的最小绝对变化。
+ `PERCENT` — 一个动态值，它以占上次发送的数据点值的百分比形式指定所需的最小变化。当数据值随时间变化显著时，这种类型的死区非常有用。  
`value`  
死区值。如果 `type` 是 `ABSOLUTE`，则此值为无单位的双精度。如果 `type` 是 `PERCENT`，则此值是 `1` 和 `100` 之间的双精度。  
`eguMin`  
（可选）使用 `PERCENT` 死区时的工程单位最小值。如果 OPC UA 服务器未配置工程单元，则可以设置此项。  
`eguMax`  
（可选）使用 `PERCENT` 死区时的工程单位最大值。如果 OPC UA 服务器未配置工程单元，则可以设置此项。  
`timeoutMilliseconds`  
超时前的持续时间，以毫秒为单位。最少为 `100`。  
`scanMode`  
`scanMode` 结构包含以下信息：    
`type`  
支持的 `scanMode` 类型。接受的值为：`POLL` 和 `EXCEPTION`。  
`rate`  
扫描模式的采样间隔。  
`timestampToReturn`  
时间戳的来源。可以选择以下选项：  
+ `SOURCE_TIME` — 使用设备上的时间戳。
+ `SERVER_TIME` — 使用服务器上的时间戳。
`TimestampToReturn`与 2.5.0 或更高版本的 IoT SiteWise OPC UA 收集器组件一起使用。如果您在早期版本中使用此功能，则配置更新会失败。有关更多信息，请参阅 [更新 Amazon IoT SiteWise 组件的版本](manage-gateways-ggv2.md#update-component-version)。  
`nodeFilterRuleDefinitions`  
（可选）包含在属性组中的节点路径列表。属性组不能重叠。如果您不为此字段指定值，则该组包含根目录下的所有路径，且您无法创建其他属性组。`nodeFilterRuleDefinitions` 结构包含以下信息：    
`type`  
`OpcUaRootPath` 是唯一支持的类型。这指定 `rootPath` 值是相对于 OPC UA 浏览空间根目录的路径。  
`rootPath`  
以逗号分隔的列表，用于指定要包含在属性组中的路径（相对于根路径）。

### 经典流、V2 网关的其他功能配置示例 ()Amazon CLI
示例

以下示例根据存储在 JSON 文件中的有效负载定义了 OPC UA SiteWise Edge 网关功能配置。

```
aws iotsitewise update-gateway-capability-configuration \
--capability-namespace "iotsitewise:opcuacollector:2" \
--capability-configuration file://opc-ua-configuration.json
```

**Example ：OPC UA 源配置**  
以下 `opc-ua-configuration.json` 文件定义了基本的、不安全的 OPC UA 源配置。  

```
{
    "sources": [
        {
            "name": "Wind Farm #1",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://203.0.113.0:49320",
                "securityPolicy": "NONE",
                "messageSecurityMode": "NONE",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": []
            },
            "measurementDataStreamPrefix": ""
        }
    ]
}
```

**Example ：带有已定义属性组的 OPC UA 源配置**  
以下 `opc-ua-configuration.json` 文件定义了一个基本的、不安全的 OPC UA 源配置，其中包含已定义的属性组。  

```
{
    "sources": [
        {
            "name": "source1",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://10.0.0.9:49320",
                "securityPolicy": "NONE",
                "messageSecurityMode": "NONE",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": [
                    {
                        "action": "INCLUDE",
                        "definition": {
                            "type": "OpcUaRootPath",
                            "rootPath": "/Utilities/Tank"
                        }
                    }
                ]
            },
            "measurementDataStreamPrefix": "propertyGroups",
            "propertyGroups": [
                 {
                     "name": "Deadband_Abs_5",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Temperature/TT-001"
                         },
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Temperature/TT-002"
                         }
                     ],
                     "deadband": {
                         "type":"ABSOLUTE",
                         "value": 5.0,
                         "timeoutMilliseconds": 120000
                     }
                 },
                 {
                     "name": "Polling_10s",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Pressure/PT-001"
                         }
                     ],
                     "scanMode": {
                         "type": "POLL",
                         "rate": 10000
                     }
                 },
                 {
                     "name": "Percent_Deadband_Timeout_90s",
                     "nodeFilterRuleDefinitions": [
                         {
                             "type": "OpcUaRootPath",
                             "rootPath": "/Utilities/Tank/Flow/FT-*"
                         }
                     ],
                     "deadband": {
                         "type":"PERCENT",
                         "value": 5.0,
                         "eguMin": -100,
                         "eguMax": 100,
                         "timeoutMilliseconds": 90000
                     }
                 }
             ]
        }
    ]
}
```

**Example ：带属性的 OPC UA 源配置**  
针对 `opc-ua-configuration.json` 的以下 JSON 示例定义了具有以下属性的 OPC UA 源配置：  
+ 信任任何证书。
+ 使用 `BASIC256` 安全策略保护消息。
+ 使用 `SIGN_AND_ENCRYPT` 模式保护连接。
+ 使用存储在 Secrets Manager 密钥中的身份验证凭证。
+ 筛选出数据流（路径以 `/WindFarm/2/WindTurbine/` 开头的数据流除外）。
+ 在每个数据流路径的开头添加 `/Washington` 以将此“Wind Farm \$12”与另一个区域中的“Wind Farm \$12”区分开来。

```
{
    "sources": [
        {
            "name": "Wind Farm #2",
            "endpoint": {
                "certificateTrust": {
                    "type": "TrustAny"
                },
                "endpointUri": "opc.tcp://203.0.113.1:49320",
                "securityPolicy": "BASIC256",
                "messageSecurityMode": "SIGN_AND_ENCRYPT",
                "identityProvider": {
                    "type": "Username",
                    "usernameSecretArn": "arn:aws:secretsmanager:region:123456789012:secret:greengrass-windfarm2-auth-1ABCDE"
                },
                "nodeFilterRules": [
                  {
                      "action": "INCLUDE",
                      "definition": {
                          "type": "OpcUaRootPath",
                          "rootPath": "/WindFarm/2/WindTurbine/"
                    }
                  }
                ]
            },
            "measurementDataStreamPrefix": "/Washington"
        }
    ]
}
```

**Example ：具有证书信任的 OPC UA 源配置**  
针对 `opc-ua-configuration.json` 的以下 JSON 示例定义了具有以下属性的 OPC UA 源配置：  
+ 信任给定的 X.509 证书。
+ 使用 `BASIC256` 安全策略保护消息。
+ 使用 `SIGN_AND_ENCRYPT` 模式保护连接。

```
{
    "sources": [
        {
            "name": "Wind Farm #3",
            "endpoint": {
                "certificateTrust": {
                    "type": "X509",
                    "certificateBody": "-----BEGIN CERTIFICATE-----
          MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
 WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
 EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
 MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
 WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
 HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
 BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
 k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
 ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
 AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
 KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
 EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
 3rrszlaEXAMPLE=
          -----END CERTIFICATE-----",
                    "certificateChain": "-----BEGIN CERTIFICATE-----
          MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w
 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ
 WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw
 EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5
 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh
 MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb
 WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx
 HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE
 BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI
 k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ
 ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr
 AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN
 KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo
 EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw
 3rrszlaEXAMPLE=
          -----END CERTIFICATE-----"
                },
                "endpointUri": "opc.tcp://203.0.113.2:49320",
                "securityPolicy": "BASIC256",
                "messageSecurityMode": "SIGN_AND_ENCRYPT",
                "identityProvider": {
                    "type": "Anonymous"
                },
                "nodeFilterRules": []
              },
            "measurementDataStreamPrefix": ""
              
        }
    ]
}
```

# 设置 OPC UA 服务器以信任边 Amazon IoT SiteWise 缘网关
将 OPC UA 服务器设置为信任网关

如果在配置 OPC UA 源时选择 “**无**” 以`messageSecurityMode`外的选项，则必须使源服务器能够信任 Amazon IoT SiteWise Edge 网关。E SiteWise dge 网关会生成您的源服务器可能需要的证书。过程因源服务器而异。有关更多信息，请参阅您的服务器的文档。

以下过程概述了基本步骤。

**使 OPC UA 服务器能够信任 SiteWise Edge 网关**

1. 打开用于配置 OPC UA 服务器的界面。

1. 输入 OPC UA 服务器管理员的用户名和密码。

1. 在界面中找到**可信客户端**，然后选择**Amazon IoT SiteWise 网关客户端**。

1. 选择 **信任**。

## 导出 OPC UA 客户端证书


某些 OPC UA 服务器需要访问 OPC UA 客户端证书文件才能信任 SiteWise Edge 网关。如果这适用于您的 OPC UA 服务器，则可以使用以下步骤从 SiteWise Edge 网关导出 OPC UA 客户端证书。然后，可以在您的 OPC UA 服务器上导入证书。

**要导出某个来源的 OPC UA 客户端证书文件，请执行以下步骤：**

1. 运行以下命令来更改为包含证书文件的目录。*sitewise-work*替换为 *aws.iot.SiteWiseEdgeCollectorOpcua* Greengrass 工作文件夹的本地存储路径，并*source-name*替换为数据源的名称。

   默认情况下，Greengrass 工作文件夹*/greengrass/v2/work/aws.iot.SiteWiseEdgeCollectorOpcua*在 Linux 及以上版本上。*C:/greengrass/v2/work/aws.iot.SiteWiseEdgeCollectorOpcua* Microsoft Windows

   ```
   cd /sitewise-work/source-name/opcua-certificate-store
   ```

1. 该来源的 SiteWise Edge 网关的 OPC UA 客户端证书位于`aws-iot-opcua-client.pfx`文件中。

   运行以下命令来将证书导出到名为 `aws-iot-opcua-client-certificate.pem` 的 `.pem` 文件。

   ```
   keytool -exportcert -v -alias aws-iot-opcua-client -keystore aws-iot-opcua-client.pfx -storepass amazon -storetype PKCS12 -rfc > aws-iot-opcua-client-certificate.pem
   ```

1. 将证书文件从 SiteWise Edge 网关传输到 OPC UA 服务器。`aws-iot-opcua-client-certificate.pem`

   为此，您可以使用常用软件（如 `scp` 程序）来通过 SSH 协议传输文件。有关更多信息，请参阅 *Wikipedia* 上的 [Secure copy](https://en.wikipedia.org/wiki/Secure_copy)。
**注意**  
如果您的 SiteWise Edge 网关在亚马逊弹性计算云 (Amazon EC2) 上运行，并且您是首次连接到该网关，则必须配置连接的先决条件。有关更多信息，请参阅《Amazon EC2 用户指南》中的[使用 SSH 连接到 Linux 实例](https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/connect-to-linux-instance.html)**。

1. 在 OPC UA 服务器上导入证书文件以信任 SiteWise Edge 网关。`aws-iot-opcua-client-certificate.pem`步骤因所使用的源服务器而异。请参阅服务器的文档。

# 使用 OPC UA 筛选数据摄取范围
筛选数据摄取范围

您可以使用扫描模式和死区范围来控制通过 OPC UA 源摄取数据的方式。这些功能使您可以控制要采集的数据类型，以及服务器和 Edg SiteWise e 网关交换这些信息的方式和时间。

## 根据质量收集或筛选数据


您可以配置数据质量设置，以控制从 OPC UA 源收集哪些数据。数据来源会在发送数据时将质量评级作为元数据包括在内。您可以选择下列选项之一或下列全部选项：
+ `Good`
+ `Bad`
+ `Uncertain`

### 处理 NaN 或空值


SiteWise Edge 支持对 NaN 和空值的收集和处理。
+ *NaN（不是数字）：*表示未定义或无法表示的数值结果。
+ *空：*表示缺少数据。

物联网 SiteWise OPC UA 收集器捕获质量差或不确定的 NaN 和空值。这些特殊值会写入本地流，从而实现更全面的数据收集。

## 使用扫描模式控制数据收集频率
使用扫描模式控制数据收集频率

您可以配置 OPC UA 扫描模式来控制从 OPC UA 源收集数据的方式。您可以选择订阅或轮询模式。
+ 订阅模式 — OPC UA 源收集数据，按照您的扫描速率定义的频率发送到您的 SiteWise Edge 网关。服务器仅在值发生变化时才发送数据，因此这是您的 SiteWise Edge 网关接收数据的最大频率。
+ 轮询模式 — 您的 SiteWise Edge 网关以您的扫描速率定义的设定频率轮询 OPC UA 源。无论值是否发生变化，服务器都会发送数据，因此您的 SiteWise Edge 网关始终以此间隔接收数据。
**注意**  
轮询模式选项会覆盖此源的死区设置。

## 使用死区范围筛选 OPC UA 数据摄取
使用死区范围筛选 OPC UA 数据摄取

**注意**  
 您的服务器会删除死区指定的窗口内的所有数据。您无法恢复此丢弃的数据。

### 死区类型


 您可以为 OPC UA 服务器属性组指定两种类型的死区。它们允许您选择将发送到 Amazon 云的数据，以及丢弃的数据。
+ 百分比 — 使用测量值中预期波动的百分比来指定窗口。服务器根据此百分比计算出确切的窗口，并将超出窗口范围的数据发送到 Amazon 云端。例如，在传感器上指定 2% 的死区值，范围从 -100 华氏度到 \$1100 华氏度，会告诉服务器在值变化 4 华氏度或更高时将数据发送到 Amazon 云端。
**注意**  
 如果您的源服务器未定义工程单位，则可以选择为此窗口指定最小和最大死区值。如果未提供工程单位范围，OPC UA 服务器将默认为测量值数据类型的完整范围。
+ 绝对 — 使用精确单位指定窗口。例如，在传感器上将死区值指定为 2，告诉服务器在数据值变化至少 2 个单位时将数据发送到 Amazon 云端。在正常操作期间经常会出现波动的动态环境中，您可以使用绝对死区。

### 死区超时


 您可以选择配置死区超时设置。在此超时之后，即使当前测量值处于预期的死区波动范围内，OPC UA 服务器也将发送当前测量值。您可以使用超时设置来确保 Amazon IoT SiteWise 始终采集稳定的数据流，即使值不超过定义的死区窗口也是如此。

# 在 SiteWise Edge 中使用 OPC UA 节点过滤器
使用 OPC UA 节点筛选条件

在为 SiteWise Edge 网关定义 OPC UA 数据源时，可以定义节点筛选器。节点过滤器允许您限制 SiteWise Edge 网关发送到云的数据流路径。您可以使用节点筛选器通过仅包含您建模的数据的路径来减少 SiteWise Edge 网关的启动时间和 CPU 使用率 Amazon IoT SiteWise。默认情况下， SiteWise 边缘网关会上传除以开头的路径之外的所有 OPC UA 路径。`/Server/`您可以使用在节点筛选条件中使用 `*` 和 `**` 通配符来包含多个数据流路径和一个筛选条件。要了解如何为 SiteWise Edge 网关设置 OPC UA 来源，请参阅[Amazon IoT SiteWise 边缘网关的 OPC UA 数据源](configure-sources-opcua.md)。

**注意**  
Amazon IoT SiteWise 每次添加或编辑源时都会重新启动 SiteWise Edge 网关。您的 SiteWise Edge 网关在更新源配置时不会提取数据。重启 SiteWise Edge 网关的时间取决于 E SiteWise dge 网关源上的标签数量。重启时间可以从几秒钟（对于标签较少的 SiteWise Edge 网关）到几分钟（对于具有许多标签的 SiteWise Edge 网关）不等。

下表列出了可用于筛选 OPC UA 数据来源的通配符。


**OPC UA 节点筛选条件通配符**  

| 通配符 | 说明 | 
| --- | --- | 
| \$1 | 匹配数据流路径中的单个级别。 | 
| \$1\$1 | 匹配数据流路径中的多个级别。 | 

**注意**  
如果您为源配置了宽筛选器，然后将源更改为使用更严格的筛选器，则 Amazon IoT SiteWise 会停止存储与新筛选器不匹配的数据。

**Example : 使用节点过滤器的场景**  
考虑以下各项假定数据流：  
+ `/WA/Factory 1/Line 1/PLC1`
+ `/WA/Factory 1/Line 1/PLC2`
+ `/WA/Factory 1/Line 2/Counter1`
+ `/WA/Factory 1/Line 2/PLC1`
+ `/OR/Factory 1/Line 1/PLC1`
+ `/OR/Factory 1/Line 2/Counter2`
使用前面的数据流，您可以定义节点筛选条件，限制 OPC UA 源中要包含的数据。  
+ 要选择此示例中的所有节点，请使用 `/` 或 `/**/`。您可以使用 `**` 通配符包含多个目录或文件夹。
+ 要选择所有 `PLC` 数据流，请使用 `/*/*/*/PLC*` 或 `/**/PLC*`。
+ 要选择此示例中的所有计数器，请使用 `/**/Counter*` 或 `/*/*/*/Counter*`。
+ 要选择 `Line 2` 中的所有计数器，请使用 `/**/Line 2/Counter*`。

# 转换不支持的数据类型


（可选） Amazon IoT SiteWise 为简单数组和 DateTime 数据类型启用数据类型转换。 Amazon IoT SiteWise 不支持所有 OPC UA 数据类型。当您将不支持的数据发送到 Amazon IoT Greengrass 数据流时，该数据就会丢失。但是，通过将不支持的本机数据类型转换为字符串，您可以将数据摄取到 Amazon IoT SiteWise 而不是丢弃它。 Amazon IoT SiteWise 序列化转换后的数据，以便以后可以根据需要使用自己的函数将字符串转换为下游的原始数据类型。

您可以随时更新数据来源的数据类型转换设置，并且每个数据来源都可以具有自己的设置。

在中添加数据源时 Amazon IoT SiteWise 控制台，“**高级配置**” 中的 “**数据类型转换**” 下有两个复选框。您可以指明要将哪些数据类型转换为字符串。

此外，物联网 SiteWise OPC UA 收集器可以在边缘接受 NaN 或空值。
+ 将具有简单数据类型的数组值转换为 JSON 字符串
+ 将 DateTime 值转换为 ISO 8601 字符串

## 先决条件

+ 使用 2.5.0 或更高版本的 [IoT SiteWise OPC UA 收集器](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)。

## 限制


这些是 Amazon IoT SiteWise中对 OPC UA 数据类型转换为字符串的限制。
+ 不支持复杂数据类型转换。
+ 转换后的字符串限制为 1024 字节。如果字符串长度超过 1024 字节，则该字符串将被拒绝 Amazon IoT SiteWise。

# 为 SiteWise Edge 配置数据源身份验证
配置数据源身份验证

如果您的 OPC UA 服务器需要身份验证凭据才能连接，则可以使用创建密钥并将其部署 Amazon Secrets Manager 到您的 SiteWise Edge 网关。 Amazon Secrets Manager 对设备上的机密进行加密，以确保您的用户名和密码的安全，直到您需要使用它们为止。有关 Amazon IoT Greengrass 密钥管理器组件的更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发者指南*》中的[密钥管理器](https://docs.amazonaws.cn/greengrass/v2/developerguide/secret-manager-component.html)。

有关管理 Secrets Manager 密钥访问权限的信息，请参阅：
+ [谁有权访问你的 Amazon Secrets Manager 秘密](https://docs.amazonaws.cn/secretsmanager/latest/userguide/determine-acccess_examine-iam-policies.html)。
+ [确定账户内的请求是被允许还是被拒绝](https://docs.amazonaws.cn/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow)。

## 步骤 1：创建源身份验证密钥


您可以使用 Amazon Secrets Manager 为数据源创建身份验证密钥。在密钥中，定义 **username** 和 **password** 密钥/值对，其中包含数据来源的身份验证详细信息。

**创建密钥（控制台）**

1. 导航至 [Amazon Secrets Manager 控制台](https://console.amazonaws.cn/secretsmanager/)。

1. 选择**存储新密钥**。

1. 在**密钥类型**下，选择**其他密钥类型**。

1. 在**键/值对**下，执行以下操作：

   1. 在第一个输入框中输入 **username**，在第二个输入框中输入用户名。

   1. 选择**添加行**。

   1. 在第一个输入框中输入 **password**，在第二个输入框中输入密码。

1. 为**加密密钥**选择 **aws/secretsmanager**，然后选择**下一步**。

1. 在**存储新密钥**页面，输入**密钥名称**。

1. （可选）输入可帮助您识别此密钥的**描述**，然后选择**下一步**。

1. （可选）在**存储新密钥**页面，启用**自动轮换**。有关更多信息，请参阅 *Amazon Secrets Manager 用户指南*中的[轮换密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/rotating-secrets.html)。

1. 指定轮换计划。

1. 选择可以轮换此密钥的 Lambda 函数，然后选择**下一步**。

1. 检查您的密钥配置，然后选择**存储**。

要授权您的 SiteWise Edge 网关与之交互 Amazon Secrets Manager，您的 SiteWise Edge 网关的 IAM 角色必须允许该`secretsmanager:GetSecretValue`操作。您可以使用 **Greengrass 核心设备来搜索** IAM 策略。有关更新 IAM 策略的更多信息，请参阅*Amazon Identity and Access Management 用户指南*中的[编辑 IAM 策略](https://docs.amazonaws.cn/IAM/latest/UserGuide/access_policies_manage-edit.html)。

**Example policy**  
*secret-arn*替换为您在上一步中创建的密钥的 Amazon 资源名称 (ARN)。有关如何获取密钥的 ARN 的更多信息，请参阅*Amazon Secrets Manager 用户*指南[Amazon Secrets Manager中的查找密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/manage_search-secret.html)。    
****  

```
{
"Version":"2012-10-17",		 	 	 
"Statement":[
  {
     "Action":[
        "secretsmanager:GetSecretValue"
     ],
     "Effect":"Allow",
     "Resource":[
        "arn:aws:secretsmanager:us-east-1:123456789012:secret/*"
     ]
  }
]
}
```

## 步骤 2：将密钥部署到您的 SiteWise Edge 网关设备


您可以使用 Amazon IoT SiteWise 控制台将密钥部署到您的 SiteWise Edge 网关。

**部署密钥（控制台）**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 从**网关**列表中，选择目标 SiteWise Edge 网关。

1. 在**网关配置**部分，选择 **Greengrass 核心**设备链接以打开与 Edge 网关关联 Amazon IoT Greengrass 的核心。 SiteWise 

1. 在导航窗格中，选择**部署**。

1. 选择目标部署，然后选择**修订**。

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

1. 在**选择组件**页面的**公共组件**部分，关闭**仅显示所选组件**。

1. 搜索并选择 **aws.greengrass。 SecretManager**组件，然后选择 “**下一步**”。

1. 从 “**选定组件”** 列表中选择 **aws.greengrass。 SecretManager**组件，然后选择**配置组件**。

1. 在**要合并的配置**字段，添加以下 JSON 对象。
**注意**  
*secret-arn*替换为您在上一步中创建的密钥的 ARN。有关如何获取密钥的 ARN 的更多信息，请参阅*Amazon Secrets Manager 用户*指南[Amazon Secrets Manager中的查找密钥](https://docs.amazonaws.cn/secretsmanager/latest/userguide/manage_search-secret.html)。

   ```
   {
   "cloudSecrets":[
     {
        "arn":"secret-arn"
     }
   ]
   }
   ```

1. 选择**确认**。

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

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

1. 查看您的部署配置，再选择**部署**。

## 步骤 3：添加身份验证配置


您可以使用 Amazon IoT SiteWise 控制台向 SiteWise Edge 网关添加身份验证配置。

**添加身份验证配置（控制台）**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 从**网关**列表中，选择目标 SiteWise Edge 网关。

1. 从**数据来源**列表中选择目标数据来源，再选择**编辑**。

1. 在**添加数据来源**页面选择**高级配置**。

1. 对于**身份验证配置**，请选择您在上一步中部署的密钥。

1. 选择**保存**。

# Amazon IoT Greengrass Amazon IoT SiteWise Edge 的组件
SiteWise Edge 组件

SiteWise Edge 使用 Amazon IoT Greengrass 组件在边缘收集、处理和传输工业数据。这些组件协同工作，可实现本地数据处理并与 Amazon IoT SiteWise 云服务无缝集成。

**物联网 SiteWise 发行商**  
物联网 SiteWise 发布者组件 (`aws.iot.SiteWiseEdgePublisher`) 负责：  
+ 安全地将收集的数据传输到 Amazon IoT SiteWise 云服务
+ 在连接问题期间管理数据缓冲和重试
有关为 SiteWise Edge 配置发布器的更多信息，请参阅[配置 Amazon IoT SiteWise 发布者组件](configure-publisher-component.md)。而且，有关发布者组件的更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发者指南》*中的 [IoT SiteWise 发布](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-publisher-component.html)者。

**物联网 SiteWise 处理器**  
物联网 SiteWise 处理器组件 (`aws.iot.SiteWiseEdgeProcessor`) 执行以下任务：  
+ 在边缘执行数据转换和计算
+ 在本地实现资产属性定义和计算
+ 通过在传输前聚合或筛选数据来减少数据量
有关处理器组件的更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发者指南》*中的 [IoT SiteWise 处理器](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)。

**物联网 SiteWise OPC UA 采集器**  
物联网 SiteWise OPC UA 收集器 (`aws.iot.SiteWiseEdgeCollectorOpcua`) 组件设计用于：  
+ 在工业环境中连接 OPC UA 服务器
+ 高效地从 OPC UA 数据源收集数据
+ 将 OPC UA 数据转换为兼容的格式 Amazon IoT SiteWise
有关 OPC UA 收集器组件的更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发者*指南》中的 [IoT SiteWise OPC UA 收集器](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-opcua-collector-component.html)。

**物联网 SiteWise OPC UA 数据源模拟器**  
IoT SiteWise OPC UA 数据源模拟器组件 (`aws.iot.SiteWiseEdgeOpcuaDataSourceSimulator`) 提供以下功能：  
+ 启动生成示例数据的本地 OPC UA 服务器
+ 模拟网关上的 Amazon IoT SiteWise OPC UA 收集器组件可以读取的数据源 Amazon IoT SiteWise 
+ 允许使用生成的样本数据探索 Amazon IoT SiteWise 特征
该组件对于测试和开发目的特别有用，使您无需物理设备即可模拟工业数据源。  
有关数据源仿真组件的更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发人员指南》*中的 [IoT SiteWise OPC UA 数据源模拟器](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-opcua-data-source-simulator-component.html)。

这些 Amazon IoT Greengrass 组件用于启用 SiteWise Edge 功能。物联网 SiteWise 发布者确保数据可靠地发送到云端，物联网 SiteWise 处理器负责本地计算和数据优化，物联网 SiteWise OPC UA 收集器可促进与常见工业协议的集成。

**注意**  
要使用这些组件，必须先在边缘设备上安装 Amazon IoT Greengrass V2 或稍后安装。每个组件的正确配置对于 SiteWise Edge 的最佳性能非常重要。

# 筛选 SiteWise Edge 网关上的资产
筛选 资产

您可以使用边缘筛选来更有效地管理资产，方法是仅将一部分资产发送到特定的 SiteWise 边缘网关以用于数据处理。如果您的资产按树结构或父子结构排列，则可以设置附加到 SiteWise Edge 网关的 IAM 角色的 IAM 策略，该策略仅允许将树的根（父级）及其子项发送到特定的 SiteWise Edge 网关。

**注意**  
如果要将现有资源排列为树形结构，则在创建结构后，进入添加到结构中的每项现有资源，选择 **“编辑”**，然后选择 “**保存**”，以确保 Amazon IoT SiteWise 识别新结构。

## 设置边缘筛选


在 Edge 网关上设置 SiteWise 边缘筛选，方法是将以下 IAM 策略添加到 SiteWise Edge 网关的 IAM 角色，*<root-asset-id>*替换为要发送到 SiteWise Edge 网关的根资产的 ID。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "iotsitewise:DescribeAsset",
                "iotsitewise:ListAssociatedAssets"
            ],
            "Resource": "arn:aws:iotsitewise:*:*:asset/*",
            "Condition": {
                "StringNotLike": {
                    "iotsitewise:assetHierarchyPath": "/<root-asset-id>*"
                }
            }
        }
    ]
}
```

------

如果您的 SiteWise Edge 网关上当前有您想要移除的资产，请登录您的 SiteWise Edge 网关并运行以下命令， Amazon IoT SiteWise 通过删除缓存来强制 SiteWise Edge 网关与之同步。

```
sudo rm /greengrass/v2/work/aws.iot.SiteWiseEdgeProcessor/sync-app/sync_resource_bundles/edge.json
```

# 为 E Amazon IoT SiteWise dge 配置代理支持并管理信任存储
代理支持和信任存储

在 Amazon IoT SiteWise Edge 中，配置和管理信任存储库，为边缘设备设置代理支持。首先，设置代理配置，然后配置信任存储。您可以在网关安装期间配置信任存储，也可以在网关建立后手动配置信任存储。
+ **代理**-在各种网络环境中促进边缘设备和 Amazon 服务之间的连接。
+ **信任存储**-通过管理可信证书来确保连接安全。适当的配置可帮助您遵守网络安全策略，在受限的网络环境中实现通信，并优化边缘设备和云服务之间的数据传输。

SiteWise Edge 针对不同的组件类型使用多个信任存储，确保数据从边缘设备安全高效地流向云端。您可以在现有网关上配置信任存储和代理，也可以在安装过程中创建新网关时配置信任存储和代理。

## 信任存储和代理配置的要求
要求

在配置信任存储或使用代理设置安装 SiteWise Edge 之前，请确保满足先决条件。根据您的组件使用情况和功能要求，有不同的实现要求。

**代理支持要求**
+ 您的代理服务器的 URL。URL 应包含用户信息，即主机的端口号。例如 `scheme://[userinfo@]host[:port]`。
  + `scheme`— 必须是 HTTP 或 HTTPS
  + （可选）`userinfo`-用户名和密码信息
  + `host`— 代理服务器的主机名或 IP 地址
  + `port`— 端口号
+ 绕过代理的地址列表。
+ （可选）如果您使用带有自签名证书的 HTTPS 代理，则为代理 CA 证书文件。

**信托商店要求**
+ 要使用 HTTPS 代理获得完整的数据处理包功能，您应该更新所有三个信任存储库。
+ 如果您仅使用 IoT SiteWise OPC UA 收集器和物联网 SiteWise 发布器，请将证书 C Amazon IoT Greengrass ore 和 Java 信任存储更新到最新版本。

## 信任存储和代理服务器边缘配置的最佳实践
最佳实践

要进行持续维护并保持边缘环境的最高安全级别，请执行以下操作：
+ 定期检查和更新代理设置，使其符合您的网络安全要求。
+ 监控网关连接和数据流，确保代理通信正确
+ 根据贵组织的证书管理政策维护和更新信任存储
+ 您可以实施并遵循我们推荐的最佳实践，以便在边缘环境中实现安全通信，例如：
+ 记录您的代理和信任存储库配置，以实现运营可见性
+ 按照贵组织的安全惯例进行凭证管理

这些做法有助于保持 SiteWise Edge 网关的安全可靠运行，同时与更广泛的安全策略保持一致。

# 在 Amazon IoT SiteWise Edge 网关安装期间配置代理设置
在安装过程中配置代理设置

您可以将 Amazon IoT SiteWise Edge 配置为在网关安装期间使用代理服务器。安装脚本同时支持 HTTP 和 HTTPS 代理，并且可以自动配置信任存储以实现安全的代理连接。

使用代理设置运行安装脚本时，它会执行几项重要任务：
+ 验证代理 URL 格式和参数，确保它们指定正确。
+ 通过配置的代理下载并安装所需的依赖项。
+ 如果提供了代理 CA 证书，则会将其附加到 Amazon IoT Greengrass 根 CA 证书并导入到 Java KeyStore 中。
+ 将 Amazon IoT Greengrass （ SiteWise Edge 使用的）配置为对所有出站连接使用代理。
+ 使用适当的代理和信任存储配置完成 SiteWise Edge 安装。

**在安装网关软件时配置代理设置**

1. 创建 SiteWise Edge 网关。有关更多信息，请参阅[创建自托管 SiteWise Edge 网关](create-gateway-ggv2.md)和[在本地设备上安装 Amazon IoT SiteWise Edge 网关软件](install-gateway-software-on-local-device.md)。

1. 使用适合您环境的代理设置运行安装脚本。用您的特定代理信息替换占位符 

   替换以下各项：
   + `-p`，`--proxy-url`— 代理服务器的 URL。网址必须为`http`或`https`。
   + `-n`，`--no-proxy`— 以逗号分隔的地址列表，用于绕过代理。
   + （可选）`-c`，`--proxy-ca-cert`— 代理 CA 证书文件的路径。
   + （可选）`-j`，`--javastorepass`— Java KeyStore 密码。默认密码为 `changeit`。

------
#### [ Linux ]

   对于 Linux 系统，请使用以下命令结构：

   ```
   sudo ./install.sh -p proxy-url -n no-proxy-addresses [-c proxy-ca-cert-path] [-j javastorepass]
   ```

------
#### [ Windows ]

   对于使用的Microsoft Windows系统 PowerShell，请使用以下命令结构：

   ```
   .\install.ps1 -ProxyUrl proxy-url -NoProxyAddresses no-proxy-addresses [-ProxyCaCertPath proxy-ca-cert-path] [-JavaStorePass javastorepass]
   ```

------

## 在启用代理的安装过程中进行故障排除


有关解决与 SiteWise Edge 网关相关的信任存储问题的更多信息，请参阅[支持代理的安装问题](troubleshooting-gateway.md#troubleshoot-proxy-during-installation)。

# 在 E Amazon IoT SiteWise dge 中手动配置信任存储以支持 HTTPS 代理
手动配置信任存储以支持 HTTPS 代理

将 Amazon IoT SiteWise Edge 组件配置为通过 HTTPS 代理进行连接时，请将代理服务器的证书添加到相应的信任存储中。 SiteWise Edge 使用多个信任存储库来保护通信。有三个信任存储库，您对它们的使用取决于网关实现中的 SiteWise Edge 组件类型。

如果提供了代理设置，则会在安装过程中自动更新信任存储库。
+ [配置 Amazon IoT Greengrass 核心组件信任存储](#manage-trust-stores-proxy_greengrass-core-components)— Amazon IoT Greengrass 根CA证书包含在信任库中，用于验证 Amazon 服务的真实性。

  此信任存储可帮助 Amazon IoT Greengrass 组件通过代理安全地与 Amazon 服务通信，同时验证这些服务的真实性。
+ [配置基于 Java 的组件信任存储](#manage-trust-stores-proxy_java-based-components)— Java KeyStore (JKS) 是基于 Java 的组件用于 SSL/TLS 连接的主要信任存储库。

   Java 应用程序依靠 JKS 来建立安全连接。例如，如果您使用的是基于 Java 的 IoT SiteWise 发布者或 IoT SiteWise OPC UA 收集器，则需要配置此信任存储库。这样可以确保在向云端发送数据或从 OPC UA 服务器收集数据时，这些组件可以安全地通过 HTTPS 代理进行通信。
+ [系统级组件信任存储配置](#manage-trust-stores-proxy_system-level-components)— 使用 HTTPS 代理时，必须将其证书添加到相应的信任存储库中以启用安全连接。

  使用 HTTPS 代理时，必须将其证书添加到相应的信任存储中，以启用安全连接。这是必要的，因为通常用 Rust 或 Go 等语言编写的系统级组件依赖于系统的信任存储库，而不是 Java 的 JKS。例如，如果您使用的系统实用程序需要通过代理进行通信（例如软件更新或时间同步），则需要配置系统级信任存储。这可确保这些组件和实用程序能够通过代理建立安全连接。

## 配置 Amazon IoT Greengrass 核心组件信任存储
Amazon IoT Greengrass 核心组件

对于使用亚马逊根 CA 的 Amazon IoT Greengrass 核心函数：

1. 在以下位置找到证书文件 `/greengrass/v2/AmazonRootCA1.pem`

1. 将 HTTPS 代理根证书（自签名）附加到此文件中。

```
-----BEGIN CERTIFICATE-----
MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK
\nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww
... content of proxy CA certificate ...
+vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui
GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216
gJMIADggEPADf2/m45hzEXAMPLE=
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg
ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW
... content of root CA certificate ...
o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa
5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy
rqXRfKoQnoZsG4q5WTP46EXAMPLE
-----END CERTIFICATE-----
```

### 在已建立的网关上配置 HTTPS 代理


您可以通过连接到端口 443 而不是端口 8883 来为已建立的网关添加代理支持。有关使用代理服务器的更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发人员指南*[》中的通过端口 443 或通过网络代理进行连接](https://docs.amazonaws.cn/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-alpn-network-proxy)。如果您创建了新的网关，则可以在网关安装期间设置代理配置。有关更多信息，请参阅 [在 Amazon IoT SiteWise Edge 网关安装期间配置代理设置](manage-trust-stores-proxy_config.md)。

当你 Amazon IoT Greengrass 在 SiteWise Edge 上使用 HTTPS 代理时，软件会根据提供的网址自动在 HTTP 和 HTTPS 之间进行代理连接。

**重要**  
在尝试通过 HTTPS 代理进行连接之前，请更新所有必需的信任存储库。

## 配置基于 Java 的组件信任存储
基于Java的组件

对于数据处理包中的物联网 SiteWise 发行商、物联网 SiteWise OPC UA 收集器和 Java 服务，默认 Java 信任存储位置为 `$JAVA_HOME/jre/lib/security/cacerts`

**添加证书**

1. 创建用于存储代理服务器证书的文件，例如`proxy.crt`。
**注意**  
使用代理服务器的证书提前创建文件。

1. 使用以下命令将文件添加到 Java 的信任存储区：

   ```
   sudo keytool -import -alias proxyCert -keystore /usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts -file proxy.crt
   ```

1. 出现提示时，使用默认密码：`changeit`

## 系统级组件信任存储配置
系统级组件

对于用 Rust、Go 和其他使用系统信任存储库的语言编写的组件：

------
#### [ Linux ]

Linux 系统：将证书添加到 `/etc/ssl/certs/ca-certificates.crt`

------
#### [ Windows ]

Microsoft Windows系统：要配置信任存储库，请按照 *Microsoft Ignite* 文档中的[证书存储](https://learn.microsoft.com/en-us/windows-hardware/drivers/install/certificate-stores)区步骤进行操作。

Windows 提供多个证书存储区，包括用于用户和计算机范围的单独存储区，每个存储区都有多个子存储区。对于大多数 SiteWise Edge 设置，我们建议在`COMPUTER | Trusted Root Certification Authorities`商店中添加证书。但是，根据您的特定配置和安全要求，您可能需要使用不同的商店。

------

## 对信任存储库问题进行故障排除


有关解决与 SiteWise Edge 网关相关的信任存储问题的更多信息，请参阅[信任商店问题](troubleshooting-gateway.md#troubleshoot-trust-stores)。

# Amazon IoT SiteWise APIs 在边缘使用
使用 APIs

Amazon IoT SiteWise 提供了其 APIs中的一个子集以及特定于边缘的资源 APIs，从而实现了与部署在边缘的资产模型及其关联资产的无缝交互。这些资产模型必须配置为在边缘运行。有关更多信息，请参阅[在 E SiteWise dge 上配置用于数据处理的资产模型](edge-processing.md#process-gateway-data-edge)，获取此设置流程的详细说明。

配置这些之后 APIs，您可以检索有关您的资产模型和单个资产的全面数据。检索资产模型、资产、控制面板、门户和项目信息可以帮助您监控已部署的门户和控制面板，并访问在边缘级别收集的资产数据。这在您的网络中提供了一个中央主机， Amazon IoT SiteWise 无需调用 Web API 即可与之进行交互。

**Topics**
+ [

# 所有可用的 Amazon IoT SiteWise Edge 设备 APIs
](edge-apis-available.md)
+ [

# 仅限 Edge APIs ，适用于边缘设备 Amazon IoT SiteWise
](edge-local-apis.md)
+ [

# 在 Edge 上 Amazon IoT SiteWise 启用 CORS APIs
](enable-cors-edge-apis.md)
+ [

# 为 Edge 配置会话超时 Amazon IoT SiteWise
](edge-apis-session-timeout.md)
+ [

# 教程：在 Amazon IoT SiteWise Edge 网关上列出资产模型
](edge-apis-tutorial.md)

# 所有可用的 Amazon IoT SiteWise Edge 设备 APIs
全部可用 APIs

Amazon IoT SiteWise 提供了多种可在边缘设备上使用的选项，以便您可以在设备上本地完成任务。 APIs 一些可用的优势 APIs 包括检索资产模型、创建和更新资产属性以及将数据流发送到云端。通过利用这些功能 APIs，您可以构建可在网络连接断断续续或有限的环境中运行的解决方案。

## 可用 Amazon IoT SiteWise APIs


边缘设备上提供 Amazon IoT SiteWise APIs 以下功能：
+ [ListAssetModels](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListAssetModels.html)
+ [DescribeAssetModel](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribeAssetModel.html)
+ [ListAssets](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListAssets.html)
+ [DescribeAsset](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribeAsset.html)
+ [DescribeAssetProperty](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribeAssetProperty.html)
+ [ListAssociatedAssets](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListAssociatedAssets.html)
+ [GetAssetPropertyAggregates](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_GetAssetPropertyAggregates.html)
+ [GetAssetPropertyValue](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_GetAssetPropertyValue.html)
+ [GetAssetPropertyValueHistory](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_GetAssetPropertyValueHistory.html)
+ [ListDashboards](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListDashboards.html)
+ [ListPortals](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListPortals.html)
+ [ListProjectAssets](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListProjectAssets.html)
+ [ListProjects](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_ListProjects.html)
+ [DescribeDashboard](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribeDashboard.html)
+ [DescribePortal](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribePortal.html)
+ [DescribeProject](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_DescribeProject.html)

## 仅限边缘可用 APIs


 APIs 以下内容在边缘设备上本地使用：
+ [身份验证](edge-local-apis.md#edge-local-apis-authenticate) — 使用此 API 获取用于进行 API 调用的 Sigv4 临时凭证。

# 仅限 Edge APIs ，适用于边缘设备 Amazon IoT SiteWise
仅限边缘 APIs

除了边缘上可用的之外，还有一些特定于边缘的。 Amazon IoT SiteWise APIs 这些边缘特定的内容如下 APIs 所述。

## 身份验证


从 SiteWise Edge 网关获取证书。您需要添加本地用户或使用 LDAP 或 Linux 用户群体连接到您的系统。有关添加用户的更多信息，请参阅 [LDAP](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) 或 [Linux 用户群体](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)。

### 请求语法


```
POST /authenticate HTTP/1.1
Content-type: application/json
{
  "username": "string",
  "password": "string",
  "authMechanism": "string"
}
```

### URI 请求参数


该请求不使用任何 URI 参数。

### 请求正文


请求接受采用 JSON 格式的以下数据。

**username**  
用于验证请求调用的用户名。  
类型：字符串  
是否必需：是

**password**  
请求凭证的用户密码。  
类型：字符串  
是否必需：是

**authMechanism**  
在主机中验证此用户的身份验证方法。  
类型：字符串  
有效值：`ldap`、`linux`、`winnt`  
是否必需：是

### 响应语法


```
HTTP/1.1 200
Content-type: application/json
{
  "accessKeyId": "string",
  "secretAccessKey": "string",
  "sessionToken": "string",
  "region": "edge"
}
```

### 响应元素


如果此操作成功，则该服务将会发送回 HTTP 200 响应。

以下数据以 JSON 格式返回。

**accessKeyId**  
用于标识临时安全凭证的访问密钥 ID。  
长度限制：最小长度为 16。最大长度为 128。  
模式：`[\w]*`

**secretAccessKey**  
用于签署请求的秘密访问密钥。  
类型：字符串

**sessionToken**  
用户必须传递给服务 API 才能使用临时凭证的令牌。  
类型：字符串

**region**  
您针对 API 调用的目标区域。  
类型：常量 — `edge`

### 错误


**IllegalArgumentException**  
由于提供的正文文件格式错误，请求被拒绝。错误消息描述了具体的错误。  
HTTP 状态代码：400

**AccessDeniedException**  
根据当前的身份提供商，用户无有效凭证。错误消息描述了身份验证机制。  
HTTP 状态代码：403

**TooManyRequestsException**  
该请求已达到身份验证尝试次数上限。错误消息包含等待进行新的身份验证尝试的时间。  
HTTP 状态代码：429

# 在 Edge 上 Amazon IoT SiteWise 启用 CORS APIs
启用 CORS

在 E Amazon IoT SiteWise dge 上启用 CORS（跨源资源共享） APIs 允许 Web 应用程序 APIs 跨不同域直接与之通信。这可以实现无缝集成、实时数据交换和跨域数据访问，无需中间服务器或变通方法。可以将 CORS 设置配置为指定允许的来源，从而确保受控的跨域访问。

**注意**  
CORS 可用于 3.3.1 及更高版本。此功能适用于该组件的 3.3.1 及更高版本。`aws.iot.SiteWiseEdgeProcessor`有关更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发人员指南*》中的[Amazon IoT SiteWise 处理器](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)。

**在 Edge 上 SiteWise 启用 CORS APIs**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要为其启用 CORS 的 SiteWise Edge 网关。您可以对 Amazon IoT Greengrass V2 部署类型启用 CORS。

1. 在**网关配置**部分，选择关联的 **Greengrass 核心设备**。

1. 在 “部**署**” 选项卡的 **Greengrass** 设备下，选择相应的部署链接。

1. 在 “**操作**” 下选择 “**修订**”，然后选择 “**修订部署**”。
**重要**  
创建经过修订的启用 CORS 的配置会替换设备的当前配置。

1. 在**步骤 1 “指定目标”** 中，提供一个可选的**名称**来标识部署。

1. 在**步骤 2，选择组件（可选**）中，您可以将所有当前选择保持不变，然后选择 “**下一步**”。

1. 在**步骤 3 “配置组件-可选**” 中，选择 **aws.iot。 SiteWiseEdgeProcessor**，然后选择**配置组件**。

1. 在 “配置更新” 部分的 “要合并的配置” 下，输入以下 JSON：

   ```
   {
       "AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN": "*"
   }
   ```
**注意**  
使用`*`作为的值`AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN`允许所有来源。对于生产环境，为了提高安全性，建议指定确切 URLs 的来源。

1. 选择**确认**。

1. 选择 “**下一步**” 继续完成剩余的步骤，直到进入**步骤 5 “查看**”。

1. 查看您的配置更改，然后选择 **Deploy** 将更改应用到您的 SiteWise Edge 网关。
**注意**  
或者，您可以通过在 Amazon IoT SiteWise 网关`*`上将环境变量设置为全局`AWS_SITEWISE_EDGE_ACCESS_CONTROL_ALLOW_ORIGIN`来启用 CORS。

**注意**  
对于经过身份验证的代理，`userinfo`必须包含在代理配置的`url`字段中，而不是作为分隔的`username`和`password`字段。

部署完成后，将在您的 SiteWise Edge API 上启用 CORS，从而允许指定的源向该 API 发出跨域请求。

# 为 Edge 配置会话超时 Amazon IoT SiteWise
配置会话超时

SiteWise Edge 允许您为 Ed SiteWise ge API 配置会话超时。此功能通过在指定时间段后自动终止非活动会话来增强安全性。本节将指导您完成使用配置会话超时的过程 Amazon IoT SiteWise 控制台。

**注意**  
会话超时配置适用于该`aws.iot.SiteWiseEdgeProcessor`组件的 3.4.0 及更高版本。有关更多信息，请参阅《*Amazon IoT Greengrass Version 2 开发人员指南*》中的[Amazon IoT SiteWise 处理器](https://docs.amazonaws.cn/greengrass/v2/developerguide/iotsitewise-processor-component.html)。

**为 SiteWise Edge 网关配置会话超时**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要在其中配置会话超时的 SiteWise Edge 网关。
**注意**  
您可以根据 Amazon IoT Greengrass V2 部署类型配置会话超时。

1. 在**网关配置**部分，选择关联的 **Greengrass 核心设备**。

1. 在 “部**署**” 选项卡的 **Greengrass** 设备下，选择相应的部署链接。

1. 在 “**操作**” 下选择 “**修订**”。阅读警告，然后选择 “**修订部署**”。
**重要**  
创建修改后的会话超时配置会替换设备的当前配置。

1. 在**步骤 1 “指定目标”** 中，提供可选**名称**以标识修改后的部署，然后选择 “**下一步**”。

1. 在**步骤 2，选择组件（可选**）中，您可以将所有当前选择保持不变，然后选择 “**下一步**”。

1. 在**步骤 3 “配置组件-可选**” 中，选择 **aws.iot。 SiteWiseEdgeProcessor**，然后选择**配置组件**。

1. 在**配置更新**部分的**要合并的配置下，输入以**下 JSON：

   ```
   {
       "AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES": "240"
   }
   ```

1. 设置的值（以分钟`AWS_SITEWISE_EDGE_SESSION_TIMEOUT_MINUTES`为单位）。会话超时值可以从 1 分钟到 10080 分钟（7 天）不等。默认值为 240 分钟（4 小时）。

1. 选择**确认**。

1. 选择 “**下一**步” 继续完成剩余步骤，直到进入步骤 5 “**查看**”。

1. 查看您的配置更改，然后选择 **Deploy** 将更改应用到您的 SiteWise Edge 网关。

**注意**  
或者，您可以通过在 Edge 网关上将全局环境变量 **AWS\$1SITEWISE\$1EDGE\$1SESSION\$1TIMEOUT\$1MINUTES 设置为所需的值（以分钟为单位）来配置会话**超时。 SiteWise 

部署完成后，新的会话超时配置将应用于您的 SiteWise Edge API。

# 教程：在 Amazon IoT SiteWise Edge 网关上列出资产模型
教程：获取资产模型列表

您可以使用可用的子集 Amazon IoT SiteWise APIs 以及特定于边缘的资源 APIs 来与资产模型及其边缘资产进行交互。本教程将引导您获取 Amazon IoT SiteWise Edge 网关的临时凭证以及获取 SiteWise Edge 网关上的资产模型列表。

## 先决条件


在本教程的步骤中，您可以使用各种工具。要使用这些工具，请确保您安装了相应的必备工具。

要完成本教程，您需要：
+ 已部署且正在运行 [Amazon IoT SiteWise Edge 自托管网关要求](configure-gateway-ggv2.md)
+ 通过 SiteWise 端口 443 访问同一网络中的 Edge 网关。
+ 安装 [OpenSSL](https://www.openssl.org/)
+ (f Amazon OpsHub o Amazon IoT SiteWise r) f [Amazon OpsHub or Amazon IoT SiteWise 应用程序](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)
+ (curl) [curl](https://ec.haxx.se/install/) 已安装
+ (Python) [urllib3](https://urllib3.readthedocs.io/en/stable/index.html) 已安装
+ (Python) [Python3](https://www.python.org/downloads/) 已安装
+ (Python) [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) 已安装
+ (Python) [BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)已安装

## 步骤 1：获取 SiteWise Edge 网关服务签名证书


要建立与 SiteWise Edge 网关上 APIs 可用的 TLS 连接，您需要一个可信证书。您可以使用 OpenSSL 或 Amazon OpsHub 为生成此证书。 Amazon IoT SiteWise

------
#### [ OpenSSL ]

**注意**  
您需要安装 [OpenSSL](https://www.openssl.org/) 才能运行此命令。

打开终端并运行以下命令从 SiteWise Edge 网关获取签名证书。`<sitewise_gateway_ip>`替换为 SiteWise 边缘网关的 IP。

```
openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | openssl x509 -outform PEM > GatewayCert.pem
```

------
#### [ Amazon OpsHub for Amazon IoT SiteWise ]

你可以用 Amazon OpsHub 于 Amazon IoT SiteWise。有关更多信息，请参阅 [管理 SiteWise Edge 网关](manage-gateways-ggv2.md)。

------

本教程使用下载的 SiteWise Edge 网关证书的绝对路径。运行以下命令导出证书的完整路径，将 `<absolute_path_to_certificate>` 替换为证书的路径：

```
export PATH_TO_CERTIFICATE='<absolute_path_to_certificate>'
```

## 步骤 2：获取您的 SiteWise Edge 网关主机名


**注意**  
您需要安装 [OpenSSL](https://www.openssl.org/) 才能运行此命令。

要完成本教程，您需要提供 SiteWise Edge 网关的主机名。要获取 SiteWise Edge 网关的主机名，请运行以下命令，`<sitewise_gateway_ip>`替换为 SiteWise Edge 网关的 IP：

```
openssl s_client -connect <sitewise_gateway_ip>:443 </dev/null 2>/dev/null | grep -Po 'CN = \K.*'| head -1
```

运行以下命令导出主机名供以后使用，`<your_edge_gateway_hostname>`替换为 SiteWise Edge 网关的主机名：

```
export GATEWAY_HOSTNAME='<your_edge_gateway_hostname>'
```

## 步骤 3：获取 SiteWise Edge 网关的临时证书


现在，您已获得 SiteWise Edge 网关的签名证书和主机名，您需要获取临时证书，以便可以在网关 APIs 上运行。您可以使用 Edge 网关 Amazon IoT SiteWise 或直接从 SiteWise Edge 网关获取这些证书 APIs。 Amazon OpsHub 

**重要**  
凭证每 4 小时过期一次，因此您应在使用 SiteWise Edge 网关之前获取证书。 APIs 请勿将凭证缓存超过 4 小时。

### 使用 Amazon OpsHub 获取临时证书 Amazon IoT SiteWise


**注意**  
您需要安装 f [Amazon OpsHub o Amazon IoT SiteWise r 应用程序](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)。

要使用 Amazon IoT SiteWise 应用程序 Amazon OpsHub 获取您的临时证书，请执行以下操作：

1. 登录应用程序。

1. 选择**设置**。

1. 对于**身份验证**，选择**复制凭证**。

1. 展开适合您环境的选项，再选择**复制**。

1. 保存凭证以供稍后使用。

### 使用 SiteWise Edge 网关 API 获取临时证书


要使用 SiteWise Edge 网关 API 获取临时证书，可以使用 Python 脚本或 curl，首先需要有 SiteWise Edge 网关的用户名和密码。边 SiteWise 缘网关使用 Sigv4 身份验证和授权。有关添加用户的更多信息，请参阅 [LDAP](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app) 或 [Linux 用户群体](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#opshub-app)。以下步骤将使用这些凭证来获取您的 SiteWise Edge 网关上使用所需的本地证书 Amazon IoT SiteWise APIs。

------
#### [ Python ]

**注意**  
您需要安装 [urllib3](https://urllib3.readthedocs.io/en/stable/index.html) 和 [Python3](https://www.python.org/downloads/)。

**获取 Python 使用凭证**

1. 创建一个名为 **get\$1credentials.py** 的文件，再将以下代码复制到其中。

   ```
   '''
   The following demonstrates how to get the credentials from the SiteWise Edge gateway. You will need to add local users or connect your system to LDAP/AD
   https://docs.aws.amazon.com/iot-sitewise/latest/userguide/manage-gateways-ggv2.html#create-user-pool
   
   Example usage:
       python3 get_credentials.py -e https://<gateway_hostname> -c <path_to_certificate> -u '<gateway_username>' -p '<gateway_password>' -m '<method>'
   '''
   import urllib3
   import json
   import urllib.parse
   import sys
   import os
   import getopt
   
   """
   This function retrieves the Amazon IoT SiteWise Edge gateway credentials.
   """
   def get_credentials(endpoint,certificatePath, user, password, method):
       http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs= certificatePath)
       encoded_body = json.dumps({
           "username": user,
           "password": password,
           "authMechanism": method,
       })
   
       url =  urllib.parse.urljoin(endpoint, "/authenticate")
   
       response = http.request('POST', url,
           headers={'Content-Type': 'application/json'}, 
           body=encoded_body)
       
       if response.status != 200:
           raise Exception(f'Failed to authenticate! Response status {response.status}')
   
       auth_data = json.loads(response.data.decode('utf-8'))
   
       accessKeyId = auth_data["accessKeyId"]
       secretAccessKey = auth_data["secretAccessKey"]
       sessionToken = auth_data["sessionToken"]
       region = "edge"
   
       return accessKeyId, secretAccessKey, sessionToken, region
   
   def print_help():
       print('Usage:')
       print(f'{os.path.basename(__file__)} -e <endpoint> -c <path/to/certificate> -u <user> -p <password> -m <method> -a <alias>')
       print('')
       print('-e, --endpoint   edge gateway endpoint. Usually the Edge gateway hostname.')
       print('-c, --cert_path path to downloaded gateway certificate')
       print('-u, --user       Edge user')
       print('-p, --password   Edge password')
       print('-m, --method     (Optional) Authentication method (linux, winnt, ldap), default is linux')
       sys.exit()
   
   
   def parse_args(argv):
       endpoint = ""
       certificatePath = None
       user = None
       password = None
       method = "linux"
       
       try:
           opts, args = getopt.getopt(argv, "he:c:u:p:m:", ["endpoint=","cert_path=", "user=", "password=", "method="])
       except getopt.GetoptError:
           print_help()
   
       for opt, arg in opts:
           if opt == '-h':
               print_help()
           elif opt in ("-e", "--endpoint"):
               endpoint = arg
           elif opt in ("-u", "--user"):
               user = arg
           elif opt in ("-p", "--password"):
               password = arg
           elif opt in ("-m", "--method"):
               method = arg.lower()
           elif opt in ("-c", "--cert_path"):
               certificatePath = arg
   
       if method not in ['ldap', 'linux', 'winnt']:
           print("not valid method parameter, required are ldap, linux, winnt")
           print_help()
   
       if (user == None or password == None):
           print("To authenticate against edge user, password have to be passed together, and the region has to be set to 'edge'")
           print_help()
       
       if(endpoint == ""):
           print("You must provide a valid and reachable gateway hostname")
           print_help()
   
       return endpoint,certificatePath, user, password, method
   
   
   def main(argv):
       # get the command line args
       endpoint, certificatePath, user, password, method = parse_args(argv)
       
       accessKeyId, secretAccessKey, sessionToken, region=get_credentials(endpoint, certificatePath, user, password, method)
   
       print("Copy and paste the following credentials into the shell, they are valid for 4 hours:")
       print(f"export AWS_ACCESS_KEY_ID={accessKeyId}")
       print(f"export AWS_SECRET_ACCESS_KEY={secretAccessKey}")
       print(f"export AWS_SESSION_TOKEN={sessionToken}")
       print(f"export AWS_REGION={region}")
       print()
       
       
       
   
   if __name__ == "__main__":
      main(sys.argv[1:])
   ```

1. 使用您创建的凭证替换 `<gateway_username>` 和 `<gateway_password>` 并在终端运行 **get\$1credentials.py**。

   ```
   python3 get_credentials.py -e https://$GATEWAY_HOSTNAME -c $PATH_TO_CERTIFICATE -u '<gateway_username>' -p '<gateway_password>' -m 'linux'
   ```

------
#### [ curl ]

**注意**  
您需要安装 [curl](https://ec.haxx.se/install/)。

**获取 curl 使用凭证**

1. 使用您创建的凭证替换 <gateway\$1username> 和 <gateway\$1password> 并在终端运行命令。

   ```
   curl --cacert $PATH_TO_CERTIFICATE --location \
   -X POST https://$GATEWAY_HOSTNAME:443/authenticate \
   --header 'Content-Type: application/json' \
   --data-raw '{
       "username": "<gateway_username>",
       "password": "<gateway_password>",
       "authMechanism": "linux"
   }'
   ```

   该响应应当与以下内容相似：

   ```
   {
       "username": "sweuser",
       "accessKeyId": "<accessKeyId>",
       "secretAccessKey": "<secretAccessKey>",
       "sessionToken": "<sessionToken>",
       "sessionExpiryTime": "2022-11-17T04:51:40.927095Z",
       "authMechanism": "linux",
       "role": "edge-user"
   }
   ```

1. 从您的终端运行以下命令。

   ```
   export AWS_ACCESS_KEY_ID=<accessKeyId>
   export AWS_SECRET_ACCESS_KEY=<secretAccessKey>
   export AWS_SESSION_TOKEN=<sessionToken>
   export AWS_REGION=edge
   ```

------

## 第 4 步：获取 SiteWise Edge 网关上的资产模型列表


现在，您已拥有签名证书、 SiteWise Edge 网关主机名和 SiteWise Edge 网关的临时证书，您可以使用 `ListAssetModels` API 获取 SiteWise Edge 网关上的资产模型列表。

------
#### [ Python ]

**注意**  
你需要安装 [Python3](https://www.python.org/downloads/)、[Boto](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) 3。[BotoCore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html)

**使用 Python 获取资产模型列表**

1. 创建一个名为 **list\$1asset\$1model.py** 的文件，再将以下代码复制到其中。

   ```
   import json
   import boto3
   import botocore
   import os
   
   # create the client using the credentials
   client = boto3.client("iotsitewise", 
       endpoint_url= "https://"+ os.getenv("GATEWAY_HOSTNAME"),
       region_name=os.getenv("AWS_REGION"), 
       aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"), 
       aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"), 
       aws_session_token=os.getenv("AWS_SESSION_TOKEN"),
       verify=os.getenv("PATH_TO_CERTIFICATE"),
       config=botocore.config.Config(inject_host_prefix=False))
   
   # call the api using local credentials
   response = client.list_asset_models()
   print(response)
   ```

1. 从终端运行 **list\$1asset\$1model.py**。

   ```
   python3 list_asset_model.py
   ```

------
#### [ curl ]

**注意**  
您需要安装 [curl](https://ec.haxx.se/install/)。

**使用 curl 获取资产模型列表**

从终端运行以下命令。

```
curl \
  --request GET https://$GATEWAY_HOSTNAME:443/asset-models \
  --cacert $PATH_TO_CERTIFICATE \
  --aws-sigv4 "aws:amz:edge:iotsitewise" \
  --user "$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY" \
  -H "x-amz-security-token:$AWS_SESSION_TOKEN"
```

该响应应当与以下内容相似：

```
{
    "assetModelSummaries": [
        {
            "arn": "arn:aws:iotsitewise:{region}:{account-id}:asset-model/{asset-model-id}",
            "creationDate": 1.669245291E9,
            "description": "This is a small example asset model",
            "id": "{asset-model-id}",
            "lastUpdateDate": 1.669249038E9,
            "name": "Some Metrics Model",
            "status": {
                "error": null,
                "state": "ACTIVE"
            }
        },
        .
        .
        .
    ],
    "nextToken": null
}
```

------

# 在上托管 SiteWise Edge 网关 Siemens Industrial Edge
在 Siemens Industrial Edge 上托管网关

使用 Edge 应用程序将您的网关托管在西门子工业 Amazon IoT SiteWise 边缘上。与之类似 Amazon IoT Greengrass V2，您可以使用 SiteWise Edge on 来优化制造流程或改善操作工作流程Siemens Industrial Edge。

通过在设备上运行 Edge 网关，您可以将来自西门子工业 SiteWise 边缘设备的数据提取到您的 Amazon 账户。为此，请向 Edge 支持团队申请 Amazon IoT SiteWise Ed SiteWise ge 应用程序的访问权限。然后，创建 SiteWise 边缘网关资源，部署目标为**西门子工业边缘设备（全新**）。接下来，下载配置文件，然后通过 Siemens Industrial Edge Management 门户将其上传到您的应用程序。有关在 Siemens Industrial Edge 上运行应用程序的更多信息，包括如何设置所需的 Siemens 资源，请参阅 Siemens 文档中的 [What is Industrial Edge?](https://docs.eu1.edge.siemens.cloud/)。

**注意**  
西门子不是 SiteWise Edge 的供应商或供应商。Siemens Industrial Edge 商城是一个独立的市场。

**Topics**
+ [

## 安全性
](#sa-security)
+ [

## Siemens Secure Storage和 Amazon IoT SiteWise Edge 应用程序
](#sa-secure-storage)
+ [

## Siemens Industrial Edge设备的目的地
](#siemens-destinations)
+ [

## 从预览版应用程序迁移
](#sa-migrate)
+ [

## 问题排查
](#sa-troubleshoot)
+ [

## Amazon IoT SiteWise Edge 应用程序更新日志
](#sa-changelog)
+ [

# Amazon IoT SiteWise 边缘应用程序的要求
](siemens-app-gateway-requirements.md)
+ [

# 为 Siemens Industrial Edge 创建网关
](sa-create-config.md)
+ [

# 为应用程序创建 Siemens Databus user
](sa-databus-user.md)
+ [

# 访问 Amazon IoT SiteWise Edge 应用程序
](sa-get-app.md)
+ [

# 将应用程序安装到Siemens设备上
](sa-install-app.md)
+ [

# 更新 Amazon IoT SiteWise Edge 应用程序配置
](sa-update-config.md)
+ [

# Amazon IoT SiteWise — 使用此服务生成的数据
](sa-data-legal.md)

## 安全性


作为我们的客户和合作伙伴之间[Amazon责任共担模式](https://www.amazonaws.cn/compliance/shared-responsibility-model/)的一部分，以下内容描述了谁对安全的不同方面负责：

**客户责任**  
+ 审查合作伙伴。
+ 配置授予合作伙伴的网络访问权限。
+ 对运行 SiteWise Edge 的设备进行物理保护。

**Amazon 责任**  
+ 将合作伙伴与客户的 Amazon 云资源隔离开来。

**合作伙伴的责任**  
+ 使用安全的默认值。
+ 通过补丁和其他适当更新确保解决方案随着时间的推移而保持安全。
+ 对客户数据保密。
+ 审查合作伙伴市场上可用的其他应用程序。

## Siemens Secure Storage和 Amazon IoT SiteWise Edge 应用程序


为了保护运行 Amazon IoT SiteWise Edge 应用程序所需的凭据和机密，Siemens Industrial Edge提供了在设备上安全存储凭据的机制。如果 Amazon IoT SiteWise Edge 应用程序不支持安全存储这些凭证，则该应用程序将无法在设备上运行。由于缺少安全存储支持而导致的运行失败会被记录在日志文件中。

安装和运行 E Amazon IoT SiteWise dge 应用程序需要以下最低操作系统版本。将您的设备升级到最新版本以安装该应用程序。
+ **对于虚拟设备：**IEVD 版本 1.19 或更高版本
+ **对于物理设备：**IED-OS 版本 2.2 或更高版本

 在升级设备之前，开启的 Amazon IoT SiteWise Edge 应用程序Siemens Industrial Edge将无法运行。

## Siemens Industrial Edge设备的目的地


在上使用 Amazon IoT SiteWise Edge 应用程序时Siemens Industrial Edge，目的地会帮助准备数据，然后再将其发送到以 Amazon IoT SiteWise 供进一步分析和分发。您可以使用 Amazon S3 或使用实时数据提取配置缓冲数据摄取的数据目标设置。两者都允许您使用Siemens Industrial Edge设备部署目标上的路径过滤器订阅 MQTT 主题。

网关上的Siemens Industrial Edge部署目标支持两种主要的数据处理方法：
+ **Amazon IoT SiteWise 实时设置**-数据在收集 Amazon IoT SiteWise 时直接发送到
+ **Amazon IoT SiteWise 使用 Amazon S3 设置进行缓冲**-数据在发送到 Amazon S3 之前会分批临时收集和存储

有关配置这些选项的更多信息，请参见[使用 Amazon S3 添加 Amazon IoT SiteWise 缓冲目的地](destinations-buffered.md)和[添加 Amazon IoT SiteWise Edge 实时目的地](destinations-real-time.md)。

### 路径过滤器的前缀


使用Siemens Industrial Edge部署目标的网关路径筛选器将主题和数据流名称结合起来，为您的数据创建唯一标识符。带有数据流名称的组合主题在Siemens Industrial Edge网关中被称为**前缀**。这与自托管网关不同，在自托管网关中，路径过滤器仅基于 MQTT 主题。

**Example 西门子数据流的路径过滤器结构**  
西门子数据流的典型路径过滤器包括主题路径和数据流名称：  

```
ie/d/device1/application1/datastream1
```
其中：  
+ `ie/d/`是西门子数据流所需的前缀
+ `device1/application1`表示分层路径
+ `datastream1`是特定的数据流名称

**注意**  
处理Siemens Industrial Edge数据流时，请确保在路径筛选器中同时包含元数据 (`ie/m/``ie/d/`) 和数据 () 主题，以接收有关数据流的完整信息。

#### 目的地和路径过滤器


查看以下主题，详细了解启用 MQTT 的网关中的目的地和路径过滤器：
+ [了解 Amazon IoT SiteWise 边缘目的地](gw-destinations.md#source-destination)
+ [添加 Amazon IoT SiteWise Edge 实时目的地](destinations-real-time.md)
+ [使用 Amazon S3 添加 Amazon IoT SiteWise 缓冲目的地](destinations-buffered.md)
+ [了解 Amazon IoT SiteWise Edge 目标的路径过滤器了解路径筛选条件](gw-destinations.md#destinations-path-filters)
+ [向 Amazon IoT SiteWise Edge 目标添加路径过滤器](destinations-add-path-filters.md)
+ [管理 Amazon IoT SiteWise 边缘目的地](destinations-manage.md)

## 从预览版应用程序迁移


如果您Siemens Industrial Edge在预览阶段运行了 SiteWise Edge，则需要从预览版 1.0.1 升级到最新版本。按照以下步骤进行迁移：

1. 创建新的 SiteWise 边缘网关。有关更多信息，请参阅 [为 Siemens Industrial Edge 创建网关](sa-create-config.md)。

1. 为每个新网关创建一个新 Siemens Databus user。有关更多信息，请参阅 [为应用程序创建 Siemens Databus user](sa-databus-user.md)。

1. 在 IED 上卸载 1.0.1 版 Amazon IoT SiteWise 边缘网关应用程序。
**注意**  
在重新配置 E Amazon IoT SiteWise dge 应用程序预览版之前使用的 Amazon IoT SiteWise 资产时，为数据流中断做好准备。在保留数据历史记录的同时，重新安装新网关时可能会导致数据丢失。

1. 在中删除您在预览期间创建的 SiteWise Edge 网关[Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/home?region=us-east-1#/gateway)。

1. 使用新的网关配置文件在 I Amazon IoT SiteWise ED 上安装 Edge 网关应用程序。有关更多信息，请参阅 [将应用程序安装到Siemens设备上](sa-install-app.md)。
**重要**  
安装新网关会覆盖 SiteWise Edge 应用程序的预览版。安装当前版本后，无法返回到 1.0.1 版。

配置新网关和 Siemens Databus user 后，您的数据将流向您的属性。

您也可以直接从版本升级 SiteWise Edge 应用程序。但是，仍然需要新的网关配置。

## 问题排查


要对Siemens Industrial Edge设备上的 SiteWise Edge 网关进行故障排除，请参阅[对 Amazon IoT SiteWise Edge 应用程序进行故障排除 Siemens Industrial Edge](troubleshooting-gateway.md#troubleshoot-siemens-app)。

您也可以访问 [Amazon re:Post](https://repost.aws) 来查找问题的答案。

## Amazon IoT SiteWise Edge 应用程序更新日志


下表描述了每个版本的 Amazon IoT SiteWise Edge 应用程序中的更改。


|  **版本**  |  **更改**  | 
| --- | --- | 
| 3.0.1 |  错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/sitewise-edge-on-siemens.html)  | 
| 3.0.0 |  新特征 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/sitewise-edge-on-siemens.html) 错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/sitewise-edge-on-siemens.html)  | 
| 2.0.1 |  错误修复和改进 [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/sitewise-edge-on-siemens.html) | 
|  2.0.0  |  [\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/sitewise-edge-on-siemens.html)  | 
|  1.0.1  |  初始版本  | 

# Amazon IoT SiteWise 边缘应用程序的要求
要求

要在上面运行 Amazon IoT SiteWise EdgeSiemens Industrial Edge，你需要以下内容：
+ 一个 [Siemens Digital Exchange 平台](https://www.dex.siemens.com/)账户。
+ 一个 Siemens Industrial Edge Hub（iehub）账户。
+  一个 Siemens Industrial Edge Management 实例。
  + IE 应用程序配置服务。要了解更多信息，请参阅 *Siemens Industrial Edge Management* 文档中的[https://docs.eu1.edge.siemens.cloud/get_started_and_operate/industrial_edge_management/how_to_setup_operate/vm/operation/app_projects/app_configurations/ie_application_configuration_service/installing_the_ie_acs_manually.html](https://docs.eu1.edge.siemens.cloud/get_started_and_operate/industrial_edge_management/how_to_setup_operate/vm/operation/app_projects/app_configurations/ie_application_configuration_service/installing_the_ie_acs_manually.html)。
+ 访问 Amazon IoT SiteWise Edge 应用程序的 2.0.1 或更高版本。有关更多信息，请参阅 [访问 Amazon IoT SiteWise Edge 应用程序](sa-get-app.md)。
+ Siemens Industrial Edge Device（IED）或 Siemens Industrial Edge Virtual Device（IEVD）。
  + 至少 15 GB 的磁盘空间，以满足硬件要求。
  + 1 GB 内存和额外 1 GB 的交换内存。
  + 设备配置以支持端口 443 和 8883 的出站流量。
  + x86-64 位处理器。
  + Siemens Industrial Edge Management 版本 1.13.10 或更高版本。
  + 设备符合 Siemens Secure Storage 要求。
    + 在虚拟设备上，使用 IEVD 版本 1.19 或更高版本。
    + 在物理设备上，使用 IED-OS 版本 2.2 或更高版本。
  + 最新版本的 Docker Compose。
  + Docker Engine 版本 18.091 或更高版本。
+ 必需的域访问权限。有关更多信息，请参阅 [Amazon IoT SiteWise 端点](endpoints-and-quotas.md#endpoints)。

# 为 Siemens Industrial Edge 创建网关
创建网关

拥有适当的西门子帐户和 IEM 实例后，您可以创建部署类型为**西门子工业 SiteWise 边缘设备的边缘**网关。

**注意**  
请确保您满足在 Siemens Industrial Edge Management 上运行设备的所有要求。有关更多信息，请参阅 [Amazon IoT SiteWise 边缘应用程序的要求](siemens-app-gateway-requirements.md)。

**要创建配置文件，请执行以下步骤：**

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

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

1. 选择**创建网关**。

1. 对于**部署类型**，请选择**西门子工业边缘设备**。

1. 输入 E SiteWise dge 网关的名称或使用生成的名称 Amazon IoT SiteWise。

1. （可选）在**高级配置**下，执行以下操作：

   1. 输入 Amazon IoT Core 事物的名称或使用生成的名称 Amazon IoT SiteWise。

1. 选择**创建网关**。

1. 在**生成 SiteWise Edge 网关配置文件**对话框中，选择**生成并下载**。 Amazon IoT SiteWise 自动生成用于配置 Amazon IoT SiteWise Edge 应用程序的配置文件。
**重要**  
保留网关配置文件作为备份，以备需要恢复 Amazon IoT SiteWise Edge 应用程序实例时使用。[Amazon Secrets Manager](https://docs.amazonaws.cn/secretsmanager/latest/userguide/intro.html)为此，您可以安全地将 SiteWise Edge 网关配置文件保存在中。Secrets Manager 可以安全地存储、管理和检索敏感信息。如果您放错位置或删除了此配置文件，则在需要恢复时，将无法将 Amazon IoT SiteWise Edge 应用程序实例重新连接到其原始网关。您需要同时创建新的网关和新的配置文件。

# 为应用程序创建 Siemens Databus user
创建 Siemens Databus user

Amazon IoT SiteWise Ed Siemens Industrial Edge ge on 从Siemens Databus应用程序中提取数据。要将 SiteWise Edge 连接到Siemens Databus，您需要一个Siemens Databus user能够访问要安全传输到的数据的访问权限 Amazon IoT SiteWise。首先，创建一个，Siemens Databus user然后向 SiteWise Edge 应用程序提供证书。

**要创建 Siemens Databus user，请执行以下步骤：**

1. 在您的 Siemens Industrial Edge Management 实例中，在**平台应用程序**部分中选择**边缘管理**。

1. 选择**数据连接**图标。

1. 选择 **Databus**。此时，系统会显示已连接设备列表。

1. 选择要连接到 Amazon IoT SiteWise Edge 应用程序的设备。

1. 选择**启动**。此时，系统将显示适用于您所选设备的 Databus Configurator。

1. 在**用户**下为您的 Edge 设备创建用户。有关创建用户的更多信息，请参阅 *Siemens 工业边缘管理*文档中的[用户](https://docs.eu1.edge.siemens.cloud/get_started_and_operate/industrial_edge_management/operation/iam/03_user-management.html)。

1. 选择此 Siemens Databus 应有权访问的主题。这些主题限制了 Amazon IoT SiteWise Edge 可以访问的内容。
**重要**  
Siemens Databus user有权访问的所有主题都已发布到 Amazon IoT SiteWise。
**注意**  
Siemens Databus user需要访问数据和元数据主题。以 `ie/d` 开头的主题是数据主题。以 `ie/m` 开头的主题是元数据主题。成对共享主题，这样 SiteWise Edge 就可以访问每个相应主题的数据和元数据。  

![\[显示 Siemens 主题类型的屏幕截图。图像分别圈出文件路径中以 “ie/d" and "ie/m,” 开头的部分。\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-sa-topics.png)


1. 为您的 Siemens Databus 配置设置适当的权限。

创建Siemens Databus配置后，您可以在上安装 Amazon IoT SiteWise Edge 应用程序Siemens Industrial Edge Management。有关更多信息，请参阅 [将应用程序安装到Siemens设备上](sa-install-app.md)。

您也可以选择为Siemens Industrial Edge网关配置目的地和路径过滤器。有关更多信息，请参阅 [目的地和路径过滤器](gw-destinations.md)。

# 访问 Amazon IoT SiteWise Edge 应用程序
访问应用程序

要访问上的 Amazon IoT SiteWise Edge 应用程序Siemens Industrial Edge，请[发送一封电子邮件](mailto:aws-iot-swe-siemens-app-support@amazon.com?subject=Access request for SiteWise Edge on Siemens Industrial Edge)请求访问 SiteWise Edge 支持团队。

在您的电子邮件中，请包含以下信息：
+ 您的姓名和联系信息
+ 公司名称
+ Siemens Industrial Edge 租户 ID

# 将应用程序安装到Siemens设备上
安装应用程序

通过向 Amazon IoT SiteWise Edge 支持团队发送电子邮件获得 E SiteWise dge 应用程序的访问权限后Siemens Industrial Edge，将该应用程序分配给的Siemens Industrial Edge Management实例。然后，您可以在设备上安装 Amazon IoT SiteWise Edge 应用程序。

**安装 Ed Amazon IoT SiteWise ge 应用程序**

1. 验证中提供的Docker摘要是否与中列出的最新版本Siemens Industrial Edge Management相匹配[Amazon IoT SiteWise Edge 应用程序更新日志](sitewise-edge-on-siemens.md#sa-changelog)。

   有关查找 Siemens Docker 摘要值的更多信息，请参阅Siemens文档中的 “在*Siemens Industrial Edge设备*中[管理应用程序](https://docs.eu1.edge.siemens.cloud/get_started_and_operate/industrial_edge_device/operation/management.html#managing-an-app)”。

   Siemens Industrial Edge Management一次支持一个版本的 Amazon IoT SiteWise Edge 应用程序。在Siemens Industrial Edge设备上安装 Amazon IoT SiteWise Edge 应用程序之前，请执行此步骤以确保您使用的是最新版本的应用程序。

1. 将 **Amazon IoT SiteWise Edge** 应用程序分配给 Siemens Industrial Edge Management。有关更多信息，请参阅 Siemens 文档“Industrial Edge Management”**部分的 [Managing an app](https://docs.eu1.edge.siemens.cloud/get_started_and_operate/industrial_edge_management/how_to_setup_operate/vm/operation/my_installed_apps/managing_an_app.html)。

1. 在**边缘管理**中，浏览 **Amazon IoT SiteWise Edge** 的目录并选择它。

1. 选择**安装**。
**注意**  
如果显示 “**联系我们**” 按钮，请选择该按钮，然后按照步骤请求访问 Amazon IoT SiteWise Edge 应用程序Siemens Industrial Edge。有关更多信息，请参阅 [访问 Amazon IoT SiteWise Edge 应用程序](sa-get-app.md)。

1. 在“架构配置”选项中选择 **Databus\$1Configuration**。

1. 为 Databus 配置输入**用户名**和**密码**。有关创建 Siemens Databus user 的更多信息，请参阅 [为应用程序创建 Siemens Databus user](sa-databus-user.md)。

1. 选择 **Databus\$1Configuration** 旁边的灰色圆形小对勾图标，将图标变为绿色。
**注意**  
仅当对勾图标从灰色变为绿色时，输入配置才适用。否则，输入配置将被忽略。  
![\[Siemens Databus Configurator 屏幕的截图，显示未完成的过程，其中带有灰色对勾圆圈图标。\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-sa-gray-checkmark.png)  
![\[Siemens Databus Configurator 屏幕的截图，显示已完成的过程，其中带有绿色对勾圆圈图标。\]](http://docs.amazonaws.cn/iot-sitewise/latest/userguide/images/gateway-sa-green-checkmark.png)

1. 选择**下一步**转到**其他配置**，您可以在其中上传网关配置文件。

1. 选择 **SiteWise\$1Edge\$1Gateway\$1Config 作为上传网关配置文件**的位置。
**注意**  
**确保选择 **SiteWise\$1Edge\$1Gateway\$1Config 而不是 \$1Edge\$1Support\$1Config\$1Config\$1Opti** onal SiteWise**

1. 选择要安装该应用程序的设备。

1. 选择**立即安装**。

您可以选择将发布者组件配置为将数据导出到 Amazon 云端。有关更多信息，请参阅 [configure the Amazon IoT SiteWise publisher component](configure-publisher-component.md)。

要为Siemens Industrial Edge网关配置目的地，请参阅[目的地和路径过滤器](gw-destinations.md)。

# 更新 Amazon IoT SiteWise Edge 应用程序配置
更新已安装的应用程序配置

在上更新 Amazon IoT SiteWise Edge 应用程序配置时，需要考虑一些事项**Siemens Industrial Edge**。

**注意**  
对 Amazon IoT SiteWise Edge 应用程序配置的任何更改都需要重新启动应用程序。

**重新启动 E Amazon IoT SiteWise dge 应用程序的原因**
+  Amazon IoT SiteWise Edge 应用程序的新增Siemens Databus user功能。
+ 对网关配置文件（您的 **SiteWise\$1Edge\$1Gateway\$1Config** 文件）的更改。
+ 代理配置更新（还需要完全重启 IEVD）
+ 要为调试问题启用调试日志，请执行以下步骤：

## 重新启动应用程序


1. 在您的 Siemens Industrial Edge Management 实例中，在**平台应用程序**部分中选择**边缘管理**。

1. 选择**我安装的应用程序**。

1. 选择 Amazon IoT SiteWise Edge 应用程序。

1. 选择**重新启动**。

# Amazon IoT SiteWise — 使用此服务生成的数据
使用此服务生成的数据

Amazon IoT SiteWise on Siemens Industrial Edge 将云功能扩展到工业边缘环境，支持本地数据处理、分析和决策。 SiteWise Edge 与其他 Amazon 服务集成，提供全面的工业 Amazon IoT 解决方案。 Amazon IoT SiteWise 

数据类型  
SiteWise Siemens Industrial Edge 上的边缘应用程序生成有关应用程序性能、使用情况以及与其他 Amazon 服务（特别是 Amazon S3）交互的数据。

数据量和收集  
生成的数据量因您使用应用程序和服务的方式而异。

数据存储  
您的应用程序中的数据安全地存储在 Amazon 服务器上。它以机器可读的格式存储。

数据访问  
您可以通过您的 Amazon 帐户访问您的数据。您可以按照本用户指南 [SiteWise Edge on Siemens](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/sitewise-edge-on-siemens.html) 中列出的说明下载数据副本。要获取应用程序的配置数据，您可以按照本用户指南 “[查询工业数据](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/query-industrial-data.html)” 中的说明进行操作。有关批量数据访问和导出的更多说明，请参阅[运行批量操作导出](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/running-bulk-operations-export.html)。

数据管理  
要详细了解您的应用程序的数据实践，请查看我们的[服务条款](https://www.amazonaws.cn/service-terms/)、[隐私声明](https://www.amazonaws.cn/privacy/)和[服务文档](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/what-is-sitewise.html)，其中包括有关如何管理数据的材料。

数据删除  
有关数据保留和删除选项的信息，请访问用户指南中的以下页面：[管理数据存储](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/manage-data-storage.html)、[删除数据流](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/delete-data-streams-method.html)以及[删除模型和资产](https://docs.amazonaws.cn/iot-sitewise/latest/userguide/delete-assets-and-models.html)。

与他人共享数据  
您可以通过我们的[身份和访问管理流程授权第三方访问](https://docs.amazonaws.cn/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)您的 Amazon 资源。 Amazon 在[Amazon 隐私声明](https://www.amazonaws.cn/privacy/)中包含的有限情况下，与第三方共享个人数据。

需要帮助吗？  
请访问 C [ust](https://www.amazonaws.cn/contact-us/) omer Support 联系我们的支持团队。这不影响您根据适用法律提出投诉的权利。

数据持有者  
Amazon Web Services EMEA SARL，约翰·肯尼迪大道 38 号，L-1855，卢森堡

# 目的地和路径过滤器


 Amazon IoT SiteWise Edge 中的目的地提供了一种灵活高效的方式来管理工业数据如何从边缘设备流向云端。本节介绍如何配置目的地、使用路径过滤器路由特定的数据流，以及如何为您的用例选择正确的目标类型。

您可以在支持 MQTT 的自托管、V3 网关和与托管的 Amazon IoT SiteWise Edge 应用程序一起使用的网关上使用目的地和路径过滤器。Siemens Industrial Edge目标和路径过滤器不适用于 Classic Streams、V2 网关。

**Topics**
+ [

## 了解 Amazon IoT SiteWise 边缘目的地
](#source-destination)
+ [

## 了解 Amazon IoT SiteWise Edge 目标的路径过滤器
](#destinations-path-filters)
+ [

# 添加 Amazon IoT SiteWise Edge 实时目的地
](destinations-real-time.md)
+ [

# 使用 Amazon S3 添加 Amazon IoT SiteWise 缓冲目的地
](destinations-buffered.md)
+ [

# 向 Amazon IoT SiteWise Edge 目标添加路径过滤器
](destinations-add-path-filters.md)
+ [

# 管理 Amazon IoT SiteWise 边缘目的地
](destinations-manage.md)

## 了解 Amazon IoT SiteWise 边缘目的地
了解目的地

使用 Amazon IoT SiteWise Edge 目的地来确定将源数据发送到何处。您可以根据所需的特定特征来选择数据目的地，例如成本效益、低延迟或存储要求。集成我们的合作伙伴或自定义应用程序捕获 Amazon IoT SiteWise的设备数据，以便在边缘发布和订阅路径过滤器（主题）。然后，您可以在云端对设备数据进行建模、传输和存储。

**注意**  
要充分使用自托管网关上的所有目标功能，请升级到最新版本的 IoT SiteWise 发布者和 IoT SiteWise OPC UA 收集器。Classic Streams、V2 网关继续支持直播，以保持与现有设置的兼容性。有关更多信息，请参阅 [经典直播，适用 Amazon IoT SiteWise 于 Edge 的 V2 网关](classic-streams-v2-gateway.md)。

**Topics**
+ [

### SiteWise 边缘目的地如何增强数据管理
](#how-destinations-work)
+ [

### 目标类型
](#destination-types)
+ [

### 比较网关版本之间的目标功能
](#destinations-vs-publisher-component)
+ [

### 目的地限制
](#destinations-limitiations)
+ [

### SiteWise 边缘目的地的用例
](#destinations-use-cases)

### SiteWise 边缘目的地如何增强数据管理


使用 Amazon S3 将 Amazon IoT SiteWise 数据从边缘实时导出或批量导出。

目的地可增强您 Amazon IoT SiteWise 环境的灵活性和可扩展性。目的地实施集中式数据管理模型，即数据源将数据发布到中央系统。目的地使用路径筛选器确定您的数据发送到哪里。目的地可以订阅多个路径过滤器。

支持 MQTT 的网关，无论是自托管的还是运行在上面的网关Siemens Industrial Edge，都使用 MQTT 进行本地通信，并带有默认的实时目的地，过滤器设置为。`#`这意味着，默认情况下，所有主题的所有消息都将发布到 Amazon IoT SiteWise 实时目的地。有关更多信息，请参阅 [了解 Amazon IoT SiteWise Edge 目标的路径过滤器了解路径筛选条件](#destinations-path-filters)。您可以在每个网关中添加一个实时目的地。

### 目标类型


为网关配置目标时，您有两个主要选项：使用实时配置和使用 Amazon IoT SiteWise Amazon S3 进行缓冲配置。每种目的地类型都有自己的一组设置和注意事项。

**Amazon IoT SiteWise 实时设置**  
选择此选项可将数据直接发送到 Amazon IoT SiteWise 热层存储，从而便于实时摄取和监控数据。实时设置管理数据流，尤其是在网关遇到云连接问题时。在连接丢失期间，数据会临时存储在网关本地。重新建立连接后，存储的数据将自动发送到云端。  
您可以调整数据发布过程的各个方面，例如要在本地存储的最大数据量、重新连接时向云端发送数据的速率以及在存储空间达到其容量后何时删除数据。  
有关 Amazon IoT SiteWise 存储层的更多信息，请参阅[管理中的数据存储 Amazon IoT SiteWise](manage-data-storage.md)。

**Amazon IoT SiteWise 使用 Amazon S3 设置进行缓冲**  
此目标类型允许您在网关上本地缓冲数据，并定期将其分批发送到 Amazon S3 存储桶。数据以高效的 Parquet 格式存储，该格式已针对分析工作负载进行了优化。数据存入 Amazon S3 后，您可以将其导入 Amazon IoT SiteWise 以进行存储、处理和分析。  
选择此选项可批量摄取数据，并以经济高效的方式存储历史数据。您可以配置您的首选 Amazon S3 存储桶位置，以及您希望将数据上传到 Amazon S3 的频率。您还可以选择在将数据摄取到 Amazon IoT SiteWise后如何处理数据。您可以选择同时在 Amazon S3 SiteWise 和 Amazon S3 中提供数据，也可以选择自动将其从 Amazon S3 中删除。

### 比较网关版本之间的目标功能


支持 MQTT 的网关中的目的地功能简化了数据流管理。目的地通过集中配置到各个端点的数据路由来简化数据管理。这种方法消除了对复杂的单个直播设置的需求，使整个系统更加灵活且更易于管理。

相比之下，Classic Streams、V2 网关、 SiteWise Edge 通过 Amazon IoT Greengrass 流将数据从数据源传输到发布者，为每个数据源单独配置数据目的地。

使用 Amazon IoT SiteWise 目标功能，可以整合发布者路由配置。目标配置允许您以集中方式管理目的地和路径过滤器。您可以根据需要轻松添加目的地、管理路径过滤器、删除不必要的过滤器或目的地。

此外，目标功能利用了 MQTT（消息队列遥测传输），这是一种广泛用于工业物联网应用的行业标准协议。采用 MQTT Amazon IoT SiteWise 有助于更轻松地与各种设备和系统集成。

### 目的地限制
限制

目前 SiteWise Edge 网关上目的地的限制包括：
+ 支持 MQTT 的网关不支持数据处理包。
+ 数据类型支持仅限于 Amazon IoT SiteWise 数据类型。有关启用数据类型转换的信息，请参阅[转换不支持的数据类型](string-conversion.md)。

### SiteWise 边缘目的地的用例
使用案例

SiteWise 边缘目的地用于各种应用程序。以下是一些关键示例：

**工业自动化***实时监控和预测性维护*  
在工业环境中，工厂车间的传感器和设备可以将数据发布到 SiteWise Edge。可以将目的地配置为筛选和路由相关数据，从而实现对机器性能的实时监控和分析。您可以使用路径过滤器订阅相关的 MQTT 主题，处理数据，然后发布处理后的数据。通过这种方式，您可以有选择地将处理过的数据路由到 Amazon 云分析服务或本地系统。然后，制造商可以实施预测性维护策略，优化生产流程并减少停机时间。

**智能建筑***能源效率和占用率优化*  
楼宇自动化系统生成数据流，用于监视和控制建筑物的各个方面，例如暖通空调系统、照明和门禁控制。借 SiteWise 助 Edge，可以摄取、处理这些数据流并将其路由到不同的目的地。设施经理可以配置目的地以筛选和转发相关数据，从而实现能源效率措施和占用优化等高级功能，同时确保数据隐私和合规性。

这些用例演示了如何在各行各业中利用 SiteWise Edge 中的 “目的地” 功能来高效地摄取、处理和路由数据。这可以实现实时监控、预测性维护、能源效率和远程诊断等高级功能，同时确保数据隐私和合规性。

## 了解 Amazon IoT SiteWise Edge 目标的路径过滤器
了解路径筛选条件

**Topics**
+ [

### 路径过滤器要求
](#path-filter-requirements)
+ [

### 路径过滤器的最佳实践
](#create-effective-path-filters)
+ [

### OPC UA 服务器的路径过滤器
](#path-filters-opcua)
+ [

### 路径过滤器名称中的特殊字符
](#path-filters-special-characters)

每个目标都配置为将数据路由到 Amazon IoT SiteWise 或 Amazon S3。路径过滤器允许您在接收目的地的 MQTT 消息时选择要筛选的特定数据。路径过滤器代表数据流的逻辑名称，充当对所需 MQTT 主题的订阅。

在 MQTT 中，数据被组织成主题，这些主题是由正斜杠 () `/` 分隔的分层字符串。例如，设备可能会向主题发布温度数据`home/livingroom/sensor1/temperature`。这里，`home/livingroom/sensor1`表示传感器的路径或逻辑名称，`temperature`也是要发布的数据类型。

您可以使用路径过滤器通过通配符（`+`和`#`）订阅特定主题或一系列主题。通`+`配符匹配主题层次结构中的单个级别。例如，`home/+/sensor1/temperature`将匹配`home/livingroom/sensor1/temperature`和`home/bedroom/sensor1/temperature`。当在过滤器的末尾使用`#`通配符时，可以匹配多个级别。

您还可以在路径过滤器名称中使用 MQTT 规范中通常不允许使用的各种字符。这些字符在名称中使用时不起通配符的作用。 Amazon IoT SiteWise 使用编码转换这些字符，以确保 MQTT 合规性，同时保留原始命名结构。此功能对于适应其他系统的现有命名约定特别有用。有关更多信息，请参阅 [路径过滤器名称中的特殊字符](#path-filters-special-characters)。

通过仔细选择适当的路径过滤器，您可以控制将哪些数据发送到特定目的地。使用路径筛选器根据物联网系统的要求定制数据流。

### 路径过滤器要求


使用输入路径过滤器时 Amazon IoT SiteWise 控制台，请记住以下几点：
+ 路径过滤器由新行分隔，每行代表一个单独的路径过滤器。
+ 单个路径过滤器的字节可以介于 1 到 65,535 之间。
+ 路径过滤器不能为空。
+ 不允许使用空值 (U\$10000)。
+ 一次最多可以输入 100 个路径过滤器或 65,535 个字符，以先达到的限制为准。
+ 网关上所有目的地的总路径过滤器限制为 20,000 个。
+ 您可以在路径过滤器名称中使用`%``#``+`、、和`$`字符，但是它们 Amazon IoT SiteWise 会自动转换为 URI 编码。

### 路径过滤器的最佳实践


在为 Amazon IoT SiteWise 目的地创建路径筛选器时，请考虑以下策略来有效管理数据。
+ 构造过滤器以反映您的设备层次结构。例如，在制造环境中`factory/+/machine/#`，捕获来自不同生产线的所有机器的数据。
+ 对设备类型、位置或功能使用特定的级别。例如 `factory/assembly-line/robot/temperature`。或者，在智能农业中`farm/+/crop/+/moisture`，监测不同田地上各种作物的水分含量。
+ 策略性地利用通配符：`+`用于单个关卡的变体`#`并捕获所有后续关卡。例如`building/+/+/energy-consumption`，跟踪建筑物中不同区域和楼层的能源使用情况。这假设第一个`+`捕获所有楼层，第二个`+`捕获所有区域。
+ 通过创建足够具体的筛选器来平衡特异性和灵活性，这些筛选器既要足够具体，可以捕获相关数据，又要足够灵活，可以适应未来的变化。例如，`site/+/equipment-type/+/measurement`允许在不更改过滤器结构的情况下添加新的场地或设备类型。

彻底测试您的过滤器，确保它们捕获预期的数据并与您的物联网系统的架构和目标保持一致。

### OPC UA 服务器的路径过滤器


对于 OPC UA 服务器，您的路径筛选器必须与 OPC UA 标签名称相对应。路径过滤器的最终级别必须与 OPC UA 标签名称完全匹配。例如，如果您的 OPC UA 标签为`Device1.Temperature`，则路径过滤器可能`factory/line1/Device1.Temperature`是。您可以在前面的关卡中使用通配符，例如`factory/+/Device1.Temperature`在多条生产线上捕获标签。如果您的路径筛选器名称中有特殊字符，[路径过滤器名称中的特殊字符](#path-filters-special-characters)请参见以获取更多信息。

### 路径过滤器名称中的特殊字符


Amazon IoT SiteWise 可容纳 OPC UA 等工业协议中常用的字符，而标准 MQTT 主题名称中通常不允许使用这些字符。此功能有助于更顺畅地将工业系统与基于 MQTT 的架构集成。

**注意**  
虽然我们的特殊字符处理有助于集成和迁移，但建议尽可能与新实现的标准 MQTT 命名约定保持一致，以确保更广泛的兼容性。

从工业来源接收数据时，使用特殊字符的 URI 编码对主题名称进行 Amazon IoT SiteWise 标准化：
+ `%`变成`%25`（首先编码为转义字符）
+ `#` 变为 `%23`
+ `+` 变为 `%2B`
+ `$`变成`%24`（仅在主题开头时）

这种编码可确保包含这些特殊 MQTT 字符的源数据可以安全地用作 MQTT 主题名称，同时保留原始的工业命名惯例。

**Example : 路径过滤器名称中的特殊字符**  
以下是工业主题名称在 Amazon IoT SiteWise 路径过滤器中可能如何显示的示例：  
+ `Factory1/Line#2/Sensor+3` 变为 `Factory1/Line%232/Sensor%2B3`
+ `Plant%A/Unit$1/Temp` 变为 `Plant%25A/Unit%241/Temp`
+ `Site1/#Section/+Node` 变为 `Site1/%23Section/%2BNode`

在中创建订阅或查看主题名称时 Amazon IoT SiteWise，您将看到未编码的原始版本。编码会自动处理，以确保 MQTT 合规性。

# 添加 Amazon IoT SiteWise Edge 实时目的地
添加实时目的地

实时目标类型使您能够将物联网数据直接从设备和网关实时流式传输到 Amazon IoT SiteWise 存储中。此选项非常适合需要在生成数据时立即摄取和处理数据，而无需进行批处理或缓冲的用例。您只能在每个网关中配置一个实时目的地，因为它会持续向其传输数据 Amazon IoT SiteWise。

**注意**  
重复 TQVs 可能会导致双重充电。

**添加实时目的地**

使用 Amazon IoT SiteWise 控制台或 Amazon CLI 向支持 SiteWise Edge MQTT 的网关添加实时目的地。

------
#### [ Console ]

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要向其添加目的地的网关。

1. 在 “**目的地**” 部分中，选择**添加目的地**。

1. 在**添加目的地**页面上，输入**目的地详细信息**：

   1. 目的地名称字段中的**目的地名称**。

   1. 为**目标类型**选择**Amazon IoT SiteWise 实时**。

1. 通过将发布顺序设置为 “先**发布**旧数据” 或 “先发布最新数据****” 来配置网关发布**顺**序。默认情况下，网关会先发布最旧的数据。

1. 使用**最大批处理等待时间**来设置发布者在向其发送批量数据之前等待的最长时间 Amazon IoT SiteWise。此设置适用于每个别名。数据存储在本地，直到：
   + 设定的时间已过，或者
   + 已收到别名的 10 个 time-quality-value (TQV) 条目

   无论先满足哪个条件，都会触发将批次发送到云端。

1. 要压缩上传的数据，请选中 “**上传数据时激活压缩**” 复选框。让网关在将您的数据上传到云端之前对其进行压缩，可以减少带宽使用量。

1. 要筛选出过期的发布者数据，请选中 “**排除过期数据**” 复选框。此选择仅向发送活动和当前数据 Amazon IoT SiteWise。

1. 在**截止时间段**字段中，输入数据集中应视为过期数据的频率。您可以确定数据是以分钟还是天为单位进行计数。最短截止时间为五分钟。最长截止期为七天。

1. （可选）配置**本地存储设置**：

   1. 设置**保留期**频率-网关在本地存储超过截止期限的数据的时间。最短保留期为一分钟。

      最长保留期为 30 天，且大于或等于轮换期。

   1. 设置**轮换周期**-保存超过单个文件截止时间段的数据时要指定的时间间隔。网关在每个轮换期结束时将一批数据传输到以下本地目录：`/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/exports`。

      保留时间必须大于一分钟，且等于保留期。

   1. 提供**存储容量 (GB)** 值以设置本地存储的最大数据大小（以 GB 为单位）。如果数据超过确定的最大本地存储大小，网关将首先开始删除最旧的数据。网关会继续删除，直到本地存储的数据大小等于或小于配额。

      存储容量必须大于或等于 1 GB。

1. 为您的目的地添加路径过滤器。有关更多信息，请参阅[向 Amazon IoT SiteWise Edge 目标添加路径过滤器](destinations-add-path-filters.md)。

有关更多信息，请参阅 [目标类型](gw-destinations.md#destination-types)。

------
#### [ Amazon CLI ]

**Example : 创建新的 Amazon IoT SiteWise 实时目的地**  
使用 [UpdateGatewayCapabilityConfiguration](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_UpdateGatewayCapabilityConfiguration.html)API 配置发布者。  
将 `capabilityNamespace` 参数设置为 `iotsitewise:publisher:3`。  

```
{
    "sources": [
        {
            "type": "MQTT"
        }
    ],
    "destinations": [
        {
            "type": "SITEWISE_REALTIME",
            "name": "your-destination-name",
            "config": {
                "publishingOrder": "TIME_ORDER",
                "enableCompression": true,
                "maxBatchWaitTime": "10s"
            },
            "filters": [
                {
                    "type": "PATH",
                    "config": {
                        "paths": [
                            "#"
                        ]
                    }
                }
            ]
        }
    ]
}
```

要更新现有的 Amazon IoT SiteWise 实时目的地，请先使用 `DescribeGatewayCapabilityConfiguration` API 查找`destinationId`。

**Example : 更新 Amazon IoT SiteWise 实时目的地**  
使用 [UpdateGatewayCapabilityConfiguration](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_UpdateGatewayCapabilityConfiguration.html)API 配置发布者。  
将 `capabilityNamespace` 参数设置为 `iotsitewise:publisher:3`。  

```
{
    "sources": [
        {
            "type": "MQTT"
        }
    ],
    "destinations": [
        {
            "id": "your-existing-destination-id",
            "type": "SITEWISE_REALTIME",
            "name": "your-destination-name",
            "config": {
                "publishingOrder": "TIME_ORDER",
                "enableCompression": true,
                "dropPolicy": {
                    "cutoffAge": "7d",
                    "exportPolicy": {
                        "retentionPeriod": "7d",
                        "rotationPeriod": "6h",
                        "exportSizeLimitGB": 10
                    }
                },
                "maxBatchWaitTime": "10s"
            },
            "filters": [
                {
                    "type": "PATH",
                    "config": {
                        "paths": [
                            "#"
                        ]
                    }
                }
            ]
        }
    ]
}
```

以下配置选项特定于使用`iotsitewise:publisher:3`命名空间的网关。

`sources`  
定义要将数据从工业设备传输到的数据源 Amazon IoT SiteWise。对于支持 MQTT 的网关，请使用。`MQTT`  
类型： 对象数组  
是否必需：是

`destinations`  
定义向何处发送数据。目的地要么是实时的，要么是使用 Amazon S3 进行缓冲的。至少需要一个目标对象，但你可以添加一个空数组。每个网关可以有一个实时目的地。有关更多信息，请参阅 [了解 Amazon IoT SiteWise 边缘目的地](gw-destinations.md#source-destination)。  
类型： 对象数组  
是否必需：是    
`id`  
目的地的唯一标识符。您可以提供现有的目的地 ID，也可以将其留空。如果您未指定 ID，则默认情况下会生成 UUID。  
类型：字符串  
必需：否  
`type`  
目标类型。选项包括：`SITEWISE_REALTIME`和`SITEWISE_BUFFERED`。  
+ `SITEWISE_REALTIME`— 实时将数据直接发送到 Amazon IoT SiteWise 存储器。
+ `SITEWISE_BUFFERED`— 以 Parquet 格式将数据批量发送到 Amazon S3，然后导入 Amazon IoT SiteWise 存储。
类型：字符串  
是否必需：是  
`name`  
目的地的唯一名称。  
类型：字符串  
是否必需：是  
`config`  
特定于目标类型的配置，采用 JSON 格式。配置因实时目的地和缓冲目的地而异。  
类型：对象  
是否必需：是    
发布顺序  
确定数据的发布顺序。数据根据其时间戳发布。选项包括`TIME_ORDER`和`RECENT_DATA`。  
+ `TIME_ORDER`（默认）-先发布较旧的数据。
+ `RECENT_DATA`— 首先发布最新数据。
类型：字符串  
必需：否  
启用压缩  
如果设置为`true`，则在将数据发送到之前启用数据压缩 Amazon IoT SiteWise。让网关在将您的数据上传到云端之前对其进行压缩，可以减少带宽使用量。默认值为 `true`。  
类型：布尔值  
必需：否  
丢弃政策  
定义如何处理较旧的数据。  
类型： 对象  
必需：否  
+ `cutoffAge`

  要发布的数据的最大期限，以天、小时和分钟为单位指定。例如，`7d` 或 `1d7h16m`。不会将早于您指定时间的数据发送到 Amazon IoT SiteWise。

  早于截止期的数据不会发布到云端。截止期必须介于 5 分钟到 7 天之间。

  当您指定截止期时，可以使用 `m`、`h` 和 `d`。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。

  类型：字符串

  是否必需：是
+ `exportPolicy`

  定义如何处理超过截止时间的数据。

  类型：对象

  必需：否
  + `retentionPeriod`

    您的 SiteWise Edge 网关在存储指定保留期后，会从本地存储中删除所有早于截止期限的数据。保留期必须介于 1 分钟到 30 天之间，且大于或等于轮换期。

    当您指定保留期时，可以使用 `m`、`h` 和 `d`。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。

    类型：字符串

    必需：否
  + `rotationPeriod`

    将早于截止期的数据进行批处理和保存至单个文件的时间间隔。 SiteWise Edge 网关在每个轮换周期结束时将一批数据传输到以下本地目录:`/greengrass/v2/work/aws.iot.SiteWiseEdgePublisher/exports`. 轮换期必须多于 1 分钟，且等于或小于保留期。

    当您指定轮换期时，可以使用 `m`、`h` 和 `d`。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。

    类型：字符串

    必需：否
  + `exportSizeLimitGB`

    允许存储在本地的数据最大以 GB 为单位。如果超过此配额， SiteWise Edge 网关会开始删除最早的数据，直到本地存储的数据大小等于或小于配额。该参数值必须大于或等于 1。

    类型：整数

    必需：否  
`maxBatchWaitTime`  
设置发布者在向其发送批量数据之前等待的最长时间 Amazon IoT SiteWise。此设置适用于每个别名。数据存储在本地，直到：  
+ 设定的时间已过，或者 
+ 已收到别名的 10 个 time-quality-value (TQV) 条目
使用`m``h`、和`d`来指定截止时间。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。  
类型：字符串  
必需：否

`filters`  
要应用于数据的筛选器。至少需要一个过滤器。  
类型：字符串  
是否必需：是    
`type`  
过滤器的类型。使用 `PATH`。  
类型：字符串  
是否必需：是  
`config`  
特定于过滤器类型的配置，采用 JSON 格式。至少需要一个对象，但数组可以为空。  
类型：对象  
是否必需：是  
+ `paths`

  路径过滤器数组。有关更多信息，请参阅 [了解 Amazon IoT SiteWise Edge 目标的路径过滤器了解路径筛选条件](gw-destinations.md#destinations-path-filters)。默认路径为 `#`。

  类型：字符串数组

  是否必需：是

------

# 使用 Amazon S3 添加 Amazon IoT SiteWise 缓冲目的地
使用 Amazon S3 添加缓冲目的地

 Amazon IoT SiteWise 如果您不需要实时数据，则缓冲目标类型允许您节省摄取成本。它允许您在将物联网数据导入 Amazon S3 存储桶之前将其临时存储在 Amazon S3 存储桶中 Amazon IoT SiteWise。或者，无论您是否计划将其导入，您都可以简单地将数据上传到 S3 进行存储 Amazon IoT SiteWise。这对于在将设备和网关的数据摄取到之前对其进行批处理和缓冲非常有用。 Amazon IoT SiteWise使用此选项，数据将以配置的频率以 Parquet 格式上传到指定的 S3 存储桶。然后，您可以将这些数据导入 Amazon IoT SiteWise 存储器以进行进一步的分析和处理。

**添加使用 Amazon S3 缓冲的目标**

使用 Amazon IoT SiteWise 控制台或 Amazon CLI 将使用 Amazon S3 缓冲数据的目标添加到您的 SiteWise Edge 网关。

------
#### [ Console ]

使用 Amazon Web Services 管理控制台 添加使用 Amazon S3 缓冲的 Amazon IoT SiteWise 目标。

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要向其添加目的地的网关。

1. 在 “**目的地**” 部分中，选择**添加目的地**。

1. 在**添加目的地**页面上，输入**目的地详细信息**：

   1. 目的地名称字段中的**目的地名称**。

   1. 为**目标类型**选择**使用 Amazon S3 进行Amazon IoT SiteWise 缓冲**。 Amazon IoT SiteWise 使用 Amazon S3 缓冲以 Parquet 格式将数据分批发送到亚马逊简单存储服务，然后将数据导入 Amazon IoT SiteWise 存储。

1. 输入您要存储网关数据的位置的 Amazon S3 网址。您可以通过选择 “浏览 **S3” 来浏览**路径。添加存储桶后，您还可以通过选择 “查看” 来**查看**该存储桶。

1. 通过输入时间范围并选择数据上传频率的时间增量，指定网关应多久**将数据上传到 Amazon S3 的频率**。频率值应大于 0 且小于或等于 30 天。

1. 在**数据存储设置**中，确定将网关数据导入后如何处理网关数据 Amazon IoT SiteWise。关于数据存储，需要做出两个决定：
   + 如果要将导入的数据复制到 Amazon IoT SiteWise 存储中，请选中 “将**数据复制到存储**” 复选框。此选项会将导入的数据从您配置的 Amazon S3 存储桶复制到 Amazon IoT SiteWise 存储中。
   + 如果您选择将数据从 Amazon S3 存储桶导入 Amazon IoT SiteWise 存储，则还可以指定是否应在导入完成后删除导入的数据。选中 “**从 Amazon S3 中删除数据**” 复选框，在将导入的日期导入到存储空间后，将其从配置的 Amazon S3 Amazon IoT SiteWise 存储桶中删除。

1. 为您的目的地添加路径过滤器。有关更多信息，请参阅[向 Amazon IoT SiteWise Edge 目标添加路径过滤器](destinations-add-path-filters.md)。

------
#### [ Amazon CLI ]

**Example : 创建一个使用 Amazon S3 进行缓冲的新 Amazon IoT SiteWise 目标**  
使用 [UpdateGatewayCapabilityConfiguration](https://docs.amazonaws.cn/iot-sitewise/latest/APIReference/API_UpdateGatewayCapabilityConfiguration.html)API 配置发布者。  
将 `capabilityNamespace` 参数设置为 `iotsitewise:publisher:3`。  

```
{
    "sources": [
      {
        "type": "MQTT"
      }
    ],
    "destinations": [
      {
        "type": "SITEWISE_BUFFERED",
        "name": "your-s3-destination-name",
        "config": {
          "targetBucketArn": "arn:aws:s3:::amzn-s3-demo-bucket/Optional/SomeFolder",
          "publishPolicy": {
            "publishFrequency": "15m",
            "localSizeLimitGB": 10
          },
          "siteWiseImportPolicy": {
            "enableSiteWiseStorageImport": true,
            "enableDeleteAfterImport": true,
            "bulkImportJobRoleArn": "arn:aws:iam::123456789012:role/your-role-name"
          }
        },
        "filters": [
          {
            "type": "PATH",
            "config": {
              "paths": [
                "#"
              ]
            }
          }
        ]
      }
    ]
  }
```

**Example : 更新使用 Amazon S3 缓冲的 Amazon IoT SiteWise 目标**  
要更新现有的 Amazon IoT SiteWise 实时目的地，请先使用 `DescribeGatewayCapabilityConfiguration` API 查找`destinationId`。  
发布者命名空间：`iotsitewise:publisher:3`  

```
{
    "sources": [
      {
        "type": "MQTT"
      }
    ],
    "destinations": [
      {
        "id": "your-existing-destination-id",
        "type": "SITEWISE_BUFFERED",
        "name": "your-s3-destination-name",
        "config": {
          "targetBucketArn": "arn:aws:s3:::amzn-s3-demo-bucket/Optional/SomeFolder",
          "publishPolicy": {
            "publishFrequency": "15m",
            "localSizeLimitGB": 10
          },
          "siteWiseImportPolicy": {
            "enableSiteWiseStorageImport": true,
            "enableDeleteAfterImport": true,
            "bulkImportJobRoleArn": "arn:aws:iam::123456789012:role/your-role-name"
          }
        },
        "filters": [
          {
            "type": "PATH",
            "config": {
              "paths": [
                "#"
              ]
            }
          }
        ]
      }
    ]
  }
```

以下配置选项特定于使用命名空间的启用 MQTT 的网关。`iotsitewise:publisher:3`

`sources`  
定义要将数据从工业设备传输到的数据源 Amazon IoT SiteWise。对于支持 MQTT 的网关，请使用。`MQTT`  
类型： 对象数组  
是否必需：是

`destinations`  
定义向何处发送数据。目的地要么是实时的，要么是使用 Amazon S3 进行缓冲的。至少需要一个目标对象，但你可以添加一个空数组。每个网关可以有一个实时目的地。有关更多信息，请参阅 [了解 Amazon IoT SiteWise 边缘目的地](gw-destinations.md#source-destination)。  
类型： 对象数组  
是否必需：是    
`id`  
目的地的唯一标识符。您可以提供现有的目的地 ID，也可以将其留空，以便为目的地自动生成新 ID。  
类型：字符串  
必需：否  
`type`  
目标类型。选项包括：`SITEWISE_REALTIME`和`SITEWISE_BUFFERED`。选择 `SITEWISE_BUFFERED`。  
+ `SITEWISE_REALTIME`（默认）-实时将数据直接发送到 Amazon IoT SiteWise 存储器。有关更多信息，请参阅 [添加 Amazon IoT SiteWise Edge 实时目的地](destinations-real-time.md)。
+ `SITEWISE_BUFFERED`— 以 Parquet 格式将数据批量发送到 Amazon S3，然后导入 Amazon IoT SiteWise 存储。
类型：字符串  
是否必需：是  
`name`  
目的地的唯一名称。  
类型：字符串  
是否必需：是  
`config`  
特定于目标类型的配置，采用 JSON 格式。配置因实时目的地和缓冲目的地而异。  
类型：对象  
是否必需：是    
`targetBucketArn`  
要发布到的 ARN 存储桶。 Amazon Web Services 区域 为两者 Amazon IoT SiteWise 和 Amazon S3 选择相同的选项。如果选择了前缀，则其长度必须介于 1-255 个字符之间。  
Amazon IoT SiteWise（包括网关）将有权访问整个指定的 S3 存储桶。我们建议使用专用的存储桶进行缓冲数据摄取。
类型：字符串  
是否必需：是  
`publishPolicy`  
发布政策的详细信息。  
类型：对象  
是否必需：是    
`publishFrequency`  
 SiteWise 边缘网关向 Amazon S3 存储桶发布内容的频率。向 Amazon S3 上传数据的频率必须大于 0 分钟且小于或等于 30 天。在指定发布频率期`d`限时，可以使用`m``h`、和。请注意，`m` 表示分钟，`h` 表示小时，`d` 表示天。默认值为 15 分钟。  
类型：字符串  
是否必需：是  
`localSizeLimitGB`  
写入本地磁盘的文件的最大大小，以 GB 为单位。如果突破此阈值，则发布者会将所有缓冲的数据发布到其目的地。  
类型：整数  
是否必需：是  
`siteWiseImportPolicy`  
用于将数据导入的导入策略的详细信息 Amazon IoT SiteWise。  
类型：对象  
是否必需：是    
`enableSiteWiseStorageImport`  
将其设置为可`true`将数据从 Amazon S3 存储桶导入 Amazon IoT SiteWise 存储。它最初会复制中的数据 Amazon IoT SiteWise。然后，如果您设置`enableDeleteAfterImport`为 true，则 S3 中的数据将在复制到后删除 Amazon IoT SiteWise。定价影响适用。默认值为 `true`。  
类型：布尔值  
是否必需：是  
`enableDeleteAfterImport`  
将其设置为，`true`以便在将文件提取到存储空间后删除 Amazon S3 存储桶中的文件。 Amazon IoT SiteWise 默认值为 `true`。  
类型：布尔值  
是否必需：是  
`bulkImportJobRoleArn`  
 Amazon IoT SiteWise 假设在数据摄取期间从 Amazon S3 读取缓冲数据的 IAM 角色的 ARN。当边缘设备调用 Amazon IoT SiteWise APIs 以启动批量导入过程时，将使用此角色。  
如果设置`enableSiteWiseStorageImport`为`true`，则此参数为必填项。
类型：字符串  
必需：否

------

为您的目的地添加路径过滤器。有关更多信息，请参阅 [向 Amazon IoT SiteWise Edge 目标添加路径过滤器](destinations-add-path-filters.md)。

# 向 Amazon IoT SiteWise Edge 目标添加路径过滤器
添加路径筛选条件

向目标添加路径过滤器。路径过滤器使用 MQTT 主题语法，其中`#`是匹配任意数量级别的通配符，`+`是匹配单个级别的通配符。您可以向网关添加多个目的地，每个目的地都有自己的一组路径过滤器，这些过滤器已订阅到您的设备遥测中。

Siemens Industrial Edge网关使用前缀来实现兼容性。有关更多信息，请参阅 [路径过滤器的前缀](sitewise-edge-on-siemens.md#siemens-path-filters)。

------
#### [ Console ]

**添加路径过滤器**

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要向其添加路径过滤器的网关。

1. 在 “**添加目标**” 下的 “**路径过滤器**” 部分中，选择 “**添加路径过滤器**”。

1. 输入您希望此目的地订阅的路径过滤器。您可以使用通配符（`#`和`+`）来订阅多个路径。

1. 选择 “**添加路径过滤器**”，将路径过滤器添加到列表中。

1. 如果需要，重复步骤以添加其他路径过滤器。

1. 添加完所有必需的路径过滤器后，选择 “**创建**”。

------
#### [ Amazon CLI for self-hosted gateways ]

**Example : 路径过滤器配置**  

```
{
  "destinations": [
    {
      ...
    }
  ],
  "filters": [
    {
      "type": "PATH",
      "config": {
        "paths": [
          "home/+/sensor1/temperature",
          "home/livingroom/sensor1/temperature",
          "home/livingroom/sensor1/temperature",
          "building/#"
        ]
      }
    }
  ]
}
```

------
#### [ Amazon CLI for 西门子 IEgateways ]

**Example : 路径过滤器的前缀配置**  
使用每个路径筛选器的 data (`ie/d`) 和元数据 (`ie/m`) 前缀来捕获所有数据。  

```
{
  "destinations": [
    {
      ...
    }
  ],
  "filters": [
    {
      "type": "PATH",
      "config": {
        "paths": [
          "ie/d/home/+/sensor12/temperature",
          "ie/m/home/livingroom/sensor12/temperature",
          "ie/d/home/livingroom/sensor13/temperature2",
          "ie/m/home/livingroom/sensor13/temperature2",
          "ie/d/building/#",
          "ie/m/building/#"
        ]
      }
    }
  ]
}
```

------

**注意**  
通过下载路径过滤器列表在目的地之间复制路径过滤器。有关更多信息，请参阅 [下载目标中的所有路径过滤器（控制台）](destinations-manage.md#destinations-download-list)。

## 批量上传路径过滤器


要批量上传路径过滤器，请使用 CSV 或文本文件。 Amazon IoT SiteWise 上传文件时会自动删除完全重复的内容。例如，`windfarm/site1/`和`windfarm/site1/`是精确的重复项 Amazon IoT SiteWise ，因为字符串完全相同。部分重复项不会被删除，因此会产生额外费用。例如，`windfarm/#`和`windfarm/site1`是重叠的主题`windfarm/site1`，因为已经包含在。`windfarm/#`

**注意**  
避免重复以免产生额外费用。上传的文件必须为.csv 或.txt 格式。它不能包含任何标题，并且应由一列组成。在该列中，列出您的路径过滤器，每个筛选器都位于单独的行中。文件中不应包含任何其他信息。

**文件上传要求**

这些是额外的路径过滤器要求。
+ 您可以上传一个.csv 或.txt 文件。不支持其他文件格式。
+ CSV (.csv) 文件不能有标题，只能包含一列。
+ 每行可以有一个路径过滤器。
+ 上传的文件不能为空。
+ 使用 `#` 作为通配符时，它必须是主题筛选条件中的最后一个字符。例如，`topic/#` 或作为特定主题级别的独立字符。但请注意，`#` 也可以用作主题级别名称中的常规字符，例如 `factory/machine#1/topic`。有关更多信息，请参阅[路径过滤器名称中的特殊字符](gw-destinations.md#path-filters-special-characters)
  + 您也可以使用该`+`字符。例如，使用`factory/+/temp`来获取工厂的所有温度，而不是`factory/machine3/temp`单独获取。`factory/machine2/temp`

# 管理 Amazon IoT SiteWise 边缘目的地
管理目的地

添加目的地后，您可以执行各种操作来管理它们，例如编辑目标配置、删除目标和管理路径过滤器。

## 编辑目的地


选择表格中目的地旁边的单选按钮，然后选择 “**编辑**” 按钮来编辑目的地。

------
#### [ Console ]

**使用 Amazon IoT SiteWise 控制台编辑目的地**

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择相应的网关。

1. 在 “**目的地**” 部分，选择要编辑的目的地，然后选择 “**编辑”**。

1. 修改目的地，然后选择 “**保存**”。

------
#### [ Amazon CLI ]

**要编辑目的地，请使用以下方法 Amazon CLI**
+ 您可以通过修改 JSON 功能配置信息来编辑目标。

  ```
  aws iotsitewise update-gateway-capability-configuration \
  --gateway-id your-gateway-id \
  --capability-namespace "iotsitewise:publisher:3" \
  --capability-configuration '{
      "sources": [
          {
              "type": "MQTT"
          }
      ],
      "destinations": [
          {
              "id": "your-existing-destination-id",
              "type": "SITEWISE_REALTIME",
              "name": "your-updated-destination-name",
              "config": {
                  "publishingOrder": "TIME_ORDER",
                  "enableCompression": true,
                  "dropPolicy": {
                      "cutoffAge": "10d",
                      "exportPolicy": {
                          "retentionPeriod": "10d",
                          "rotationPeriod": "6h",
                          "exportSizeLimitGB": 10
                      }
                  },
                  "maxBatchWaitTime": "15s"
              },
              "filters": [
                  {
                    ...
                  }
              ]
          }
      ]
  }'
  ```

**注意**  
您无法更新目的地，`type`或者`capability-namespace`. 例如，您无法从某一类型切换`SITEWISE_REALTIME`到`SITEWISE_BUFFERED`。您可以为每个启用 MQTT 的网关设置一个实时目的地。

------

## 删除目的地


如果您不再需要目的地，可以将其从 SiteWise Edge 网关中删除。

------
#### [ Console ]

**使用 Amazon IoT SiteWise 控制台删除目的地**

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择相应的网关。

1. 在 “**目的地**” 部分，选择要删除的目的地，然后选择 “**删除**”。出现确认屏幕。

1. 要确认您选择删除目的地，请在确认框中键入 “删除”。

------
#### [ Amazon CLI ]

**要删除目的地，请使用 Amazon CLI**
+ 通过指定网关 ID 并修改功能配置来删除要删除的目的地，删除网关功能配置。

  ```
  aws iotsitewise update-gateway-capability-configuration \
    --gateway-id your-gateway-id \
    --capability-namespace "iotsitewise:publisher:3" \
    --capability-configuration '{
      "sources": [
          {
              "type": "MQTT"
          }
      ],
      "destinations": []
  }'
  ```

**注意**  
destinations 数组可以为空 (`[]`)，但目标对象本身必须包含在功能配置中。

------

## 下载目标中的所有路径过滤器（控制台）


在 Amazon IoT SiteWise 控制台中下载包含所有路径过滤器的 CSV 文件。您可以使用下载的路径过滤器列表在网关目标之间轻松共享路径过滤器列表。

**使用 Amazon IoT SiteWise 控制台下载包含所有路径过滤器的 CSV 文件**

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择包含您的路径过滤器的网关。

1. 选择 “**添加目的地****” 或 “编辑目的地”**。

1. 导航到**路径过滤器**部分，然后选择**下载 CSV**。

**注意**  
无论您从路径筛选器列表中选择了哪个路径筛选器，CSV 文件都包含特定目标中的所有路径筛选器。

## 编辑路径过滤器


您可以编辑单个路径过滤器，以细化目标接收的数据。

------
#### [ Console ]

使用 Amazon IoT SiteWise 控制台，可以在每个相应的文本框中编辑每个单独的路径过滤器。

**使用 Amazon IoT SiteWise 控制台编辑路径过滤器**

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择包含您的路径过滤器的网关。

1. 选择相应的目的地。

1. 选择**编辑**。

1. 为包含要编辑的路径过滤器的行选择文本框。

1. 更新路径过滤器的文本，确保已编辑路径过滤器的复选框处于选中状态。

1. 选择**保存**。

------
#### [ Amazon CLI ]

要使用编辑目标的路径过滤器 Amazon CLI，请先检索当前配置，对其进行修改，然后使用`update-gateway-capability-configuration`命令对其进行更新。

**要编辑路径过滤器，请使用 Amazon CLI**

1. 检索当前的功能配置：

   ```
   aws iotsitewise describe-gateway-capability-configuration \
     --gateway-id your-gateway-id \
     --capability-namespace "iotsitewise:publisher:3" \
     --query "capabilityConfiguration"
   ```

1. 根据需要编辑 JSON 以修改路径过滤器。

1. 使用修改后的路径过滤器更新功能配置：

   ```
   aws iotsitewise update-gateway-capability-configuration \
     --gateway-id your-gateway-id \
     --capability-namespace "iotsitewise:publisher:3" \
     --capability-configuration json-containing-your-updated-path-filters
   ```

------

## 删除路径过滤器


您可以删除目标的路径筛选器，以控制其从 MQTT 源和数据处理管道接收的数据。

------
#### [ Console ]

**使用 Amazon IoT SiteWise 控制台删除路径筛选器**

1. 打开 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

1. 在左侧导航栏中，选择 **Edge 部分的 **Edge** 网关**。

1. 选择包含您的路径过滤器的网关。

1. 选择相应的目的地。

1. 选择**编辑**。

1. 在 **“编辑目标”** 屏幕的 “**路径过滤器**” 部分，选择一个或多个要删除的路径过滤器。

1. 选择**删除**。将显示一条删除确认消息。如果要继续删除路径过滤器，请在确认屏幕上选择 “**删除**”。

------
#### [ Amazon CLI ]

**要删除目的地，请使用 Amazon CLI**
+ 通过从功能配置中移除路径筛选器来删除路径过滤器。

  ```
  aws iotsitewise update-gateway-capability-configuration \
    --gateway-id your-gateway-id \
    --capability-namespace "iotsitewise:publisher:3" \
    --capability-configuration '{
      "sources": [
          {
              "type": "MQTT"
          }
      ],
      "destinations": [
          {
              "id": "your-destination-id",
              "type": "SITEWISE_REALTIME",
              "name": "your-destination-name",
              "config": {
                  ...
              },
              "filters": [
                  {
                      "type": "PATH",
                      "config": {
                          "paths": [
                              "/path1",
                              "/path2",
                              "/delete-a-path-to-remove-it"
                          ]
                      }
                  }
              ]
          }
      ]
  }
  ```

**注意**  
过滤器数组可以为空 (`[]`)，但过滤器对象本身必须包含在功能配置中。

------

# 管理 SiteWise Edge 网关
管理网关

您可以使用 Amazon IoT SiteWise 控制台和 API 操作来管理 Amazon IoT SiteWise Edge 网关。您也可以使用 f [Amazon OpsHub or Window Amazon IoT SiteWise s](https://aws-iot-sitewise.s3.amazonaws.com/gateway/OpsHub+for+AWS+IoT+SiteWise.exe) 应用程序从本地设备管理 SiteWise Edge 网关的某些方面。

我们强烈建议您使用 f Amazon OpsHub or Amazon IoT SiteWise 应用程序来监控本地设备上的磁盘使用情况。您还可以监控`Gateway.AvailableDiskSpace`和 `Gateway.UsedPercentageDiskSpace` Amazon CloudWatch 指标，并创建警报，以便在磁盘空间不足时收到通知。有关 Amazon CloudWatch 警报的更多信息，请参阅[基于静态阈值创建 CloudWatch 警](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)报。

确保您的设备有足够的空间容纳后续数据。当本地设备的空间即将用完时，该服务会自动删除时间戳最早的少量数据，为后续数据腾出空间。

如要检查服务是否删除了您的数据，请执行以下操作：

1. 登录以 Amazon OpsHub 获取 Amazon IoT SiteWise 应用程序。

1. 选择**设置**。

1. 对于**日志**，指定时间范围，再选择**下载**。

1. 解压缩该日志文件。

1. 如果日志文件包含以下消息，则服务会删除您的数据：已删除*number*字节数据，以防止 SiteWise Edge 网关存储空间不足。

## 使用控制 Amazon IoT SiteWise 台管理您的 SiteWise Edge 网关


您可以使用 Amazon IoT SiteWise 控制台配置、更新和监控您 Amazon 账户中的所有 SiteWise Edge 网关。

您可以通过导航到[Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)中的 SiteWise Edge 网关页面来查看您的 **Edge 网关**。要访问特定网关的 ** Edge 网关详细信息**页面，请选择 Edge 网关的名称。

在 **Edge 网关详细信息**页面的**概述**选项卡中，您可以执行以下操作：
+ 在**数据来源**部分，更新数据来源配置并配置其他数据来源
+ 选择 **Open metrics 可在 CloudWatch 指标**控制台中查看每个数据源摄取的数据点数 CloudWatch 
+ 在 **Edge 功能**部分，单击**编辑**将数据包添加到您的 SiteWise Edge 网关
+ 在**网关配置**部分，查看 SiteWise Edge 网关的连接状态
+ 在**发布器配置**部分，查看 SiteWise Edge 网关同步状态和 Amazon IoT SiteWise 发布者组件的配置

在 **Edge 网关详细信息**页面的**更新**选项卡中，您可以查看部署到 Edge 网关的当前组件和包版本。当新版本可用时，您也可以在此处部署新版本。

## 使用 Amazon OpsHub 管理 SiteWise 边缘网关 Amazon IoT SiteWise


您可以使用 f Amazon OpsHub or Amazon IoT SiteWise 应用程序来管理和监控您的自托管 SiteWise Edge 网关。此应用程序提供以下监控和管理选项：
+ 在**概述**下，您可以执行以下操作：
  + 查看 SiteWise Edge 网关详细信息，帮助您深入了解 SiteWise Edge 网关设备数据、发现问题并提高 SiteWise Edge 网关的性能。
  + 查看 SiteWise 监控来自本地服务器和边缘设备的数据的监控门户。有关更多信息，请参阅 *Amazon IoT SiteWise Monitor 应用程序指南* 中的 [什么是 Amazon IoT SiteWise Monitor](https://docs.amazonaws.cn/iot-sitewise/latest/appguide/what-is-monitor-app.html)。
+ 在 He **alth** 下，有一个控制面板，用于显示来自您的 SiteWise Edge 网关的数据。领域专家（例如流程工程师）可以使用仪表板来查看 SiteWise 边缘网关行为的概述。
+ 在**资产**下，查看部署到本地设备的资产以及上次为资产属性收集或计算的价值。
+ 在 **VPC 设置**下，执行下列操作：
  + 如果安装了数据处理包，请查看 SiteWise Edge 网关配置信息并将资源与 Amazon 云同步。
  + 下载可用于使用其他工具访问 SiteWise Edge 网关的身份验证文件。
  + 下载可用于对 SiteWise Edge 网关进行故障排除的日志。
  + 查看部署到 SiteWise Edge 网关的 Amazon IoT SiteWise 组件。

**重要**  
以下内容需要用 Amazon OpsHub 于 Amazon IoT SiteWise：  
您的本地设备和 f Amazon OpsHub o Amazon IoT SiteWise r 应用程序必须连接到同一个网络。
必须启用数据处理包。

**使用管理 SiteWise Edge 网关 Amazon OpsHub**

1. 下载并安装适用[Amazon OpsHubAmazon IoT SiteWise 于 Windows 的](https://aws-iot-sitewise.s3.amazonaws.com/gateway/OpsHub+for+AWS+IoT+SiteWise.exe)应用程序。

1. 打开 应用程序。

1. 如果您没有为网关设置本地凭证，请按照 [使用本地操作系统凭据访问您的 SiteWise Edge 网关](#create-user-pool) 中的步骤进行设置。

1. 您可以使用 Linux 或轻型目录访问协议 (LDAP) 凭据登录 SiteWise Edge 网关。要登录您的 SiteWise Edge 网关，请执行以下任一操作：

------
#### [ Linux ]

   1. 对于**主机名或 IP 地址**，输入本地设备的主机名或 IP 地址。

   1. 在**身份验证**中，请选择 **Linux**。

   1. 在**用户名**中，输入您的 Linux 操作系统的用户名。

   1. 在**密码**中，输入您的 Linux 操作系统的密码。

   1. 选择**登录**。

------
#### [ LDAP ]

   1. 对于**主机名或 IP 地址**，输入本地设备的主机名或 IP 地址。

   1. 在**身份验证**中，请选择 **LDAP**。

   1. 对于**用户名**，请输入您的 LDAP 用户名。

   1. 对于 **密码**，请输入您的 LDAP 密码。

   1. 选择**登录**。

------

## 使用本地操作系统凭据访问您的 SiteWise Edge 网关


除了轻型目录访问协议 (LDAP) 之外，您还可以使用 Linux 或 Windows 凭据来访问您的自托管 SiteWise Edge 网关。

**重要**  
要使用 Linux 凭据访问您的 SiteWise Edge 网关，必须激活 SiteWise Edge 网关的数据处理包。

### 使用 Linux 操作系统凭据访问您的 SiteWise Edge 网关


 下列步骤假定您使用的是装有 Ubuntu 的设备。如果您使用的是其他 Linux 发行版，请查阅您设备的相关文档。

**创建 Linux 用户群体**

1. 要创建管理员组，请运行以下命令。

   ```
   sudo groupadd --system SWE_ADMIN_GROUP
   ```

   `SWE_ADMIN_GROUP`群组中的用户可以允许 SiteWise Edge 网关的管理员访问权限。

1. 要创建用户组，请运行以下命令。

   ```
   sudo groupadd --system SWE_USER_GROUP
   ```

   `SWE_USER_GROUP`群组中的用户可以允许 SiteWise Edge 网关的只读访问权限。

1. 要向管理员组添加用户，请运行以下命令。*password*用要添加的用户名和密码替换*user-name*和。

   ```
   sudo useradd -p $(openssl passwd -1 password) user-name
   ```

1. 要将用户添加到`SWE_ADMIN_GROUP`或中`SWE_USER_GROUP`，请*user-name*替换为您在上一步中添加的用户名。

   ```
   sudo usermod -a -G SWE_ADMIN_GROUP user-name
   ```

现在，您可以使用用户名和密码登录 for Amazon IoT SiteWise 应用程序上的 SiteWise Edge 网关。 Amazon OpsHub 

### 使用 Windows 凭据访问您的 SiteWise Edge 网关


 下列步骤假定您使用的是装有 Windows 的设备。

**重要**  
安全是双方 Amazon 的共同责任。创建包含至少 12 个字符以及大写、小写、数字和符号组合的强密码策略。此外，将 Windows 防火墙规则设置为允许端口 443 的传入流量，并阻止所有其他端口的传入流量。

**创建 Windows Server 用户群体**

1. 以管理员 PowerShell 身份运行。

   1. 在要安装 SiteWise 边缘网关的 Windows 服务器上，以管理员身份登录。

   1. 在 Windows 搜索栏**PowerShell**中输入。

   1. 在搜索结果中，右键单击 Windows PowerShell 应用程序。选择**以管理员身份运行**。

1. 要创建管理员组，请运行以下命令。

   ```
   net localgroup SWE_ADMIN_GROUP /add
   ```

   您必须是`SWE_ADMIN_GROUP`群组中的用户才能允许 SiteWise Edge 网关的管理员访问权限。

1. 要创建用户组，请运行以下命令。

   ```
   net localgroup SWE_USER_GROUP /add
   ```

   您必须是该`SWE_USER_GROUP`组中的用户才能允许 SiteWise Edge 网关的只读访问权限。

1. 要添加用户，请运行以下命令。*password*用要创建的用户名和密码替换*user-name*和。

   ```
   net user user-name password /add
   ```

1. 要向管理员组添加用户，请运行以下命令。*user-name*替换为要添加的用户名。

   ```
   net localgroup SWE_ADMIN_GROUP user-name /add
   ```

现在，您可以使用用户名和密码登录 for Amazon IoT SiteWise 应用程序上的 SiteWise Edge 网关。 Amazon OpsHub 

## 管理 SiteWise Edge 网关证书


您可以在边缘 SiteWise 网关设备上 SiteWise 使用监控器和第三方应用程序，例如 Grafana。这些应用程序需要与服务建立 TLS 连接。 SiteWise 边缘网关目前使用自签名证书。如果您使用浏览器打开应用程序（例如 Monito SiteWise r 门户），则可能会收到证书不可信的警告。

以下内容显示如何从 for Amazon IoT SiteWise 应用程序下载可信证书。 Amazon OpsHub 

1. 登录到应用程序。

1. 选择**设置**。

1. 对于**身份验证**，请选择**下载证书**。

以下假设您使用的是谷歌浏览器或 FireFox。如果您使用其他浏览器，请查阅您的浏览器相关文档。要将上一步中下载的证书添加到浏览器，请执行下列操作之一：
+ 如果您使用 Google Chrome，请按照 *Google Chrome 企业帮助文章*中的[设置证书](https://support.google.com/chrome/a/answer/3505249?hl=en)进行操作。
+ 如果您使用 Firefox，请按照 *Oracle 文档*中的[将证书加载至 Mozilla 或 Firefox 浏览器](https://docs.oracle.com/cd/E19528-01/819-4639/gaesv/index.html)进行操作。

## 更改 SiteWise Edge 网关组件包的版本


您可以使用 Amazon IoT SiteWise 控制台更改 SiteWise Edge 网关上组件包的版本。

**更改 SiteWise Edge 网关组件包的版本**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要更改其包版本的 SiteWise Edge 网关。

1. 在**网关配置**下，选择**查看软件版本**。

1. 对于要更新版本的包，在**编辑软件版本**页面上，选择要部署的版本，然后选择**部署**。

1. 选择**完成**。

## 列出 SiteWise 边缘网关


------
#### [ Console ]

**列出 SiteWise Edge 网关**

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

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

1. 查看您的所有 SiteWise Edge 网关的列表。

------
#### [ Amazon CLI ]

要使用列出您的网关 Amazon CLI，请按照以下步骤操作：
+ 使用 list-gateways 命令查看您的所有网关：

  ```
  aws iotsitewise list-gateways
  ```

  此命令会返回您的网关列表及其 IDs名称和其他信息。

  您还可以指定分页参数：

  ```
  aws iotsitewise list-gateways --max-results 10 --next-token your-token
  ```

有关更多信息，请参阅《 Amazon CLI 命令参考》中的 [list-gat](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/list-gateways.html) eways。

------

## 描述边 SiteWise 缘网关


------
#### [ Console ]

**查看网关详细信息**

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

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

1. 选择要查看其详细信息的网关的名称。

1. 在 **Edge 网关详细信息页面上查看网关详细信息**。

------
#### [ Amazon CLI ]

要使用获取有关特定网关的详细信息 Amazon CLI，请执行以下步骤：
+ 使用带有网关 ID 的 describe-gateway 命令：

  ```
  aws iotsitewise describe-gateway --gateway-id a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE
  ```

  此命令返回有关网关的详细信息。

有关更多信息，请参阅《命令参考》中的 d [escribe-gat](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/describe-gateway.html) eway。 Amazon CLI 

------

## 创建 SiteWise Edge 网关


------
#### [ Console ]

**创建 SiteWise Edge 网关**

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

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

1. 选择**创建网关**。

1. 输入网关的名称。

1. 为您的网关选择 Greengrass 群组。

1. （可选）向网关添加标签。

1. 选择**创建**。

------
#### [ Amazon CLI ]

要使用创建新的物联 SiteWise 网网关 Amazon CLI，请按照以下步骤操作：
+ 使用 create-gateway 命令创建新的网关：

  ```
  aws iotsitewise create-gateway \
      --gateway-name "NewSiteWiseGateway" \
      --gateway-platform '{
          "greengrass": {
              "groupArn": "arn:aws:greengrass:us-east-1:123456789012:group/a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE"
          }
      }' \
      --tags '{
          "Environment": "Production",
          "Location": "Factory1"
      }'
  ```

  此命令返回新网关的 ID 和 ARN：

  ```
  {
      "gatewayId": "a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE",
      "gatewayArn": "arn:aws:iotsitewise:us-east-1:123456789012:gateway/a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE"
  }
  ```

有关更多信息，请参阅《 Amazon CLI 命令参考》中的 [create-gatew](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/create-gateway.html) ay。

------

## 更新 SiteWise Edge 网关


------
#### [ Console ]

**更新 E SiteWise dge 网关**

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

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

1. 选择要更新的网关。

1. 选择**编辑**。

1. 根据需要更新网关名称或其他设置。

1. 选择**保存**。

------
#### [ Amazon CLI ]

要使用更新现有网关 Amazon CLI，请执行以下步骤：
+ 使用 update-gateway 命令更新网关的名称：

  ```
  aws iotsitewise update-gateway \
      --gateway-id a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE \
      --gateway-name "UpdatedGatewayName"
  ```

  如果成功，此命令不会产生任何输出。

有关更多信息，请参阅《命令参考》中的 [update-gatew](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/update-gateway.html) ay。 Amazon CLI 

------

## 更新网关功能配置


------
#### [ Console ]

**更新网关功能配置**

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

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

1. 选择要更新的网关的名称。

1. 在 “**数据源**” 部分中，选择**编辑**。

1. 根据需要更新数据源配置。

1. 选择**保存**。

------
#### [ Amazon CLI ]

要使用更新网关的功能配置 Amazon CLI，请执行以下步骤：
+ 使用 update-gateway-capability-configuration命令更新功能配置：

  ```
  aws iotsitewise update-gateway-capability-configuration \
      --gateway-id a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE \
      --capability-namespace "iotsitewise:opcuacollector:1" \
      --capability-configuration '{
          "sources": [
              {
                  "name": "OPC-UA Server",
                  "endpoint": {
                      "certificateTrust": {
                          "type": "TrustAny"
                      },
                      "endpointUri": "opc.tcp://10.0.0.1:4840",
                      "securityPolicy": "NONE",
                      "messageSecurityMode": "NONE",
                      "identityProvider": {
                          "type": "Anonymous"
                      }
                  },
                  "measurementDataStreamPrefix": ""
              }
          ]
      }'
  ```

  此命令返回功能命名空间和同步状态：

  ```
  {
      "capabilityNamespace": "iotsitewise:opcuacollector:1",
      "capabilitySyncStatus": "CONFIGURING"
  }
  ```

有关更多信息，请参阅《 Amazon CLI 命令参考》[update-gateway-capability-configuration](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/update-gateway-capability-configuration.html)中的。

------

## 为网关资源添加标签


------
#### [ Console ]

**为网关资源添加标签**

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

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

1. 选择要标记的网关的名称。

1. 选择**标签**选项卡。

1. 选择**管理标签**。

1. 选择 “**添加新标签**”，然后为每个标签输入密钥和值。

1. 选择**保存**。

------
#### [ Amazon CLI ]

要使用向网关添加标签 Amazon CLI，请执行以下步骤：
+ 使用 tag-resource 命令向网关添加标签：

  ```
  aws iotsitewise tag-resource \
      --resource-arn "arn:aws:iotsitewise:us-east-1:123456789012:gateway/a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE" \
      --tags '{
          "Department": "Operations",
          "Project": "FactoryAutomation"
      }'
  ```

  如果成功，此命令不会产生任何输出。

有关更多信息，请参阅《 Amazon CLI 命令参考》中的 [tag-resou](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/tag-resource.html) rce。

------

## 列出网关的标签


------
#### [ Console ]

**列出网关的标签**

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

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

1. 选择要查看其标签的网关的名称。

1. 选择**标签**选项卡。

1. 查看与网关关联的标签列表。

------
#### [ Amazon CLI ]

要使用列出与网关关联的标签 Amazon CLI，请执行以下步骤：
+ 使用 list-tags-for-resource命令列出网关的标签：

  ```
  aws iotsitewise list-tags-for-resource \
      --resource-arn "arn:aws:iotsitewise:us-east-1:123456789012:gateway/a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE"
  ```

  此命令返回与网关关联的标签：

  ```
  {
      "tags": {
          "Environment": "Production",
          "Location": "Factory1",
          "Department": "Operations",
          "Project": "FactoryAutomation"
      }
  }
  ```

有关更多信息，请参阅《 Amazon CLI 命令参考》[list-tags-for-resource](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/list-tags-for-resource.html)中的。

------

## 从网关中移除标签


------
#### [ Console ]

**从网关中移除标签**

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

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

1. 选择要从中移除标签的网关的名称。

1. 选择**标签**选项卡。

1. 选择**管理标签**。

1. 选择要删除的每个标签旁边的移除图标 (X)。

1. 选择**保存**。

------
#### [ Amazon CLI ]

要使用从网关中移除标签 Amazon CLI，请执行以下步骤：
+ 使用 untag-resource 命令从网关中删除标签：

  ```
  aws iotsitewise untag-resource \
      --resource-arn "arn:aws:iotsitewise:us-east-1:123456789012:gateway/a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE" \
      --tag-keys '["Project", "Department"]'
  ```

  如果成功，此命令不会产生任何输出。

有关更多信息，请参阅《命令参考》中的 [untag-resour](https://docs.amazonaws.cn/cli/latest/reference/iotsitewise/untag-resource.html) ce。 Amazon CLI 

------

## 更新 Amazon IoT SiteWise 组件的版本


更新 Amazon IoT Greengrass 核心设备上的 Amazon IoT SiteWise 网关组件，确保您可以访问最新功能、性能改进和安全补丁。

**要更新组 Amazon IoT SiteWise 件 Amazon IoT Greengrass**

1. 导航至 [Amazon IoT SiteWise 控制台](https://console.amazonaws.cn/iotsitewise/)。

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

1. 选择要编辑的网关，然后选择**编辑**。

1. 在 “**边缘功能**” 中的 “**软件版本**” 下，选择 “**可用软件更新**”。此时将出现 **“编辑软件版本**” 页面。

1. 选择组件版本。
**注意**  
建议选择可用的最新版本。保留网关组件 up-to-date有助于保持工业数据收集和处理的最佳功能。

1. 选择**部署**。这将启动 Amazon IoT Greengrass V2 部署以更新网关上的 Amazon IoT SiteWise 组件。

## 删除 SiteWise Edge 网关


------
#### [ Console ]

**删除 E SiteWise dge 网关**

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

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

1. 选择要删除的网关。

1. 选择**删除**。

1. 要确认要删除网关，请键入 “删除”，然后在出现的窗口中选择 “**删除**”。

------
#### [ Amazon CLI ]

要使用删除网关 Amazon CLI，请执行以下步骤：

1. 列出您的网关以标识要删除的网关的网关 ID。

   ```
   aws iotsitewise list-gateways
   ```

   此命令会返回您的网关列表，其中包含网关 IDs、名称和其他信息：

   ```
   {
       "gatewaySummaries": [
           {
               "gatewayId": "a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE",
               "gatewayName": "ExampleCorpGateway",
               "gatewayCapabilitySummaries": [
                   {
                       "capabilityNamespace": "iotsitewise:opcuacollector:1",
                       "capabilitySyncStatus": "IN_SYNC"
                   }
               ],
               "creationDate": 1588369971.457,
               "lastUpdateDate": 1588369971.457
           }
       ]
   }
   ```

1. 通过指定网关的 ID 来删除网关：

   ```
   aws iotsitewise delete-gateway --gateway-id a1b2c3d4-5678-90ab-cdef-1a1a1EXAMPLE
   ```

   如果成功，此命令不会产生任何输出。
**注意**  
删除网关时，该网关的某些文件仍保留在网关的文件系统中。

1. 要验证网关是否已删除，您可以再次列出您的网关：

   ```
   aws iotsitewise list-gateways
   ```

   已删除的网关不应再出现在列表中。

有关更多信息，请参阅《 Amazon CLI 命令参考》中的 [delete-gateway](https://docs.amazonaws.cn/cli/latest/reference/storagegateway/delete-gateway.html)。

------

# 备份和恢复 SiteWise Edge 网关
备份和恢复网关

本主题介绍如何恢复 SiteWise Edge 网关和备份指标数据。如果您在同一台计算机上遇到 SiteWise Edge 网关损坏的问题，并且需要对问题进行故障排除，请阅读 Amazon IoT SiteWise 文档 [ SiteWise Edge 网关问题疑](https://docs.amazonaws.cn//iot-sitewise/latest/userguide/troubleshooting-gateway.html#troubleshoot-gateway-issues)难解答。

**注意**  
本主题中介绍的指南适用于安装在 2.1.0 或更高 Amazon IoT Greengrass V2 版本上的 SiteWise Edge 网关。

## 指标数据的每日备份


如果您想在新机器上传输或恢复数据，则创建备份非常重要。备份数据可以大大降低在传输或恢复过程中丢失操作数据的风险。

本部分内容适用于使用数据处理包的网关。有关数据处理包的更多信息，请参阅[在 E SiteWise dge 上配置用于数据处理的资产模型](edge-processing.md#process-gateway-data-edge)。

**influxdb** 文件夹路径如下所示：

------
#### [ Linux ]

`/greengrass/v2/work/aws.iot.SiteWiseEdgeProcessor/influxdb `

------
#### [ Windows ]

`C:\greengrass\v2\work\aws.iot.SiteWiseEdgeProcessor\influxdb`

------

我们建议您备份整个文件夹及其项下的所有内容。

我们建议您定期将指标数据从 1.0 SiteWise Edge 备份到外部硬盘驱动器或 Amazon 云端。

## 恢复 SiteWise Edge 网关


在尝试恢复 SiteWise Edge 网关之前，请确保所有连接到该网关的 Edge 设备都已停止或断开连接。

使用以下步骤恢复 SiteWise Edge 网关：

1. 使用创建 SiteWise Edge 网关时下载的安装脚本在新计算机上恢复 SiteWise Edge 网关。阅读在[本地设备上安装 SiteWise Edge 网关软件](https://docs.amazonaws.cn//iot-sitewise/latest/userguide/install-gateway-software-on-local-device.html)过程以设置 SiteWise Edge 网关。

   如果您丢失或找不到安装脚本，请联系 [Amazon 客户支持](https://www.amazonaws.cn/contact-us/)。

1. 安装 E SiteWise dge 网关后，登录[Amazon IoT Greengrass 控制台](https://console.amazonaws.cn/greengrass)。

1. 要重新部署组件，请导航到**管理**，再在**Amazon IoT Greengrass 设备**下选择**核心设备**。

1. 在**Amazon IoT Greengrass 核心设备**表中，选择与您的 SiteWise Edge 网关对应的核心设备。

1. 进入设备页面后，打开**部署**选项卡并选择您的**部署 ID**，这将会使用您选择的 ID 打开**部署**页面。

1. 进入**部署**页面后，按右上角的**操作**按钮，再选择**修订**选项启动新的部署。配置部署。如果您想保持部署原样，请跳至**查看**并**部署**。

1. 等待**部署状态**变为 `Completed`。
**注意**  
 SiteWise Edge 上的所有组件也需要几分钟才能完全设置和运行。

## 恢复 Amazon IoT SiteWise 数据


使用以下过程在新计算机上恢复数据。

1. 将该 `influxdb` 文件夹复制到新机器上。

1. 通过在终端中运行以下命令来停止 SiteWise EdgeProcessor 组件：

------
#### [ Linux ]

    sudo `/greengrass/v2/bin/greengrass-cli component stop -n aws.iot.SiteWiseEdgeProcessor`

------
#### [ Windows ]

   `C:\greengrass\v2\bin\greengrass-cli component stop -n aws.iot.SiteWiseEdgeProcesso`

------

1. 找到您备份数据的路径，然后运行以下命令：

------
#### [ Linux ]

   `sudo yes | sudo cp -rf <influxdb_backup_path> /greengrass/v2/work/aws.iot.SiteWiseEdgeProcessor/influxdb `

------
#### [ PowerShell ]

   `Copy-Item -Recurse -Force <influxdb_backup_path>\* C:\greengrass\v2\work\aws.iot.SiteWiseEdgeProcessor\`

------
#### [ Windows ]

   `robocopy <influxdb_backup_path> C:\greengrass\v2\work\aws.iot.SiteWiseEdgeProcessor\ /E`

------

1. 重启组 SiteWiseEdgeProcessor 件：

------
#### [ Linux ]

   `sudo /greengrass/v2/bin/greengrass-cli component restart -n aws.iot.SiteWiseEdgeProcessor`

------
#### [ Windows ]

   `C:\greengrass\v2\bin\greengrass-cli component restart -n aws.iot.SiteWiseEdgeProcessor`

------

## 验证备份和恢复是否成功


使用此过程验证您的备份数据和 E SiteWise dge 网关恢复。

**注意**  
此过程要求您已经安装 Amazon OpsHub 了 Amazon IoT SiteWise。有关更多信息，请参阅[使用 Amazon OpsHub 用于管理 SiteWise Edge 网关 Amazon IoT SiteWise](https://docs.amazonaws.cn//iot-sitewise/latest/userguide/manage-gateways-ggv2.html)。

1. 开放 Amazon OpsHub 给 Amazon IoT SiteWise.

1. 在 SiteWise Edge 网关**设置**页面上，检查组件表中列出的每个**组件**的状态。确认状态颜色为绿色且读数显示为**正在运行**。

1. 在门户控制面板上验证您过去数据，检查过去数据和新数据是否都设置正确。过去数据和新数据之间会有停机时间。您应该可以看到一个未收集数据点的持续时间。

如果您在备份或恢复 SiteWise Edge 网关时遇到问题，请参阅以下疑难解答主题对 E [Amazon IoT SiteWise dge 网关进行故障排除](https://docs.amazonaws.cn//iot-sitewise/latest/userguide/troubleshooting-gateway.html)。

# 传统网关（Amazon IoT Greengrass Version 1）


**注意**  
SiteWise 只有在 2021 年 7 月 29 日之前开始使用此功能时，在上 Amazon IoT Greengrass V1 运行的 Edge 网关才可用。有关使用运行 Amazon IoT SiteWise 网关的更多信息 Amazon IoT Greengrass V2，请参阅[使用以下方式自行托管 E Amazon IoT SiteWise dge 网关 Amazon IoT Greengrass V2](gw-self-host-gg2.md)。

SiteWise 边缘网关现在只能在上面运行 Amazon IoT Greengrass V2，为您的工业物联网应用提供增强的功能和更高的性能。这个最新版本 Amazon IoT Greengrass V2 代表了架构的演变，它建立在基于组件的现代框架之上，支持模块化软件部署。它通过统一的安装程序简化了安装，同时为开发人员提供了更大的灵活性来部署自定义组件和进行本地测试。基于组件的模型可以实现更有效的资源管理，并通过组件配方引入了简化的配置方法。这种设计有助于更好地处理组件之间的依赖关系，支持持续部署实践，并为本地开发提供增强的 CLI 功能。此外，通过 Amazon IoT Greengrass V2 集中配置管理 Amazon IoT Core 并提供改进的日志记录和监控功能，所有这些功能都受到更精细的安全权限模型的保护。

有关开始使用 SiteWise Edge 网关的更多信息 Amazon IoT Greengrass V2，请使用[Amazon IoT SiteWise Edge 自托管网关要求](configure-gateway-ggv2.md)。这些资源提供了 step-by-step有关设置网关、配置数据源和管理工业物联网基础设施的说明。

**注意**  
随着物联网服务的 Amazon 不断创新和改进，建议随时了解最新功能和增强功能。定期查看 Amazon IoT SiteWise 和 Amazon IoT Greengrass 文档，了解可以进一步优化您的工业物联网解决方案的新功能。