

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

# 管理数据流 AWS IoT SiteWise
<a name="manage-data-streams"></a>

 数据流是包含历史时间序列数据的资源。每个数据流都由唯一的别名标识，因此可以更轻松地跟踪每条数据的来源。数据流是在收到第一个时间序列数据 AWS IoT SiteWise 时自动创建的。如果第一个时间序列数据使用别名标识，则使用该别名 AWS IoT SiteWise 创建新的数据流，前提是尚未为资产属性分配该别名。或者，如果第一个时间序列数据使用资产 ID 和属性 ID 进行标识，则 AWS IoT SiteWise 会创建一个新的数据流并将该数据流与资产属性相关联。

 有两种方法可以为资产属性分配别名。使用的方法取决于是先将数据发送到 AWS IoT SiteWise 第一个，还是先创建资产。
+  如果将数据发送到 f AWS IoT SiteWise irst，则会自动使用分配的别名创建数据流。稍后创建资产时，使用 [ AssociateTimeSeriesToAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssociateTimeSeriesToAssetProperty.html)API 将数据流及其别名关联到资产属性。
+  如果首先创建了资产，请使用 [ UpdateAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html)API 为资产属性分配别名。稍后将数据发送到时 AWS IoT SiteWise，会自动创建数据流并将其与资产属性相关联。

目前，您只能将数据流与测量值相关联。*测量值*是一种资产属性类型，表示设备的原始传感器数据流，如带有时间戳的温度值或带有时间戳的每分钟转数 (RPM) 值。

当这些测量值定义指标或转换时，传入的数据会触发特定的计算。值得注意的是，一个资产属性一次只能链接到一个数据流。

AWS IoT SiteWise 使用 `TimeSeries` Amazon 资源名称 (ARN) 资源来确定您的存储费用。有关更多信息，请参阅[AWS IoT SiteWise 定价](https://aws.amazon.com/iot-sitewise/pricing/)。

以下各节介绍如何使用 AWS IoT SiteWise 控制台或 API 来管理数据流。

**Topics**
+ [配置权限和设置](manage-data-streams-configuration.md)
+ [将数据流与资产属性关联](manage-data-streams-method.md)
+ [取消数据流与资产属性的关联](disassociate-data-streams-method.md)
+ [删除数据流](delete-data-streams-method.md)
+ [更新资产属性的别名](update-data-streams-method.md)
+ [常见场景](data-ingestion-scenarios.md)

# 配置权限和设置
<a name="manage-data-streams-configuration"></a>

 数据流是在收到第一个时间序列数据 AWS IoT SiteWise 时自动创建的。如果提取的数据未与资产属性关联，则 AWS IoT SiteWise 会创建一个新的已解除关联的数据流，该数据流可配置为与资产属性相关联。使用 IAM 策略配置向其发送数据的网关的访问控制 AWS IoT SiteWise，以指定要摄取的数据类型。

 以下 IAM 策略禁止从网关提取已取消关联的数据，同时仍允许向与资产属性关联的数据流中提取数据：

**Example 禁止从网关提取已取消关联的数据的 IAM 用户策略**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
      "Sid": "AllowPutAssetPropertyValuesUsingAssetIdAndPropertyId",
      "Effect": "Allow",
      "Action": "iotsitewise:BatchPutAssetPropertyValue",
      "Resource": "arn:aws:iotsitewise:*:*:asset/*"
    },
    {
      "Sid": "AllowPutAssetPropertyValuesUsingAliasWithAssociatedAssetProperty",
      "Effect": "Allow",
      "Action": "iotsitewise:BatchPutAssetPropertyValue",
      "Resource": "arn:aws:iotsitewise:*:*:time-series/*",
      "Condition": {
        "StringLikeIfExists": {
          "iotsitewise:isAssociatedWithAssetProperty": "true"
        }
      }
    },
    {
      "Sid": "DenyPutAssetPropertyValuesUsingAliasWithNoAssociatedAssetProperty",
      "Effect": "Deny",
      "Action": "iotsitewise:BatchPutAssetPropertyValue",
      "Resource": "arn:aws:iotsitewise:*:*:time-series/*",
      "Condition": {
        "StringLikeIfExists": {
          "iotsitewise:isAssociatedWithAssetProperty": "false"
        }
      }
    }
  ]
}
```

**Example 禁止从网关提取所有数据的 IAM 用户策略**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyPutAssetPropertyValues",
            "Effect": "Deny",
            "Action": "iotsitewise:BatchPutAssetPropertyValue",
            "Resource": [
                "arn:aws:iotsitewise:*:*:asset/*",
                "arn:aws:iotsitewise:*:*:time-series/*"
            ]
        }
    ]
}
```

# 将数据流与资产属性关联
<a name="manage-data-streams-method"></a>

使用 AWS IoT SiteWise 控制台 或管理您的数据流 AWS CLI。

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

使用 AWS IoT SiteWise 控制台管理您的数据流。

**要管理数据流（控制台）**

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

1. 在导航窗格中，选择 **数据流**。

1. 通过筛选数据流别名或在筛选器下拉菜单中选择 “**取消关联的数据流**” 来选择数据流。

1. 选择要更新的数据流。您可以选择多个数据流。单击右上角的 “**管理数据流**”。

1. 从 “**更新数据流关联” 中选择要关联的数据流**，然后单击 “**选择测量**” 按钮。

1.  在 **“选择衡量**指标” 部分，找到相应的资产衡量属性。选择测量值，然后单击 “**选择**”。

1.  对步骤 3 中选定的其他数据流执行步骤 4 和步骤 5。为所有数据流分配资产属性。

1.  选择 “**更新**” 以提交更改。将显示成功的确认横幅以确认更新。

------
#### [ AWS CLI ]

 要将数据流（由其别名标识）与资产属性（由其标识 IDs）相关联，请运行以下命令：

```
aws iotsitewise associate-time-series-to-asset-property \ 
    --alias <data-stream-alias> \
    --assetId <asset-ID> \
    --propertyId <property-ID>
```

------

# 取消数据流与资产属性的关联
<a name="disassociate-data-streams-method"></a>

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

使用 AWS IoT SiteWise 控制台取消您的数据流与资产属性的关联。

**取消数据流与资产属性的关联（控制台）**

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

1. 在导航窗格中，选择 **数据流**。

1. 通过筛选数据流别名或在筛选器下拉菜单中选择 “**关联的数据流**” 来选择数据流。

1. 选择要取消关联的数据流。**数据流别名**列必须包含别名。**资产名称**和**资产属性名称**列必须包含与数据流关联的资产属性的值。您可以选择多个数据流。

1.  单击右上角的 “**管理数据流**”。

1.  在 “**更新数据流关联**” 部分中，单击 “**测量名称**” 列中的 **X**。`submitted`状态应显示在 “**状态**” 列中。

1.  选择 “**更新**” 以提交更改。现在，数据流已与资产属性解除关联，现在使用别名来标识数据流。

------
#### [ AWS CLI ]

要取消数据流与资产属性（由其 `ID` s 及其别名标识）的关联，请运行以下命令：

```
    aws iotsitewise disassociate-time-series-from-asset-property \ 
        --alias <asset-property-alias> \
        --assetId <asset-ID> \
        --propertyId <property-ID>
```

 现在，数据流已与资产属性解除关联，使用别名来标识数据流。别名不再与资产属性关联，因为它现在已与数据流相关联。

------

# 删除数据流
<a name="delete-data-streams-method"></a>

 从资产模型中移除某个属性时， AWS IoT SiteWise 会从该资产模型管理的所有资产中删除该属性及其数据流。当资产被删除时，它还会删除该资产的所有属性及其数据流。如果必须保留数据流数据，则必须先将其与资产属性断开关联，然后再将其删除。

**警告**  
 从资产中删除属性时，关联的数据流也会被删除。要保留数据流，请先将其与资产属性解除关联，然后再从资产模型中删除该属性或删除资产。

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

使用 AWS IoT SiteWise 控制台取消您的数据流与资产属性的关联。

**删除数据流（控制台）**

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

1.  在导航窗格中，选择 **数据流**。

1.  通过筛选数据流别名来选择数据流。

1.  选择要删除的数据流。您可以选择多个数据流。

1.  选择 “**删除**” 按钮以删除数据流。

------
#### [ AWS CLI ]

 使用 [ DeleteTimeSeries](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteTimeSeries.html)API 按别名删除特定数据流。

```
    aws iotsitewise delete-time-series \ 
        --alias <data-stream-alias>
```

------

# 更新资产属性的别名
<a name="update-data-streams-method"></a>

 别名在一个 AWS 区域内必须是唯一的。这包括资产属性和数据流的别名。如果其他属性或数据流正在使用该别名，则不要为该资产属性分配别名。

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

使用 AWS IoT SiteWise 控制台更新资产属性别名。

**更新资产属性别名（控制台）**

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

1.  在导航窗格中，选择**资产**。

1.  从表格中选择资产。

1.  单击 **Edit** 按钮。

1.  在 “**属性” 表中选择**属性**类型**。

1.  找到该属性，然后在属性别名文本字段中键入新的别名。

1.  单击 “**保存**” 按钮保存更改。

------
#### [ AWS CLI ]

 要更新资产属性的别名，请运行以下命令：

```
    aws iotsitewise update-asset-property \
        --asset-id <asset-ID> \
        --property-id <property-ID> \
        --property-alias <asset-property-alias> \
        --property-notification-state <ENABLED|DISABLED>
```

**注意**  
 如果当前启用了属性通知，则必须重新提供该通知以确保其继续启用。

------

# 常见场景
<a name="data-ingestion-scenarios"></a>

## 移动数据流
<a name="data-ingestion-scenario-move-data-stream"></a>

 要更改数据流与其他资产属性的关联，请先取消该数据流与当前资产属性的关联。在解除数据流与资产属性的关联时，必须为该资产属性分配一个别名。

```
    aws iotsitewise disassociate-time-series-from-asset-property \ 
        --alias <asset-property-alias> \
        --assetId <asset-ID> \
        --propertyId <property-ID>
```

 现在，将数据流重新分配给新的资产属性。

```
    aws iotsitewise associate-time-series-from-asset-property \ 
        --alias <data-stream-alias> \
        --assetId <new-asset-ID> \
        --propertyId <new-property-ID>
```

## 为资产属性分配别名时出错
<a name="data-ingestion-scenario-assetid-contains-data"></a>

 使用 `UpdateAssetProperty` API 为属性分配别名时，您可能会看到以下错误消息：

```
Given alias <data-stream-alias> for property <property-name> with ID <property-ID> already in use by another property or data stream
```

 此错误消息表示该别名未分配给该属性，因为该别名当前正由其他属性或数据流使用。

 如果 AWS IoT SiteWise 使用别名提取数据，则会发生这种情况。当发送数据时使用的别名未被其他数据流或资产属性使用时，将使用该别名创建一个新的数据流。以下两个选项解决了这个问题。
+  使用 `AssociateTimeSeriesToAssetProperty` API 将数据流及其别名关联到资产属性。
+  暂时停止数据摄取并删除数据流。使用 `UpdateAssetProperty` API 为资产属性分配别名，然后重新开启数据提取功能。

## 将数据流与资产属性关联时出错
<a name="data-ingestion-scenario-move-data-stream"></a>

 将数据流与资产属性关联时，会看到以下错误消息。

```
assetProperty <property-name> with assetId <asset-ID> propertyId <property-ID> contains data
```

 此错误消息表明 asset 属性已与包含数据的数据流相关联。在将其他数据流与该资产属性关联之前，必须取消关联或删除该数据流。

**注意**  
 解除数据流与资产属性的关联时，分配给该属性的别名会被赋予数据流。要使该别名保持分配给该属性的状态，请在取消关联数据流之前为该属性分配一个新的别名。

 要保留存储在 asset 属性中的数据，请执行以下操作：
+  确保没有向资产属性提取任何数据，以防止创建新的数据流。
+  使用 `UpdateAssetProperty` API 为当前分配的数据流设置一个新的别名。
+  使用 `DisassociateTimeSeriesFromAssetProperty` API 取消当前数据流与资产属性的关联。
+  使用 `AssociateTimeSeriesToAssetProperty` API 将所需的数据流关联到资产属性。

 如果必须删除存储在资产属性中的数据，请执行以下操作：
+  确保没有向资产属性提取任何数据，以防止创建新的数据流。
+  使用 `DeleteTimeSeries` API 删除当前分配的数据流。
+  使用 `AssociateTimeSeriesToAssetProperty` API 将所需的数据流关联到资产属性。