

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ingiera datos para AWS IoT SiteWise
<a name="industrial-data-ingestion"></a>

AWS IoT SiteWise está diseñado para recopilar y correlacionar de manera eficiente los datos industriales con los activos correspondientes, que representan varios aspectos de las operaciones industriales. Esta documentación se centra en los aspectos prácticos de la ingesta de datos y ofrece varios métodos adaptados a diversos casos de uso industrial. AWS IoT SiteWise Para obtener instrucciones sobre cómo crear su operación industrial virtual, consulte [Modelado de activos industriales](industrial-asset-models.md).

Puede enviar datos industriales a AWS IoT SiteWise través de cualquiera de las siguientes opciones:
+ **AWS IoT SiteWise Edge**: utilice la [puerta de enlace SiteWise Edge](gateways.md) como intermediario entre AWS IoT SiteWise y sus servidores de datos. AWS IoT SiteWise proporciona AWS IoT Greengrass componentes que puede implementar en cualquier plataforma que se pueda ejecutar AWS IoT Greengrass para configurar una puerta de enlace SiteWise Edge. Esta opción admite el enlace con el protocolo del servidor [OPC UA](https://en.wikipedia.org/wiki/OPC_Unified_Architecture).
+ **AWS IoT SiteWise API**: utilice la [AWS IoT SiteWise API](ingest-api.md) para cargar datos desde cualquier otra fuente. Utilice nuestra [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)API de streaming para la ingesta en cuestión de segundos, o la [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API orientada a lotes para facilitar la ingesta rentable en lotes más grandes.
+ **AWS IoT Reglas básicas**: utilice las [reglas AWS IoT básicas](iot-rules.md) para cargar datos de los mensajes MQTT publicados por una cosa u otro servicio. AWS IoT AWS 
+ **AWS IoT Events acciones**: utilice [AWS IoT Events acciones](iot-events.md) activadas por eventos específicos en. AWS IoT Events Este método es adecuado para situaciones en las que la carga de datos esté vinculada a eventos.
+ **AWS IoT Greengrass administrador de transmisiones**: utilice el [administrador de AWS IoT Greengrass transmisiones](greengrass-stream-manager.md) para cargar datos de fuentes de datos locales mediante un dispositivo perimetral. Esta opción es válida para situaciones en las que los datos se originen en ubicaciones en las instalaciones o periféricas.

Estos métodos ofrecen una gama de soluciones para administrar datos de diferentes orígenes. Profundice en los detalles de cada opción para obtener una comprensión completa de las capacidades de ingesta de datos que ofrece. AWS IoT SiteWise 

# Gestione los flujos de datos para AWS IoT SiteWise
<a name="manage-data-streams"></a>

 Un flujo de datos es el recurso que contiene datos históricos de series temporales. Cada flujo de datos se identifica con un alias único, lo que facilita el seguimiento del origen de cada dato. Los flujos de datos se crean automáticamente AWS IoT SiteWise cuando se reciben los primeros datos de series temporales. Si los datos de la primera serie temporal se identifican con un alias, AWS IoT SiteWise crea un nuevo flujo de datos con ese alias, siempre que a ninguna propiedad de activo se le haya asignado ese alias. Como alternativa, si los datos de la primera serie temporal se identifican con un identificador de activo y un identificador de propiedad, AWS IoT SiteWise crea un nuevo flujo de datos y lo asocia a la propiedad del activo. 

 Hay dos formas de asignar un alias a una propiedad de un activo. El método utilizado depende de si los datos se envían AWS IoT SiteWise primero o si se crea primero un activo.
+  Si los datos se envían AWS IoT SiteWise primero, se crea automáticamente un flujo de datos con el alias asignado. Cuando el activo se cree más adelante, utilice la [ AssociateTimeSeriesToAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssociateTimeSeriesToAssetProperty.html)API para asociar el flujo de datos y su alias a la propiedad del activo. 
+  Si primero se crea un activo, utilice la [ UpdateAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html)API para asignar un alias a una propiedad del activo. Cuando los datos se envíen posteriormente a AWS IoT SiteWise, el flujo de datos se crea automáticamente y se asocia a la propiedad del activo. 

Actualmente, solo puede asociar flujos de datos con mediciones. Las *Mediciones* son un tipo de propiedad de activo que representan flujos de datos de sensores sin procesar de los dispositivos, como valores de temperatura con marca de tiempo o valores de revoluciones por minuto (RPM) con marca de tiempo.

Cuando estas mediciones definen métricas o transformaciones, los datos entrantes desencadenan cálculos específicos. Es importante tener en cuenta que una propiedad de activo solo se puede enlazar a un flujo de datos a la vez.

AWS IoT SiteWise utiliza `TimeSeries` el recurso Amazon Resource Name (ARN) para determinar los cargos de almacenamiento. Para obtener más información, consulte [AWS IoT SiteWise Precios](https://aws.amazon.com/iot-sitewise/pricing/).

En las siguientes secciones, se muestra cómo utilizar la AWS IoT SiteWise consola o la API para gestionar los flujos de datos.

**Topics**
+ [Configuración de permisos y ajustes](manage-data-streams-configuration.md)
+ [Asocie un flujo de datos a una propiedad de un activo](manage-data-streams-method.md)
+ [Desasocie un flujo de datos de una propiedad de activo](disassociate-data-streams-method.md)
+ [Eliminación de un flujo de datos](delete-data-streams-method.md)
+ [Actualice el alias de una propiedad de un activo](update-data-streams-method.md)
+ [Escenarios habituales](data-ingestion-scenarios.md)

# Configuración de permisos y ajustes
<a name="manage-data-streams-configuration"></a>

 Los flujos de datos se crean automáticamente AWS IoT SiteWise cuando se reciben los primeros datos de series temporales. Si los datos ingeridos no están asociados a una propiedad de activo, AWS IoT SiteWise crea un nuevo flujo de datos disociado que se puede configurar para asociarse a una propiedad de activo. Configure el control de acceso de la puerta de enlace a AWS IoT SiteWise la que se envían los datos mediante políticas de IAM para especificar el tipo de datos que se van a ingerir. 

 La siguiente política de IAM desactiva la ingesta de datos disociados de la puerta de enlace y, al mismo tiempo, permite la ingesta de datos a los flujos de datos asociados a una propiedad de activo: 

**Example Política de usuario de IAM que desactiva la ingesta disociada de datos desde la puerta de enlace**    
****  

```
{
    "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 Política de usuario de IAM que desactiva toda la ingesta de datos desde la puerta de enlace**    
****  

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

# Asocie un flujo de datos a una propiedad de un activo
<a name="manage-data-streams-method"></a>

Administre sus flujos de datos con Consola de AWS IoT SiteWise o AWS CLI.

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

Utilice la AWS IoT SiteWise consola para gestionar sus flujos de datos.

**Para administrar flujos de datos (consola)**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Flujos de datos**.

1. Elija un flujo de datos filtrando por el alias del flujo de datos o seleccionando **Flujos de datos diasociados** en el menú desplegable de filtros.

1. Seleccione el flujo de datos que desee actualizar. Puede seleccionar varios flujos de datos. Haga clic en **Administrar flujos de datos** en la esquina superior derecha. 

1. Seleccione el flujo de datos que desee asociar en **Actualizar asociaciones de flujos de datos** y haga clic en el botón **Elegir medición**.

1.  En la sección **Elegir medición**, busque la propiedad de medición de activos correspondiente. Seleccione la medida y, a continuación, haga clic en **Elegir**. 

1.  Realice los pasos 4 y 5 para otros flujos de datos seleccionados en el paso 3. Asigne propiedades de activos a todos los flujos de datos. 

1.  Elija **Actualizar** para confirmar los cambios. Aparece un cartel de confirmación de que la actualización se ha realizado correctamente. 

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

 Para asociar un flujo de datos (identificado por su alias) a una propiedad de activo (identificada por su IDs), ejecute el siguiente comando: 

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

------

# Desasocie un flujo de datos de una propiedad de activo
<a name="disassociate-data-streams-method"></a>

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

Utilice la AWS IoT SiteWise consola para desasociar el flujo de datos de una propiedad de activo.

**Para desasociar los flujos de datos de una propiedad de activo (consola)**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. En el panel de navegación, seleccione **Flujos de datos**.

1. Elija un flujo de datos filtrando por el alias del flujo de datos o seleccionando **Flujos de datos asociados** en el menú desplegable del filtro.

1. Seleccione el flujo de datos que desee desasociar. La columna de **alias del flujo de datos** debe contener un alias. Las columnas **Nombre del activo** **y Nombre de la propiedad del** activo deben contener los valores de la propiedad del activo a la que está asociado el flujo de datos. Puede seleccionar varios flujos de datos.

1.  Haga clic en **Administrar flujos de datos** en la esquina superior derecha. 

1.  En la sección **Actualizar asociaciones de flujos de datos**, haga clic en la **X** de la columna **Nombre de la medición**. Debería aparecer un `submitted` estado en la columna **Estado**. 

1.  Seleccione **Actualizar** para confirmar los cambios. El flujo de datos ahora está disociado de la propiedad del activo y el alias se utiliza ahora para identificar el flujo de datos. 

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

Para desasociar un flujo de datos de una propiedad de activo (identificada por su `ID` s y su alias), ejecute el siguiente comando: 

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

 El flujo de datos ahora está disociado de la propiedad del activo y el alias se utiliza para identificar el flujo de datos. El alias ya no está asociado a la propiedad del activo, ya que ahora está asociado al flujo de datos. 

------

# Eliminación de un flujo de datos
<a name="delete-data-streams-method"></a>

 Cuando se elimina una propiedad de un modelo de activos, AWS IoT SiteWise elimina las propiedades y sus flujos de datos de todos los activos gestionados por el modelo de activos. También elimina todas las propiedades y sus flujos de datos de un activo cuando se elimina el activo. Si se deben conservar los datos de un flujo de datos, se deben disociar de la propiedad del activo antes de eliminarlos. 

**aviso**  
 Cuando se elimina una propiedad de un activo, también se elimina el flujo de datos asociado. Para conservar el flujo de datos, desasócielo primero de la propiedad del activo, antes de eliminar la propiedad del modelo de activo o eliminar el activo. 

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

Utilice la AWS IoT SiteWise consola para desasociar el flujo de datos de una propiedad de activo.

**Para eliminar un flujo de datos (consola)**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1.  En el panel de navegación, seleccione **Flujos de datos**. 

1.  Elija un flujo de datos filtrando el alias del flujo de datos. 

1.  Seleccione el flujo de datos que desee eliminar. Puede seleccionar varios flujos de datos. 

1.  Pulse el botón **Eliminar** para eliminar el flujo de datos. 

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

 Utilice la [ DeleteTimeSeries](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteTimeSeries.html)API para eliminar un flujo de datos específico por su alias. 

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

------

# Actualice el alias de una propiedad de un activo
<a name="update-data-streams-method"></a>

 Los alias deben ser únicos dentro de una AWS región. Esto incluye los alias de las propiedades de los activos y de los flujos de datos. No asigne un alias a una propiedad de un activo si otra propiedad o flujo de datos utiliza ese alias. 

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

Utilice la AWS IoT SiteWise consola para actualizar el alias de una propiedad de un activo.

**Para actualizar el alias de una propiedad de un activo (consola)**

1. <a name="sitewise-open-console"></a>Vaya a la [consola de AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1.  En el panel de navegación, elija **Activos**. 

1.  Seleccione el activo de la tabla. 

1.  Haga clic en el botón **Edit (Editar)**. 

1.  Seleccione el **tipo de propiedad** en la tabla de **propiedades**. 

1.  Busque la propiedad y escriba el nuevo alias en el campo de texto del alias de la propiedad. 

1.  Haga clic en el botón **Guardar** para guardar los cambios. 

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

 Para actualizar un alias en una propiedad de un activo, ejecute el siguiente comando: 

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

**nota**  
 Si las notificaciones de propiedades están habilitadas actualmente, se deben volver a proporcionar para garantizar que sigan activadas. 

------

# Escenarios habituales
<a name="data-ingestion-scenarios"></a>

## Mover un flujo de datos
<a name="data-ingestion-scenario-move-data-stream"></a>

 Para cambiar la asociación de un flujo de datos con otra propiedad del activo, primero desasocie el flujo de datos de la propiedad del activo actual. Al disociar un flujo de datos de una propiedad de activo, debe haber un alias asignado a esa propiedad de activo. 

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

 Ahora reasigne el flujo de datos a la nueva propiedad del activo. 

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

## Error al asignar un alias a una propiedad de activo
<a name="data-ingestion-scenario-assetid-contains-data"></a>

 Al utilizar la `UpdateAssetProperty` API para asignar un alias a una propiedad, es posible que aparezca el siguiente mensaje de error: 

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

 Este mensaje de error indica que el alias no está asignado a la propiedad porque lo usa actualmente otra propiedad o un flujo de datos. 

 Esto ocurre si los datos se ingieren AWS IoT SiteWise con un alias. Cuando los datos se envían con un alias que no está siendo utilizado por otro flujo de datos o propiedad de activo, se crea un nuevo flujo de datos con ese alias. Las dos opciones siguientes resuelven el problema. 
+  Utilice la `AssociateTimeSeriesToAssetProperty` API para asociar el flujo de datos con su alias a la propiedad del activo. 
+  Detenga temporalmente la ingesta de datos y elimine el flujo de datos. Utilice la `UpdateAssetProperty` API para asignar el alias a la propiedad del activo y, a continuación, vuelva a activar la ingesta de datos. 

## Error al asociar un flujo de datos a una propiedad de activo
<a name="data-ingestion-scenario-move-data-stream"></a>

 Al asociar un flujo de datos a una propiedad de un activo, aparece el siguiente mensaje de error. 

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

 Este mensaje de error indica que la propiedad del activo ya está asociada a un flujo de datos que contiene datos. Ese flujo de datos debe disociarse o eliminarse antes de asociar otro flujo de datos a esa propiedad del activo. 

**nota**  
 Al disociar un flujo de datos de una propiedad de activo, el alias asignado a la propiedad se asigna al flujo de datos. Para que ese alias permanezca asignado a la propiedad, asigne un nuevo alias a esa propiedad antes de disociar el flujo de datos. 

 Para conservar los datos almacenados en la propiedad del activo, haga lo siguiente: 
+  Asegúrese de que no se ingieran datos en la propiedad del activo para evitar la creación de un nuevo flujo de datos. 
+  Utilice la `UpdateAssetProperty` API para establecer un nuevo alias que se asigne al flujo de datos actualmente asignado. 
+  Utilice la `DisassociateTimeSeriesFromAssetProperty` API para desasociar el flujo de datos actual de la propiedad del activo. 
+  Utilice la `AssociateTimeSeriesToAssetProperty` API para asociar el flujo de datos deseado a la propiedad del activo. 

 Si se deben eliminar los datos almacenados en la propiedad del activo, haga lo siguiente: 
+  Asegúrese de que no se ingiera ningún dato a la propiedad del activo para evitar la creación de un nuevo flujo de datos. 
+  Utilice `DeleteTimeSeries` la API para eliminar el flujo de datos actualmente asignado. 
+  Utilice la `AssociateTimeSeriesToAssetProperty` API para asociar el flujo de datos deseado a la propiedad del activo. 

# Ingiera datos con AWS IoT SiteWise APIs
<a name="ingest-api"></a>

 AWS IoT SiteWise APIs Utilícelo para enviar datos industriales con fecha y hora a las propiedades de medición y atributos de sus activos. APIs Acepta estructuras que contienen cargas útiles (TQV). timestamp-quality-value

# BatchPutAssetPropertyValue API
<a name="ingest-api-batch-putasset"></a>

Utilice la operación [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) para cargar sus datos. Con esta operación, puede cargar varias entradas de datos a la vez para recopilar datos de varios dispositivos y enviarlos todos en una sola solicitud.

**importante**  
La [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)operación está sujeta a las siguientes cuotas:   
Hasta 10 [entradas](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html#API_BatchPutAssetPropertyValue_RequestSyntax) por solicitud.
Hasta 10 [valores de propiedad](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetPropertyValueEntry.html#iotsitewise-Type-PutAssetPropertyValueEntry-propertyValues) (puntos de datos TQV) por entrada. 
AWS IoT SiteWise rechaza cualquier dato con una marca de tiempo fechada en más de 7 días o más de 10 minutos en el futuro.
 Para obtener más información acerca de estas cuotas, consulte [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) en la *Referencia de API de AWS IoT SiteWise *.

Para identificar la propiedad de un activo, especifique una de las siguientes opciones:
+ `assetId` y `propertyId` de la propiedad del activo a la que está enviando datos.
+ El `propertyAlias`, que es un alias de flujo de datos (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para utilizar esta opción, primero debe establecer el alias de la propiedad del activo. Para establecer alias de propiedades, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).

El siguiente ejemplo muestra cómo enviar lecturas de temperatura y rotaciones por minuto (RPM) de una turbina eólica desde una carga útil almacenada en un archivo JSON.

```
aws iotsitewise batch-put-asset-property-value --cli-input-json file://batch-put-payload.json
```

La carga útil de ejemplo `batch-put-payload.json` tiene el siguiente contenido.

```
{
  "enablePartialEntryProcessing": true,      
  "entries": [
    {
      "entryId": "unique entry ID",
      "propertyAlias": "/company/windfarm/3/turbine/7/temperature",
      "propertyValues": [
        {
          "value": {
            "integerValue": 38
          },
          "timestamp": {
            "timeInSeconds": 1575691200
          }
        }
      ]
    },
    {
      "entryId": "unique entry ID",
      "propertyAlias": "/company/windfarm/3/turbine/7/rpm",
      "propertyValues": [
        {
          "value": {
            "doubleValue": 15.09
          },
          "timestamp": {
            "timeInSeconds": 1575691200
          },
          "quality": "GOOD"
        }
      ]
    },
    {
  "entryId": "unique entry ID",
      "propertyAlias": "/company/windfarm/3/turbine/7/rpm",
      "propertyValues": [
        {
  "value": {
  "nullValue":{"valueType": "D"}
          },
          "timestamp": {
  "timeInSeconds": 1575691200
          },
          "quality": "BAD"
        }
      ]
    }
  ]
}
```

Si `enablePartialEntryProcessing` se especifica como, se `true` permite la ingesta de todos los valores que no provoquen errores. El comportamiento predeterminado es `false`. Si un valor no es válido, no se podrá ingerir toda la entrada.

Cada entrada de la carga contiene un `entryId` que puede definir como una única cadena. Si la entrada de la solicitud no se realiza correctamente, cada error contendrá el `entryId` de la solicitud correspondiente para que sepa qué solicitudes deben volver a intentarse.

Cada estructura de la lista de `propertyValues` es una estructura timestamp-quality-value (TQV) que contiene a`value`, a y, opcionalmente`timestamp`, a. `quality`
+ `value`: una estructura que contiene uno de los siguientes campos, en función del tipo de propiedad que se establezca:
  + `booleanValue`
  + `doubleValue`
  + `integerValue`
  + `stringValue`
  + `nullValue`
+ `nullValue`— Una estructura con el siguiente campo que indica el tipo de valor de la propiedad con un valor nulo y una calidad de `BAD` o. `UNCERTAIN`
  + `valueType`— Enuma de \$1"B», «D», «S», «I"\$1
+ `timestamp`: una estructura que contiene el tiempo en segundos en formato de tiempo Unix, `timeInSeconds`. También puede configurar la `offsetInNanos` clave en la `timestamp` estructura si tiene datos precisos en el momento. AWS IoT SiteWise rechaza cualquier punto de datos con marcas de tiempo anteriores a 7 días o posteriores a 10 minutos en el futuro.
+ `quality`: (opcional) una de las siguientes cadenas de calidad:
  + `GOOD`: (predeterminado) los datos no se ven afectados por ningún problema.
  + `BAD`: los datos se ven afectados por un problema, como un fallo del sensor.
  + `UNCERTAIN`: los datos se ven afectados por un problema, como la falta de precisión de un sensor.

  Para obtener más información sobre cómo se AWS IoT SiteWise gestiona la calidad de los datos en los cálculos, consulte Calidad de [los datos en las expresiones de](expression-tutorials.md#data-quality) fórmulas.

# CreateBulkImportJob API
<a name="ingest-bulkImport"></a>

Utilice la API `CreateBulkImportJob` para importar grandes cantidades de datos de Amazon S3. Los datos deben guardarse en formato CSV en Amazon S3. Los archivos de datos pueden tener las siguientes columnas.

**nota**  
 No se admiten datos anteriores a las 00:00:00 UTC del 1 de enero de 1970.   
Para identificar la propiedad de un activo, especifique una de las siguientes opciones.  
La `ASSET_ID` y `PROPERTY_ID` de la propiedad del activo al que va a enviar los datos.
El `ALIAS`, que es un alias de flujo de datos (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para utilizar esta opción, primero debe establecer el alias de la propiedad del activo. Para aprender a configurar los alias de las propiedades, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).
+ `ALIAS`: el alias que identifica la propiedad, como una ruta de flujo de datos del servidor OPC UA (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para obtener más información, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).
+ `ASSET_ID`: el ID del activo.
+ `PROPERTY_ID`: el ID de la propiedad del activo.
+ `DATA_TYPE`: el tipo de datos de la propiedad puede ser uno de los siguientes.
  + `STRING` – Una cadena con hasta 1024 bytes.
  + `INTEGER`: un entero de 32 bits con signo con rango [-2.147.483.648, 2.147.483.647].
  + `DOUBLE`: un número de punto flotante con rango [-10^100, 10^100] e IEEE 754 doble precisión.
  + `BOOLEAN` – `true` o `false`.
+ `TIMESTAMP_SECONDS`: la marca temporal del punto de datos, con la hora en formato Unix.
+ `TIMESTAMP_NANO_OFFSET`: el desplazamiento de nanosegundos convertido de `TIMESTAMP_SECONDS`.
+ `QUALITY`: (opcional) La calidad del valor de la propiedad del activo. El valor puede ser uno de los siguientes:
  + `GOOD`: (predeterminado) los datos no se ven afectados por ningún problema.
  + `BAD`: los datos se ven afectados por un problema, como un fallo del sensor.
  + `UNCERTAIN`: los datos se ven afectados por un problema, como la falta de precisión de un sensor.

  Para obtener más información sobre cómo se AWS IoT SiteWise gestiona la calidad de los datos en los cálculos, consulte Calidad de [los datos en las expresiones de](expression-tutorials.md#data-quality) fórmulas.
+ `VALUE`: el valor de la propiedad del activo.

**Example archivo(s) de datos en formato .csv**  

```
asset_id,property_id,DOUBLE,1635201373,0,GOOD,1.0
asset_id,property_id,DOUBLE,1635201374,0,GOOD,2.0
asset_id,property_id,DOUBLE,1635201375,0,GOOD,3.0
```

```
unmodeled_alias1,DOUBLE,1635201373,0,GOOD,1.0
unmodeled_alias1,DOUBLE,1635201374,0,GOOD,2.0
unmodeled_alias1,DOUBLE,1635201375,0,GOOD,3.0
unmodeled_alias1,DOUBLE,1635201376,0,GOOD,4.0
unmodeled_alias1,DOUBLE,1635201377,0,GOOD,5.0
unmodeled_alias1,DOUBLE,1635201378,0,GOOD,6.0
unmodeled_alias1,DOUBLE,1635201379,0,GOOD,7.0
unmodeled_alias1,DOUBLE,1635201380,0,GOOD,8.0
unmodeled_alias1,DOUBLE,1635201381,0,GOOD,9.0
unmodeled_alias1,DOUBLE,1635201382,0,GOOD,10.0
```

AWS IoT SiteWise proporciona las siguientes operaciones de API para crear un trabajo de importación masiva y obtener información sobre un trabajo existente.
+ [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)— Crea un nuevo trabajo de importación masiva.
+ [DescribeBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeBulkImportJob.html)— Recupera información sobre un trabajo de importación masiva.
+ [ListBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListBulkImportJobs.html)— Recupera una lista paginada de resúmenes de todos los trabajos de importación masiva.

# Crea un trabajo de importación AWS IoT SiteWise masiva ()AWS CLI
<a name="CreateBulkImportJob"></a>

Utilice la operación de [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API para transferir datos de Amazon S3 a AWS IoT SiteWise. La [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API permite la ingesta de grandes volúmenes de datos históricos y la ingesta en búfer de flujos de datos analíticos en lotes pequeños. Proporciona un método básico rentable para la ingesta de datos. El siguiente ejemplo utiliza AWS CLI.

**importante**  
Antes de crear un trabajo de importación masiva, debe habilitar el nivel AWS IoT SiteWise cálido o el nivel frío. AWS IoT SiteWise Para obtener más información, consulte [Configure los ajustes de almacenamiento en AWS IoT SiteWise](configure-storage.md).  
 La [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API admite la ingesta de datos históricos AWS IoT SiteWise con la opción de configurar el adaptive-ingestion-flag parámetro.   
Cuando se configura en `false`, la API ingiere datos históricos sin activar cálculos ni notificaciones.
Cuando se configura en `true`, la API ingiere nuevos datos, calculando métricas y transformando los datos para optimizar los análisis y las notificaciones continuos en un plazo de siete días.

Ejecute el comando siguiente. *file-name*Sustitúyalo por el nombre del archivo que contiene la configuración del trabajo de importación masiva.

```
aws iotsitewise create-bulk-import-job --cli-input-json file://file-name.json
```

**Example Configuración de trabajos de importación masiva**  
A continuación se ofrecen ejemplos de configuración:  
+ Reemplace *adaptive-ingestion-flag* por `true` o `false`.
  + Si se establece en `false`, el trabajo de importación masiva ingiere datos históricos en AWS IoT SiteWise.
  + Si se establece en `true`, el trabajo de importación masiva hace lo siguiente:
    + Ingiere nuevos datos en. AWS IoT SiteWise
    + Calcula métricas y transformaciones, y admite notificaciones de datos con una marca de tiempo de siete días.
+ *delete-files-after-import-flag*Sustitúyalos por `true` para eliminar los datos del depósito de datos de Amazon S3 después de ingerirlos en un almacenamiento de nivel AWS IoT SiteWise cálido.
+ Sustituya amzn-s3-demo-bucket por el *-for-errors* nombre del bucket de Amazon S3 al que se envían los errores asociados a este trabajo de importación masiva.
+ Sustituya amzn-s3-demo-bucket por el *-for-errors-prefix* prefijo del bucket de Amazon S3 al que se envían los errores asociados a este trabajo de importación masiva. 

  Amazon S3 usa el prefijo como nombre de carpeta para organizar los datos del bucket. Cada objeto de Amazon S3 tiene una clave que es su identificador único en el bucket. Cada objeto de un bucket tiene exactamente una clave. El prefijo debe terminar con una barra diagonal: (/). Para obtener más información, consulte [Organizar objetos usando prefijos](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) en la *Guía para usuarios de Amazon Simple Storage Service*.
+ Sustituya amzn-s3-demo-bucket por el *-data* nombre del bucket de Amazon S3 desde el que se importan los datos.
+ *data-bucket-key*Sustitúyala por la clave del objeto de Amazon S3 que contiene los datos. Cada objeto tiene una clave que es un identificador único. Cada objeto tiene exactamente una clave.
+ *data-bucket-version-id*Sustitúyalo por el ID de versión para identificar una versión específica del objeto de Amazon S3 que contiene sus datos. Este parámetro es opcional.
+ *column-name*Sustitúyalo por el nombre de la columna especificado en el archivo.csv.
+ *job-name*Sustitúyalo por un nombre único que identifique el trabajo de importación masiva.
+ *job-role-arn*Sustitúyalo por el rol de IAM que AWS IoT SiteWise permite leer los datos de Amazon S3.
Asegúrese de que el rol tenga los permisos que se muestran en el siguiente ejemplo. Sustituya amzn-s3-demo-bucket por el *-data* nombre del bucket de Amazon S3 que contiene los datos. Además, *amzn-s3-demo-bucket-for-errors* sustitúyalo por el nombre del bucket de Amazon S3 al que se envían los errores asociados a este trabajo de importación masiva.    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-data",
                "arn:aws:s3:::amzn-s3-demo-bucket-data/*"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:GetBucketLocation"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket-for-errors",
                "arn:aws:s3:::amzn-s3-demo-bucket-for-errors/*"
            ],
            "Effect": "Allow"
        }
    ]
}
```

```
{
   "adaptiveIngestion": adaptive-ingestion-flag,
   "deleteFilesAfterImport": delete-files-after-import-flag,       
   "errorReportLocation": { 
      "bucket": "amzn-s3-demo-bucket-for-errors",
      "prefix": "amzn-s3-demo-bucket-for-errors-prefix"
   },
   "files": [ 
      { 
         "bucket": "amzn-s3-demo-bucket-data",
         "key": "data-bucket-key",
         "versionId": "data-bucket-version-id"
      }
   ],
   "jobConfiguration": { 
      "fileFormat": { 
         "csv": { 
            "columnNames": [ "column-name" ]
         }
      }
   },
   "jobName": "job-name",
   "jobRoleArn": "job-role-arn"    
}
```

**Example response**  

```
{
   "jobId":"f8c031d0-01d1-4b94-90b1-afe8bb93b7e5",
   "jobStatus":"PENDING",
   "jobName":"myBulkImportJob"
}
```

# Describa un trabajo de importación AWS IoT SiteWise masiva (AWS CLI)
<a name="DescribeBulkImportJob"></a>

Utilice la operación de la [DescribeBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeBulkImportJob.html)API para recuperar información sobre un trabajo de importación masiva específico en AWS IoT SiteWise. Esta operación devuelve detalles como estado del trabajo, hora de creación e información de error si el trabajo ha fallado. Puede utilizar esta operación para supervisar el progreso del trabajo y solucionar problemas. Para utilizar `DescribeBulkImportJob` necesita el ID del trabajo de la operación de `CreateBulkImportJob`. La API devuelve la siguiente información:
+ Lista de archivos que se están importando, incluidas sus ubicaciones y claves de los buckets de Amazon S3
+ Ubicación del informe de errores (si corresponde)
+ Detalles de configuración del trabajo, como formato de archivo y nombres de columnas del CSV
+ Marcas de tiempo de creación de trabajo y última actualización
+ Estado actual del trabajo (por ejemplo, si el trabajo está en curso, se ha completado o ha fallado)
+ ARN de rol de IAM para el trabajo de importación 

En el caso de los trabajos finalizados, revise los resultados para confirmar que la integración de datos se ha realizado correctamente. Si un trabajo falla, examine los detalles del error para diagnosticar y resolver los problemas.

*job-ID*Sustitúyalo por el ID del trabajo de importación masiva que deseas recuperar.

```
aws iotsitewise describe-bulk-import-job --job-id job-ID
```

**Example response**  

```
{
   "files":[
      {
         "bucket":"amzn-s3-demo-bucket1",
         "key":"100Tags12Hours.csv"
      },
      {
         "bucket":"amzn-s3-demo-bucket2",
         "key":"BulkImportData1MB.csv"
      },
      {
         "bucket":"	amzn-s3-demo-bucket3",
         "key":"UnmodeledBulkImportData1MB.csv"
      }
   ],
   "errorReportLocation":{
      "prefix":"errors/",
      "bucket":"amzn-s3-demo-bucket-for-errors"
   },
   "jobConfiguration":{
      "fileFormat":{
         "csv":{
            "columnNames":[
               "ALIAS",
               "DATA_TYPE",
               "TIMESTAMP_SECONDS",
               "TIMESTAMP_NANO_OFFSET",
               "QUALITY",
               "VALUE"
            ]
         }
      }
   },
   "jobCreationDate":1645745176.498,
   "jobStatus":"COMPLETED",
   "jobName":"myBulkImportJob",
   "jobLastUpdateDate":1645745279.968,
   "jobRoleArn":"arn:aws:iam::123456789012:role/DemoRole",
   "jobId":"f8c031d0-01d1-4b94-90b1-afe8bb93b7e5"
}
```

# Enumere los trabajos de importación AWS IoT SiteWise masiva (AWS CLI)
<a name="ListBulkImportJobs"></a>

Utilice la operación de la [ListBulkImportJobs](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListBulkImportJobss.html)API para recuperar una lista de resúmenes de los trabajos de importación masiva en AWS IoT SiteWise. Esta operación proporciona una forma eficaz de supervisar y administrar los procesos de importación de datos. Devuelve la siguiente información clave para cada trabajo:
+ ID del trabajo. Identificador único para cada trabajo de importación masiva
+ Nombre del trabajo. Nombre que asignó al trabajo cuando lo creó.
+ Estado actual. Estado actual del trabajo (por ejemplo, COMPLETED, RUNNING, FAILED)

ListBulkImportJobs es especialmente útil para obtener una visión general completa de todos sus trabajos de importación masiva. Puede ayudarlo a realizar un seguimiento de las múltiples importaciones de datos, identificar los trabajos que requieren atención y mantener un flujo de trabajo organizado. La operación admite paginación, lo que permite recuperar un gran número de resúmenes de trabajos de manera eficiente. Puede utilizar el trabajo IDs devuelto por esta operación con la [DescribeBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeBulkImportJob.html)operación para recuperar información más detallada sobre trabajos específicos. Este proceso de dos pasos le permite obtener primero una vista de alto nivel de todos los trabajos y, a continuación, profundizar en los detalles de los trabajos de interés. Cuando utilice `ListBulkImportJobs`, puede aplicar filtros para acotar los resultados. Por ejemplo, puede filtrar los trabajos en función de su estado para recuperar solo los trabajos finalizados o solo los trabajos en ejecución. Esta característica ayuda a centrarse en la información más relevante para su tarea actual. La operación también devuelve un `nextToken` si hay más resultados disponibles. Puede usar este token en llamadas posteriores para recuperar el siguiente conjunto de resúmenes de trabajos, lo que le permitirá iterar por todos los trabajos de importación masiva, aunque tenga muchos. En el siguiente ejemplo, se muestra cómo `ListBulkImportJobs` utilizarla AWS CLI para recuperar una lista de trabajos finalizados.

```
aws iotsitewise list-bulk-import-jobs --filter COMPLETED
```

**Example Filtro de respuesta para trabajos completados**  

```
{
   "jobSummaries":[
      {
         "id":"bdbbfa52-d775-4952-b816-13ba1c7cb9da",
         "name":"myBulkImportJob",
         "status":"COMPLETED"
      },
      {
         "id":"15ffc641-dbd8-40c6-9983-5cb3b0bc3e6b",
         "name":"myBulkImportJob2",
         "status":"COMPLETED"
      }
   ]
}
```

Este comando muestra cómo se utiliza `ListBulkImportJobs` para recuperar una lista de trabajos que se han completado con errores. El máximo está establecido en 50 resultados y utilizamos el siguiente token para los resultados paginados.

```
aws iotsitewise list-bulk-import-jobs --filter COMPLETED_WITH_FAILURES --max-results 50 --next-token "string"
```

# Ingiera datos para AWS IoT SiteWise usar reglas AWS IoT Core
<a name="iot-rules"></a>

Envíe datos AWS IoT SiteWise desde AWS IoT objetos y otros AWS servicios mediante las reglas de AWS IoT Core. Las reglas transforman los mensajes de MQTT y realizan acciones para interactuar con AWS los servicios. La acción de la AWS IoT SiteWise regla reenvía los datos de los mensajes a la [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)operación desde la AWS IoT SiteWise API. Para obtener más información, consulte [Reglas](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) y [Acción AWS IoT SiteWise](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotsitewise-rule) en la *Guía para desarrolladores de AWS IoT *.

Si desea consultar un tutorial con los pasos necesarios para configurar una regla que ingiera datos a través de sus sombras de dispositivo, vea [Transfiere datos AWS IoT SiteWise desde cosas AWS IoT](ingest-data-from-iot-things.md).

También puedes enviar datos desde AWS IoT SiteWise otros AWS servicios. Para obtener más información, consulte [Interactúa con otros AWS servicios](interact-with-other-services.md).

**Topics**
+ [Conceda AWS IoT el acceso requerido](grant-rule-access.md)
+ [Configure la acción de la AWS IoT SiteWise regla](configure-rule-action.md)
+ [Reduzca los costes con Basic Ingest in AWS IoT SiteWise](basic-ingest-rules.md)

# Conceda AWS IoT el acceso requerido
<a name="grant-rule-access"></a>

Las funciones de IAM se utilizan para controlar los AWS recursos a los que tiene acceso cada regla. Antes de crear una regla, debe crear una función de IAM con una política que permita a la regla realizar acciones en el recurso requerido AWS . AWS IoT asume esta función al ejecutar una regla.

Si crea la acción de la regla en la AWS IoT consola, puede elegir un activo raíz para crear un rol que tenga acceso a una jerarquía de activos seleccionada. Para obtener más información sobre cómo definir manualmente un rol para una regla, consulte [Otorgar AWS IoT el acceso necesario](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html) y [transferir los permisos de rol](https://docs.aws.amazon.com/iot/latest/developerguide/pass-role.html) en la *Guía para AWS IoT desarrolladores*.

Para la acción de la AWS IoT SiteWise regla, debe definir una función que permita el `iotsitewise:BatchPutAssetPropertyValue` acceso a las propiedades de los activos a las que la regla envía los datos. Para mejorar la seguridad, puede especificar una ruta jerárquica de AWS IoT SiteWise activos en la `Condition` propiedad. 

La siguiente política de confianza de ejemplo permite el acceso a un activo específico y a sus secundarios.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iotsitewise:BatchPutAssetPropertyValue",
      "Resource": "*",
      "Condition": {
        "StringLike": {
          "iotsitewise:assetHierarchyPath": [
            "/root node asset ID",
            "/root node asset ID/*"
          ]
        }
      }
    }
  ]
}
```

------

Quite `Condition` de la política para permitir el acceso a todos sus activos. La política de confianza de ejemplo siguiente permite el acceso a todos los activos de la región actual.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "iotsitewise:BatchPutAssetPropertyValue",
      "Resource": "*"
    }
  ]
}
```

------

# Configure la acción de la AWS IoT SiteWise regla
<a name="configure-rule-action"></a>

La acción de la AWS IoT SiteWise regla envía los datos del mensaje MQTT que inició la regla a las propiedades del activo. AWS IoT SiteWise Puede cargar varias entradas de datos a diferentes propiedades de activos al mismo tiempo para enviar actualizaciones para todos los sensores de un dispositivo en un solo mensaje. También puede cargar varios puntos de datos a la vez para cada entrada de datos.

**nota**  
Al enviar datos a AWS IoT SiteWise con la acción de la regla, estos deben cumplir todos los requisitos de la `BatchPutAssetPropertyValue` operación. Por ejemplo, los datos no pueden tener una marca temporal anterior a 7 días a partir de la hora actual en formato Unix. Para obtener más información, consulte [Ingesta de datos con la API AWS IoT SiteWise]().

Para cada entrada de datos de la acción de regla, se identifica una propiedad de activo y se especifica la marca temporal, la calidad y el valor de cada punto de datos para esa propiedad de activo. La acción de regla espera cadenas para todos los parámetros.

Para identificar una propiedad de activo en una entrada, puede especificar uno de los elementos siguientes:
+ El **Asset ID (ID de activo)** (`assetId`) y **Property ID (ID de propiedad)** (`propertyId`) de la propiedad del activo al que está enviando los datos. Puede encontrar el ID de activo y el ID de propiedad utilizando Consola de AWS IoT SiteWise. Si conoce el identificador del activo, puede utilizar el AWS CLI para llamar y [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)buscar el identificador de la propiedad.
+ El **Property alias (Alias de propiedad)** (`propertyAlias`), que es un alias de flujo de datos (por ejemplo, `/company/windfarm/3/turbine/7/temperature`). Para utilizar esta opción, primero debe establecer el alias de la propiedad del activo. Para aprender a configurar los alias de las propiedades, consulte [Gestione los flujos de datos para AWS IoT SiteWise](manage-data-streams.md).

Para la marca temporal de cada entrada, use la marca temporal proporcionada por AWS IoT Core o que notificó su equipo. La marca temporal tiene dos parámetros:
+ **Tiempo en segundos** (`timeInSeconds`): la hora en formato Unix, en segundos, a la que el sensor o el equipo notificó los datos.
+ **Desfase en nanosegundos** (`offsetInNanos`): (opcional) el desfase en nanosegundos respecto al tiempo en segundos.

**importante**  
Si la marca temporal es una cadena, tiene una parte decimal o no está en segundos, AWS IoT SiteWise rechaza la solicitud. Debe convertir la marca temporal en segundos y el desfase en nanosegundos. Utilice las funciones del motor de AWS IoT reglas para convertir la marca de tiempo. Para obtener más información, consulte los siguientes temas:  
[Obtener marcas temporales para dispositivos que no indican la hora exacta](#rule-timestamp-function)
[Convertir las marcas temporales que están en formato de cadena](#rule-time-to-epoch-function)

Puede utilizar plantillas de sustitución para varios parámetros para realizar cálculos, invocar funciones y extraer valores de la carga útil del mensaje. Para obtener más información, consulte [Plantillas de sustitución](https://docs.aws.amazon.com/iot/latest/developerguide/iot-substitution-templates.html) en la *Guía para desarrolladores de AWS IoT *.

**nota**  <a name="substitution-template-limitations"></a>
Dado que una expresión de una plantilla de sustitución se evalúa por separado de la instrucción `SELECT`, no se puede utilizar una plantilla de sustitución para hacer referencia a un alias creado mediante una cláusula `AS`. Solo puede hacer referencia a la información presente en la carga original, además de a las funciones y operadores compatibles.

**Topics**
+ [Obtener marcas temporales para dispositivos que no indican la hora exacta](#rule-timestamp-function)
+ [Convertir las marcas temporales que están en formato de cadena](#rule-time-to-epoch-function)
+ [Convertir cadenas de marcas temporales con una precisión de nanosegundos](#rule-convert-precise-timestamp-string)
+ [Ejemplo de configuraciones de regla](#rule-action-examples)
+ [Solución de problemas de la acción de regla de](#troubleshoot-rule-action)

## Obtener marcas temporales para dispositivos que no indican la hora exacta
<a name="rule-timestamp-function"></a>

[Si su sensor o equipo no proporciona datos de tiempo precisos, obtenga la época actual de Unix desde el motor de AWS IoT reglas con timestamp ().](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp) Esta función muestra la hora en milisegundos, por lo que debe convertir el valor a tiempo en segundos y desfase en nanosegundos. Para ello, utilice las siguientes conversiones:
+ En **Time in seconds (Hora en segundos)** (`timeInSeconds`), utilice **\$1\$1floor(timestamp() / 1E3)\$1** para convertir la hora de milisegundos a segundos.
+ En **Offset in nanos (Desfase en nanosegundos)** (`offsetInNanos`), utilice **\$1\$1(timestamp() % 1E3) \$1 1E6\$1** para calcular el desfase en nanosegundos de la marca temporal.

## Convertir las marcas temporales que están en formato de cadena
<a name="rule-time-to-epoch-function"></a>

Si su sensor o equipo notifica los datos de tiempo en formato de cadena (por ejemplo, `2020-03-03T14:57:14.699Z`), use [time\$1to\$1epoch(String, String)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-time-to-epoch). Esta función introduce la marca temporal y el patrón de formato como parámetros y genera el tiempo en milisegundos. A continuación, debe convertir el tiempo en tiempo en segundos y el desfase en nanosegundos. Para ello, utilice las siguientes conversiones:
+ En **Hora en segundos** (`timeInSeconds`), utilice **\$1\$1floor(time\$1to\$1epoch("2020-03-03T14:57:14.699Z", "yyyy-MM-dd'T'HH:mm:ss'Z'") / 1E3)\$1** para convertir la cadena de marca temporal a milisegundos, y luego a segundos.
+ En **Desfase en nanosegundos** (`offsetInNanos`), utilice **\$1\$1(time\$1to\$1epoch("2020-03-03T14:57:14.699Z", "yyyy-MM-dd'T'HH:mm:ss'Z'") % 1E3) \$1 1E6\$1** para calcular el desfase en nanosegundos de la cadena de la marca temporal.

**nota**  
La función `time_to_epoch` admite cadenas de marcas temporales con una precisión de hasta milisegundos. Para convertir cadenas con una precisión de microsegundos o nanosegundos, configura una AWS Lambda función a la que tu regla llame para convertir la marca de tiempo en valores numéricos. Para obtener más información, consulte [Convertir cadenas de marcas temporales con una precisión de nanosegundos](#rule-convert-precise-timestamp-string).

## Convertir cadenas de marcas temporales con una precisión de nanosegundos
<a name="rule-convert-precise-timestamp-string"></a>

Si su dispositivo envía información de marca temporal en formato de cadena (por ejemplo, `2020-03-03T14:57:14.699728491Z`), siga este procedimiento para configurar su acción de la regla. **Puedes crear una AWS Lambda función que convierta la marca temporal de una cadena en **Tiempo en segundos (`timeInSeconds`) y Offset en nanos** ().** `offsetInNanos` A continuación, use [aws\$1lambda(functionArn, inputJson)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda) en sus parámetros de acción de regla para invocar esa función de Lambda y usar la salida en su regla.

**nota**  
En esta sección se incluyen instrucciones avanzadas que suponen que está familiarizado con la forma de crear estos recursos:  
Funciones de Lambda. Para obtener más información, consulte [Creación de su primera función de Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) en la *Guía para desarrolladores de AWS Lambda *.
AWS IoT gobierna con la acción de la AWS IoT SiteWise regla. Para obtener más información, consulte [Ingiera datos para AWS IoT SiteWise usar reglas AWS IoT Core](iot-rules.md).

**Para crear una acción de AWS IoT SiteWise regla que analice cadenas de marcas de tiempo**

1. Cree una función de Lambda con las siguientes propiedades:
   + **Nombre de la función**: utilice un nombre de función descriptivo (por ejemplo, **ConvertNanosecondTimestampFromString**). 
   + **Tiempo de ejecución**: utilice un tiempo de ejecución de Python 3, como **Python 3.11** (`python3.11`).
   + **Permisos**: cree un rol con permisos Lambda básicos () **AWS LambdaBasicExecutionRole**.
   + **Capas**: añada la capa **AWS SDKPandas-Python311** para que la utilice la función Lambda. `numpy`
   + **Código de función**: utilice el siguiente código de función, que consume un argumento de cadena denominado `timestamp` y las salidas `timeInSeconds` y `offsetInNanos` los valores de esa marca temporal.

     ```
     import json
     import math
     import numpy
     
     # Converts a timestamp string into timeInSeconds and offsetInNanos in Unix epoch time.
     # The input timestamp string can have up to nanosecond precision.
     def lambda_handler(event, context):
         timestamp_str = event['timestamp']
         # Parse the timestamp string as nanoseconds since Unix epoch.
         nanoseconds = numpy.datetime64(timestamp_str, 'ns').item()
         time_in_seconds = math.floor(nanoseconds / 1E9)
         # Slice to avoid precision issues.
         offset_in_nanos = int(str(nanoseconds)[-9:])
         return {
             'timeInSeconds': time_in_seconds,
             'offsetInNanos': offset_in_nanos
         }
     ```

     [Esta función Lambda introduce cadenas de marcas de tiempo en formato [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) mediante datetime64 from.](https://numpy.org/doc/stable/reference/arrays.datetime.html) NumPy
**nota**  
Si las cadenas de marca temporal no están en formato ISO 8601, puede implementar una solución con pandas que defina el formato de la marca temporal. Para obtener más información, consulte [pandas.to\$1datetime](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html)..

1. **Al configurar la AWS IoT SiteWise acción de la regla, utilice las siguientes plantillas de sustitución para **Time in seconds (`timeInSeconds`) y Offset in nanos** ().** `offsetInNanos` Estas plantillas de sustitución suponen que su carga de mensaje contiene la cadena de marca temporal en `timestamp`. La función `aws_lambda` consume una estructura JSON para su segundo parámetro, por lo que puede modificar las siguientes plantillas de sustitución en caso necesario.
   + En **Time in seconds (Tiempo en segundos)** (`timeInSeconds`), use la siguiente plantilla de sustitución.

     ```
     ${aws_lambda('arn:aws:lambda:region:account-id:function:ConvertNanosecondTimestampFromString', {'timestamp': timestamp}).timeInSeconds}
     ```
   + En **Offset in nanos (Desfase en nanosegundos)** (`offsetInNanos`), use la siguiente plantilla de sustitución.

     ```
     ${aws_lambda('arn:aws:lambda:region:account-id:function:ConvertNanosecondTimestampFromString', {'timestamp': timestamp}).offsetInNanos}
     ```

   Para cada parámetro, sustituye *region* y *account-id* por tu región e ID de AWS cuenta. Si ha usado otro nombre para su función de Lambda, cámbielo también.

1. Concede AWS IoT permisos para invocar tu función con el `lambda:InvokeFunction` permiso. Para obtener más información, consulte [aws\$1lambda(functionArn, inputJson)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda).

1. Pruebe la regla (por ejemplo, utilice el cliente de prueba AWS IoT MQTT) y compruebe que AWS IoT SiteWise recibe los datos que envía.

   Si su regla no funciona según lo previsto, consulte [Solucionar problemas con una acción de AWS IoT SiteWise regla](troubleshoot-rule.md).

**nota**  
Esta solución invoca la función de Lambda dos veces para cada cadena de marca temporal. Puede crear otra regla para reducir el número de invocaciones de funciones de Lambda si su regla gestiona varios puntos de datos que tienen la misma marca temporal en cada carga.  
Para ello, cree una regla con una acción de volver a publicar que invoca Lambda y publica la carga original con la cadena de marca temporal convertida en `timeInSeconds` y `offsetInNanos`. A continuación, cree una regla con una acción de AWS IoT SiteWise regla para consumir la carga útil convertida. Con este enfoque, se reduce el número de veces que la regla invoca la Lambda, pero se aumenta el número de acciones AWS IoT de la regla que se ejecutan. Considere los precios de cada servicio si aplica esta solución a su caso de uso.

## Ejemplo de configuraciones de regla
<a name="rule-action-examples"></a>

Esta sección contiene ejemplos de configuraciones de reglas para crear una regla con una AWS IoT SiteWise acción.

**Example Acción de regla de ejemplo que utiliza alias de propiedad como temas de mensaje**  
En el siguiente ejemplo, se crea una regla con una AWS IoT SiteWise acción que utiliza el tema (a través del [tema ())](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-topic) como alias de la propiedad para identificar las propiedades de los activos. Utilice este ejemplo para definir una regla que incorpore datos de tipo doble a todos los aerogeneradores de todos los parques eólicos. Este ejemplo requiere que defina alias de propiedad en todas las propiedades de los activos de la turbina. Necesitaría definir una segunda regla similar para ingerir datos de tipo entero.  

```
aws iot create-topic-rule \
  --rule-name SiteWiseWindFarmRule \
  --topic-rule-payload file://sitewise-rule-payload.json
```
La carga de ejemplo en `sitewise-rule-payload.json` contiene el siguiente contenido.  

```
{
  "sql": "SELECT * FROM '/company/windfarm/+/turbine/+/+' WHERE type = 'double'",
  "description": "Sends data to the wind turbine asset property with the same alias as the topic",
  "ruleDisabled": false,
  "awsIotSqlVersion": "2016-03-23",
  "actions": [
    {
      "iotSiteWise": {
        "putAssetPropertyValueEntries": [
          {
            "propertyAlias": "${topic()}",
            "propertyValues": [
              {
                "timestamp": {
                  "timeInSeconds": "${timeInSeconds}"
                },
                "value": {
                  "doubleValue": "${value}"
                }
              }
            ]
          }
        ],
        "roleArn": "arn:aws:iam::account-id:role/MySiteWiseActionRole"
      }
    }
  ]
}
```
Con esta acción de regla, envíe el siguiente mensaje a un alias de propiedad de turbina eólica (por ejemplo, `/company/windfarm/3/turbine/7/temperature`) como tema para ingerir datos.  

```
{
  "type": "double",
  "value": "38.3",
  "timeInSeconds": "1581368533"
}
```

**Example Ejemplo de acción de regla que utiliza timestamp() para determinar la hora**  
En el siguiente ejemplo, se crea una regla con una AWS IoT SiteWise acción que identifica una propiedad de activo mediante timestamp () IDs y utiliza la [marca timestamp ()](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp) para determinar la hora actual.  

```
aws iot create-topic-rule \
  --rule-name SiteWiseAssetPropertyRule \
  --topic-rule-payload file://sitewise-rule-payload.json
```
La carga de ejemplo en `sitewise-rule-payload.json` contiene el siguiente contenido.  

```
{
  "sql": "SELECT * FROM 'my/asset/property/topic'",
  "description": "Sends device data to an asset property",
  "ruleDisabled": false,
  "awsIotSqlVersion": "2016-03-23",
  "actions": [
    {
      "iotSiteWise": {
        "putAssetPropertyValueEntries": [
          {
            "assetId": "a1b2c3d4-5678-90ab-cdef-22222EXAMPLE",
            "propertyId": "a1b2c3d4-5678-90ab-cdef-33333EXAMPLE",
            "propertyValues": [
              {
                "timestamp": {
                  "timeInSeconds": "${floor(timestamp() / 1E3)}",
                  "offsetInNanos": "${(timestamp() % 1E3) * 1E6}"
                },
                "value": {
                  "doubleValue": "${value}"
                }
              }
            ]
          }
        ],
        "roleArn": "arn:aws:iam::account-id:role/MySiteWiseActionRole"
      }
    }
  ]
}
```
Con esta acción de regla, envíe el siguiente mensaje a `my/asset/property/topic` para ingerir datos.  

```
{
  "type": "double",
  "value": "38.3"
}
```

## Solución de problemas de la acción de regla de
<a name="troubleshoot-rule-action"></a>

Para solucionar la acción de la AWS IoT SiteWise regla AWS IoT Core, configura CloudWatch los registros o configura una acción de error al volver a publicar la regla. Para obtener más información, consulte [Solucionar problemas con una acción de AWS IoT SiteWise regla](troubleshoot-rule.md).

# Reduzca los costes con Basic Ingest in AWS IoT SiteWise
<a name="basic-ingest-rules"></a>

AWS IoT Core [proporciona una función denominada ingesta básica que puede utilizar para enviar datos AWS IoT Core sin incurrir AWS IoT en costes de mensajería.](https://aws.amazon.com/iot-core/pricing/) Basic Ingest optimiza el flujo de datos para cargas de trabajo de ingestión de datos de gran volumen al eliminar el agente de publish/subscribe mensajes de la ruta de ingestión. Puede utilizar Basic Ingest si sabe a qué reglas deben dirigirse sus mensajes.

Para utilizar Basic Ingest, se envían mensajes directamente a una regla específica utilizando un tema especial, `$aws/rules/rule-name`. Por ejemplo, para enviar un mensaje a una regla denominada `SiteWiseWindFarmRule`, envíe un mensaje al tema `$aws/rules/SiteWiseWindFarmRule`.

Si la acción de regla utiliza plantillas de sustitución que contengan [topic(Decimal)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-topic), puede transferir el tema original al final del tema especial de Basic Ingest, como `$aws/rules/rule-name/original-topic`. Por ejemplo, para utilizar Basic Ingest con el ejemplo de alias de propiedad del parque eólico de la sección anterior, puede enviar mensajes al tema siguiente.

```
$aws/rules/SiteWiseWindFarmRule//company/windfarm/3/turbine/7/temperature
```

**nota**  
El ejemplo anterior incluye una segunda barra (`//`) porque AWS IoT elimina el prefijo Basic Ingest () del tema que está visible para la `$aws/rules/rule-name/` acción de la regla. En este ejemplo, la regla recibe el tema `/company/windfarm/3/turbine/7/temperature`.

Para obtener más información, consulte [Reducción de los costos de mensajería con Basic Ingest](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html) en la *Guía para desarrolladores de AWS IoT *.

# Ingiera datos desde AWS IoT SiteWise AWS IoT Events
<a name="iot-events"></a>

Con AWS IoT Events, puede crear aplicaciones de monitoreo de eventos complejas para su flota de IoT en la AWS nube. Utilice la SiteWise acción de IoT AWS IoT Events para enviar datos a las propiedades de los activos AWS IoT SiteWise cuando se produzca un evento.

**nota**  
Aviso de fin de soporte: se AWS ha finalizado el soporte para AWS IoT Events. Para obtener más información, consulte [AWS IoT Events el fin del soporte](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

AWS IoT Events está diseñado para agilizar el desarrollo de aplicaciones de monitoreo de eventos para dispositivos y sistemas de IoT dentro de la AWS nube. Si lo usa AWS IoT Events, puede:
+ Detectar cambios, anomalías o condiciones específicas en la flota de IoT y responder a ellos.
+  Mejorar la eficiencia operativa y habilitar la administración proactiva del ecosistema de IoT.

 Al integrarse a AWS IoT SiteWise través de la AWS IoT SiteWise acción, AWS IoT Events amplía sus capacidades, lo que le permite actualizar automáticamente las propiedades de los activos AWS IoT SiteWise en respuesta a eventos específicos. Esta interacción puede simplificar la ingesta y la administración de datos. También puede proporcionar información útil. 

Para obtener más información, consulte los siguientes temas de la *Guía para desarrolladores de AWS IoT Events *:
+ [¿Qué es AWS IoT Events?](https://docs.aws.amazon.com/iotevents/latest/developerguide/)
+ [Acciones de AWS IoT Events](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html)
+ [ SiteWise Acción de IoT](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-other-aws-services.html#iotevents-iotsitewise)

# Utilice el administrador de AWS IoT Greengrass transmisiones en AWS IoT SiteWise
<a name="greengrass-stream-manager"></a>

AWS IoT Greengrass El administrador de flujos es una función de integración que facilita la transferencia de flujos de datos de fuentes locales a la AWS nube. Actúa como una capa intermedia que gestiona los flujos de datos, lo que permite a los dispositivos que funcionan en la periferia recopilar y almacenar datos antes de enviarlos AWS IoT SiteWise, para su posterior análisis y procesamiento.

Agregue un destino de datos configurando un origen local en la consola de AWS IoT SiteWise . También puedes usar el administrador de flujos en tu AWS IoT Greengrass solución personalizada para ingerir datos. AWS IoT SiteWise

**nota**  
Para ingerir datos de fuentes OPC UA, configure una puerta de enlace AWS IoT SiteWise Edge que se ejecute en AWS IoT Greengrass Para obtener más información, consulte [Utilice puertas de enlace AWS IoT SiteWise Edge](gateways.md).

Para obtener más información acerca de cómo **configurar un destino** para datos de origen local, consulte [Comprenda los destinos de AWS IoT SiteWise Edge](gw-destinations.md#source-destination).

Para obtener más información sobre cómo **ingerir datos mediante el administrador de flujos** en una solución de AWS IoT Greengrass personalizada, consulte los siguientes temas en la *Guía para desarrolladores de AWS IoT Greengrass Version 2 *:
+ [¿Qué es? AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/)
+ [Administrar secuencias de datos en el núcleo de AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-data-streams.html)
+ [Exportación de datos a propiedades AWS IoT SiteWise de activos](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-export-configurations.html#export-to-iot-sitewise)