

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

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

AWS IoT SiteWise foi projetado para coletar e correlacionar de forma eficiente os dados industriais com os ativos correspondentes, representando vários aspectos das operações industriais. Esta documentação se concentra nos aspectos práticos da ingestão de dados AWS IoT SiteWise, oferecendo vários métodos personalizados para diversos casos de uso industrial. Para obter instruções sobre como criar sua operação industrial virtual, consulte [Modelar ativos industriais](industrial-asset-models.md).

Você pode enviar dados industriais para AWS IoT SiteWise usar qualquer uma das seguintes opções:
+ **AWS IoT SiteWise Edge** — Use o [gateway SiteWise Edge](gateways.md) como intermediário entre seus AWS IoT SiteWise servidores de dados. AWS IoT SiteWise fornece AWS IoT Greengrass componentes que você pode implantar em qualquer plataforma que possa ser executada AWS IoT Greengrass para configurar um gateway SiteWise Edge. Essa opção é compatível com a vinculação ao protocolo de servidor [OPC UA](https://en.wikipedia.org/wiki/OPC_Unified_Architecture).
+ **AWS IoT SiteWise API** — use a [AWS IoT SiteWise API](ingest-api.md) para fazer upload de dados de qualquer outra fonte. Use nossa [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)API de streaming para ingestão em segundos ou a [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API orientada por lotes para facilitar a ingestão econômica em lotes maiores.
+ **AWS IoT Regras básicas** — Use as [regras AWS IoT básicas](iot-rules.md) para carregar dados de mensagens MQTT publicadas por uma AWS IoT coisa ou outro AWS serviço.
+ **AWS IoT Events ações** — Use [AWS IoT Events ações](iot-events.md) acionadas por eventos específicos em AWS IoT Events. Esse método é adequado para cenários em que o upload de dados está vinculado a ocorrências de eventos.
+ **AWS IoT Greengrass gerenciador de fluxo** — Use o [gerenciador de AWS IoT Greengrass fluxo](greengrass-stream-manager.md) para carregar dados de fontes de dados locais usando um dispositivo de borda. Essa opção atende a situações em que os dados se originam do ambiente on-premises ou de locais da borda.

Esses métodos oferecem uma variedade de soluções para gerenciar dados de diferentes fontes. Aprofunde-se nos detalhes de cada opção para obter uma compreensão abrangente dos recursos AWS IoT SiteWise de ingestão de dados fornecidos.

# Gerencie fluxos de dados para AWS IoT SiteWise
<a name="manage-data-streams"></a>

 Um fluxo de dados é o recurso que contém dados históricos de séries temporais. Cada fluxo de dados é identificado por um alias exclusivo, facilitando o controle da origem de cada dado. Os fluxos de dados são criados automaticamente AWS IoT SiteWise quando os primeiros dados da série temporal são recebidos. Se os primeiros dados da série temporal forem identificados com um alias, AWS IoT SiteWise criará um novo fluxo de dados com esse alias, desde que nenhuma propriedade do ativo já tenha sido atribuída a esse alias. Como alternativa, se os primeiros dados da série temporal forem identificados com uma ID de ativo e uma ID de propriedade, AWS IoT SiteWise criará um novo fluxo de dados e associará esse fluxo de dados à propriedade do ativo. 

 Há duas maneiras de atribuir um alias a uma propriedade do ativo. O método usado depende se os dados são enviados AWS IoT SiteWise primeiro ou se um ativo é criado primeiro.
+  Se os dados forem enviados AWS IoT SiteWise primeiro, isso criará automaticamente um fluxo de dados com o alias atribuído. Quando o ativo for criado posteriormente, use a [ AssociateTimeSeriesToAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_AssociateTimeSeriesToAssetProperty.html)API para associar o fluxo de dados e seu alias à propriedade do ativo. 
+  Se um ativo for criado primeiro, use a [ UpdateAssetProperty](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html)API para atribuir um alias a uma propriedade do ativo. Quando os dados são enviados posteriormente AWS IoT SiteWise, o fluxo de dados é criado automaticamente e associado à propriedade do ativo. 

No momento, só é possível associar fluxos de dados a medições. *Medições* são um tipo de propriedade de ativo que representa os fluxos de dados brutos do sensor de um dispositivo, como valores de temperatura com marcação de data/hora ou valores de rotação por minuto (RPM) com marcação de data/hora.

Quando essas medições definem métricas ou transformações, os dados recebidos acionam cálculos específicos. É importante observar que uma propriedade de ativo só pode ser vinculada a um fluxo de dados por vez.

AWS IoT SiteWise usa `TimeSeries` o recurso Amazon Resource Name (ARN) para determinar suas cobranças de armazenamento. Para obter mais informações, consulte [AWS IoT SiteWise Preço](https://aws.amazon.com/iot-sitewise/pricing/).

As seções a seguir mostram como usar o AWS IoT SiteWise console ou a API para gerenciar fluxos de dados.

**Topics**
+ [Definir permissões e configurações](manage-data-streams-configuration.md)
+ [Associar um fluxo de dados a uma propriedade do ativo](manage-data-streams-method.md)
+ [Desassociar um fluxo de dados de uma propriedade do ativo](disassociate-data-streams-method.md)
+ [Criar um fluxo de dados](delete-data-streams-method.md)
+ [Atualizar um alias de propriedade do ativo](update-data-streams-method.md)
+ [Cenários comuns](data-ingestion-scenarios.md)

# Definir permissões e configurações
<a name="manage-data-streams-configuration"></a>

 Os fluxos de dados são criados automaticamente AWS IoT SiteWise quando os primeiros dados da série temporal são recebidos. Se os dados ingeridos não estiverem associados a uma propriedade do ativo, AWS IoT SiteWise criará um novo fluxo de dados desassociado que pode ser configurado para ser associado a uma propriedade do ativo. Configure o controle de acesso do gateway para o qual os dados são enviados AWS IoT SiteWise, usando políticas do IAM para especificar o tipo de dados a serem ingeridos. 

 A política do IAM a seguir desativa a ingestão de dados dissociados do gateway, ao mesmo tempo em que permite a ingestão de dados em fluxos de dados associados a uma propriedade do ativo: 

**Example Política de usuário do IAM que desativa a ingestão de dados dissociados do gateway**    
****  

```
{
    "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 usuário do IAM que desativa toda a ingestão de dados do gateway**    
****  

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

# Associar um fluxo de dados a uma propriedade do ativo
<a name="manage-data-streams-method"></a>

Gerencie seus fluxos de dados usando o Console do AWS IoT SiteWise ou AWS CLI.

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

Use o AWS IoT SiteWise console para gerenciar seus fluxos de dados.

**Para gerenciar fluxos de dados (console)**

1. <a name="sitewise-open-console"></a>Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. No painel de navegação, selecione **Fluxos de dados**.

1. Escolha um fluxo de dados filtrando pelo alias do fluxo de dados ou selecionando **fluxos de dados desassociados** no menu suspenso do filtro.

1. Selecione o fluxo de dados a ser atualizado. Você pode selecionar vários fluxos de dados. Clique em **Gerenciar fluxos de dados** no canto superior direito. 

1. Selecione o fluxo de dados a ser associado em **Atualizar associações de fluxo de dados** e clique no botão **Escolher medição**.

1.  Na seção **Escolher medida**, encontre a propriedade de medição do ativo correspondente. Selecione a medida e clique em **Escolher**. 

1.  Execute as etapas 4 e 5 para outros fluxos de dados selecionados na etapa 3. Atribua propriedades de ativos a todos os fluxos de dados. 

1.  Escolha **Atualizar** para confirmar as alterações. Um banner de confirmação bem-sucedido é exibido para confirmar a atualização. 

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

 Para associar um fluxo de dados (identificado por seu alias) a uma propriedade do ativo (identificada por seu IDs), execute o seguinte comando: 

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

------

# Desassociar um fluxo de dados de uma propriedade do ativo
<a name="disassociate-data-streams-method"></a>

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

Use o AWS IoT SiteWise console para desassociar seu fluxo de dados de uma propriedade do ativo.

**Para desassociar fluxos de dados de uma propriedade do ativo (console)**

1. <a name="sitewise-open-console"></a>Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1. No painel de navegação, selecione **Fluxos de dados**.

1. Escolha um fluxo de dados filtrando pelo alias do fluxo de dados ou selecionando **fluxos de dados associados** no menu suspenso do filtro.

1. Selecione o fluxo de dados a ser desassociado. A coluna de **alias do fluxo de dados** deve conter um alias. As colunas **Nome do ativo** **e Nome da propriedade** do ativo devem conter os valores da propriedade do ativo à qual o fluxo de dados está associado. Você pode selecionar vários fluxos de dados.

1.  Clique em **Gerenciar fluxos de dados** no canto superior direito. 

1.  Na seção **Atualizar associações de fluxo de dados**, clique em **X** na coluna **Nome da medida**. Um `submitted` status deve aparecer na coluna **Status**. 

1.  Escolha **Atualizar** para confirmar as alterações. O fluxo de dados agora está desassociado da propriedade do ativo e o alias agora é usado para identificar o fluxo de dados. 

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

Para desassociar um fluxo de dados de uma propriedade do ativo (identificada por seu `ID` s e seu alias), execute o seguinte comando: 

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

 O fluxo de dados agora está desassociado da propriedade do ativo e o alias é usado para identificar o fluxo de dados. O alias não está mais associado à propriedade do ativo, pois agora está associado ao fluxo de dados. 

------

# Criar um fluxo de dados
<a name="delete-data-streams-method"></a>

 Quando uma propriedade é removida de um modelo de ativo, AWS IoT SiteWise exclui as propriedades e seus fluxos de dados de todos os ativos gerenciados pelo modelo de ativo. Ele também exclui todas as propriedades e seus fluxos de dados de um ativo quando o ativo é excluído. Se os dados de um fluxo de dados precisarem ser preservados, eles deverão ser desassociados da propriedade do ativo antes de serem excluídos. 

**Atenção**  
 Quando uma propriedade é excluída de um ativo, o fluxo de dados associado também é excluído. Para preservar o fluxo de dados, desassocie-o primeiro da propriedade do ativo, antes de excluir a propriedade do modelo do ativo ou excluir o ativo. 

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

Use o AWS IoT SiteWise console para desassociar seu fluxo de dados de uma propriedade do ativo.

**Para excluir um fluxo de dados (console)**

1. <a name="sitewise-open-console"></a>Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1.  No painel de navegação, selecione **Fluxos de dados**. 

1.  Escolha um fluxo de dados filtrando pelo alias do fluxo de dados. 

1.  Selecione o fluxo de dados a ser excluído. Você pode selecionar vários fluxos de dados. 

1.  Escolha o botão **Excluir** para excluir o fluxo de dados. 

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

 Use a [ DeleteTimeSeries](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DeleteTimeSeries.html)API para excluir um fluxo de dados específico, usando seu alias. 

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

------

# Atualizar um alias de propriedade do ativo
<a name="update-data-streams-method"></a>

 Os aliases devem ser exclusivos em uma AWS região. Isso inclui aliases de propriedades de ativos e fluxos de dados. Não atribua um alias a uma propriedade do ativo, se outra propriedade ou fluxo de dados estiver usando esse alias. 

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

Use o AWS IoT SiteWise console para atualizar um alias de propriedade do ativo.

**Para atualizar um alias de propriedade do ativo (console)**

1. <a name="sitewise-open-console"></a>Navegue até o [console do AWS IoT SiteWise](https://console.aws.amazon.com/iotsitewise/).

1.  No painel de navegação, selecione **Ativos**. 

1.  Selecione o ativo na tabela. 

1.  Clique no botão **Edit (Editar)**. 

1.  Selecione o **tipo de propriedade** na tabela **Propriedades**. 

1.  Encontre a propriedade e digite o novo alias no campo de texto do alias da propriedade. 

1.  Clique no botão **Salvar** para salvar as alterações. 

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

 Para atualizar um alias em uma propriedade do ativo, execute o seguinte 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**  
 Se as notificações de propriedade estiverem habilitadas no momento, elas deverão ser fornecidas novamente para garantir que continuem sendo ativadas. 

------

# Cenários comuns
<a name="data-ingestion-scenarios"></a>

## Mover um fluxo de dados
<a name="data-ingestion-scenario-move-data-stream"></a>

 Para alterar a associação de um fluxo de dados com outra propriedade do ativo, primeiro desassocie o fluxo de dados da propriedade atual do ativo. Ao desassociar um fluxo de dados de uma propriedade do ativo, deve haver um alias atribuído a essa propriedade do ativo. 

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

 Agora, reatribua o fluxo de dados à nova propriedade do ativo. 

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

## Erro ao atribuir um alias a uma propriedade do ativo
<a name="data-ingestion-scenario-assetid-contains-data"></a>

 Ao usar a `UpdateAssetProperty` API para atribuir um alias a uma propriedade, você pode ver a seguinte mensagem de erro: 

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

 Essa mensagem de erro indica que o alias não está atribuído à propriedade porque ele é usado atualmente por outra propriedade ou por um fluxo de dados. 

 Isso acontece se os dados estiverem sendo ingeridos AWS IoT SiteWise com um alias. Quando os dados são enviados com um alias que não está sendo usado por outro fluxo de dados ou propriedade do ativo, um novo fluxo de dados é criado com esse alias. As duas opções abaixo resolvem o problema. 
+  Use a `AssociateTimeSeriesToAssetProperty` API para associar o fluxo de dados com seu alias à propriedade do ativo. 
+  Interrompa temporariamente a ingestão de dados e exclua o fluxo de dados. Use a `UpdateAssetProperty` API para atribuir o alias à propriedade do ativo e, em seguida, reative a ingestão de dados. 

## Erro ao associar um fluxo de dados a uma propriedade do ativo
<a name="data-ingestion-scenario-move-data-stream"></a>

 Ao associar um fluxo de dados a uma propriedade do ativo, a seguinte mensagem de erro é exibida. 

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

 Essa mensagem de erro indica que a propriedade do ativo já está associada a um fluxo de dados contendo dados. Esse fluxo de dados deve ser desassociado ou excluído antes de associar outro fluxo de dados a essa propriedade do ativo. 

**nota**  
 Ao desassociar um fluxo de dados de uma propriedade do ativo, o alias atribuído à propriedade é fornecido ao fluxo de dados. Para que esse alias permaneça atribuído à propriedade, atribua um novo alias a essa propriedade antes de desassociar o fluxo de dados. 

 Para preservar os dados armazenados na propriedade do ativo, faça o seguinte: 
+  Certifique-se de que nenhum dado esteja sendo ingerido na propriedade do ativo, para evitar a criação de um novo fluxo de dados. 
+  Use a `UpdateAssetProperty` API para definir um novo alias que é fornecido ao fluxo de dados atualmente atribuído. 
+  Use a `DisassociateTimeSeriesFromAssetProperty` API para desassociar o fluxo de dados atual da propriedade do ativo. 
+  Use a `AssociateTimeSeriesToAssetProperty` API para associar o fluxo de dados desejado à propriedade do ativo. 

 Se os dados armazenados na propriedade do ativo precisarem ser excluídos, faça o seguinte: 
+  Certifique-se de que nenhum dado esteja sendo ingerido na propriedade do ativo, para evitar a criação de um novo fluxo de dados. 
+  Use a `DeleteTimeSeries` API para excluir o fluxo de dados atualmente atribuído. 
+  Use a `AssociateTimeSeriesToAssetProperty` API para associar o fluxo de dados desejado à propriedade do ativo. 

# Ingira dados com AWS IoT SiteWise APIs
<a name="ingest-api"></a>

Use AWS IoT SiteWise APIs para enviar dados industriais com data e hora para os atributos e propriedades de medição de seus ativos. APIs Aceita estruturas contendo carga útil timestamp-quality-value (TQV).

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

Use a operação [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) para fazer upload dos seus dados. Com essa operação, você pode fazer upload de várias entradas de dados de uma só vez para coletar dados de vários dispositivos e enviar tudo em uma única solicitação.

**Importante**  
A [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)operação está sujeita às seguintes cotas:   
Até 10 [entradas](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html#API_BatchPutAssetPropertyValue_RequestSyntax) por solicitação.
Até 10 [valores de propriedade](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_PutAssetPropertyValueEntry.html#iotsitewise-Type-PutAssetPropertyValueEntry-propertyValues) (pontos de dados TQV) por entrada. 
AWS IoT SiteWise rejeita quaisquer dados com um timestamp datado de mais de 7 dias no passado ou mais de 10 minutos no futuro.
 Para obter mais informações sobre essas cotas, consulte [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html) na *Referência de API do AWS IoT SiteWise *.

Para identificar uma propriedade de ativo, especifique uma das seguintes opções:
+ O `assetId` e `propertyId` da propriedade de ativo para a qual os dados são enviados.
+ O `propertyAlias`, que é um alias de fluxo de dados (por exemplo, `/company/windfarm/3/turbine/7/temperature`). Para usar esta opção, primeiro você deve definir o apelido da propriedade do seu ativo. Para definir aliases de propriedade, consulte [Gerencie fluxos de dados para AWS IoT SiteWise](manage-data-streams.md).

O exemplo a seguir demonstra como enviar leituras de temperatura e rotações por minuto (RPM) de uma turbina eólica a partir de uma carga útil armazenada em um arquivo JSON.

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

O exemplo de carga útil em `batch-put-payload.json` tem o seguinte conteúdo.

```
{
  "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"
        }
      ]
    }
  ]
}
```

Especificar `enablePartialEntryProcessing` como `true` permite a ingestão de todos os valores que não resultam em falha. O comportamento padrão é `false`. Se um valor for inválido, a entrada inteira falhará na ingestão.

Cada entrada na carga contém um `entryId` que você pode definir como qualquer string exclusiva. Se qualquer entrada de solicitação falhar, cada erro conterá o `entryId` da solicitação correspondente, para que você saiba quais solicitações tentar novamente.

Cada estrutura na lista de `propertyValues` é uma estrutura timestamp-quality-value (TQV) que contém a, a e`value`, `timestamp` opcionalmente, a. `quality`
+ `value` – uma estrutura contendo um dos valores a seguir, a depender do tipo de propriedade sendo definida:
  + `booleanValue`
  + `doubleValue`
  + `integerValue`
  + `stringValue`
  + `nullValue`
+ `nullValue`— Uma estrutura com o campo a seguir indicando o tipo do valor da propriedade com valor Nulo e qualidade de `BAD` ou. `UNCERTAIN`
  + `valueType`— Enumeração de \$1"B”, “D”, “S”, “I"\$1
+ `timestamp` – uma estrutura que contém o horário epoch Unix atual em segundos `timeInSeconds`. Você também pode definir a `offsetInNanos` chave na `timestamp` estrutura se tiver dados temporalmente precisos. AWS IoT SiteWise rejeita quaisquer pontos de dados com carimbos de data e hora anteriores a 7 dias ou mais recentes que 10 minutos no futuro.
+ `quality` – (opcional) uma das seguintes strings de qualidade:
  + `GOOD` – (padrão) os dados não são afetados por nenhum problema.
  + `BAD` – os dados são afetados por um problema, como a falha do sensor.
  + `UNCERTAIN` – os dados são afetados por um problema, como a imprecisão do sensor.

  Para obter mais informações sobre como AWS IoT SiteWise lidar com a qualidade de dados em cálculos, consulte [Qualidade de dados em expressões de fórmulas](expression-tutorials.md#data-quality).

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

Use a API `CreateBulkImportJob` para importar grandes quantidades de dados do Amazon S3. Seus dados devem ser salvos no formato CSV no Amazon S3. Os arquivos de dados podem ter as seguintes colunas.

**nota**  
 Dados anteriores a 1º de janeiro de 1970 00:00:00 UTC não são suportados.   
Para identificar uma propriedade de ativo, especifique uma das opções a seguir.  
O `ASSET_ID` e `PROPERTY_ID` da propriedade do ativo para o qual você está enviando dados.
O `ALIAS`, que é um alias de fluxo de dados (por exemplo, `/company/windfarm/3/turbine/7/temperature`). Para usar esta opção, primeiro você deve definir o apelido da propriedade do seu ativo. Para saber como definir apelidos de propriedades, consulte [Gerencie fluxos de dados para AWS IoT SiteWise](manage-data-streams.md).
+ `ALIAS`: o alias que identifica a propriedade, como um caminho do fluxo de dados do servidor OPC UA (por exemplo, `/company/windfarm/3/turbine/7/temperature`). Para obter mais informações, consulte [Gerencie fluxos de dados para AWS IoT SiteWise](manage-data-streams.md).
+ `ASSET_ID` – O ID do ativo.
+ `PROPERTY_ID` – O ID da propriedade do ativo.
+ `DATA_TYPE` – O tipo de dado da propriedade pode ser um destes.
  + `STRING` – uma string com até 1024 bytes.
  + `INTEGER` – um número inteiro assinado de 32 bits com intervalo [-2.147.483.648, 2.147.483.647].
  + `DOUBLE` – um número de ponto flutuante com intervalo [-10^100, 10^100] e precisão dupla IEEE 754.
  + `BOOLEAN` – `true` ou `false`.
+ `TIMESTAMP_SECONDS` – O time stamp do ponto de dados, no período Unix.
+ `TIMESTAMP_NANO_OFFSET` – O deslocamento em nanossegundos convertido de `TIMESTAMP_SECONDS`.
+ `QUALITY` – (opcional) A qualidade do valor da propriedade do ativo. O valor pode ser um dos seguintes:
  + `GOOD` – (padrão) os dados não são afetados por nenhum problema.
  + `BAD` – os dados são afetados por um problema, como a falha do sensor.
  + `UNCERTAIN` – os dados são afetados por um problema, como a imprecisão do sensor.

  Para obter mais informações sobre como AWS IoT SiteWise lidar com a qualidade de dados em cálculos, consulte [Qualidade de dados em expressões de fórmulas](expression-tutorials.md#data-quality).
+ `VALUE` – O valor da propriedade do ativo.

**Example arquivo(s) de dados no 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 fornece as seguintes operações de API para criar um trabalho de importação em massa e obter informações sobre um trabalho existente.
+ [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)— Cria um novo trabalho de importação em massa.
+ [DescribeBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeBulkImportJob.html)— Recupera informações sobre um trabalho de importação em massa.
+ [ListBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListBulkImportJobs.html)— Recupera uma lista paginada de resumos de todos os trabalhos de importação em massa.

# Criar um trabalho de importação AWS IoT SiteWise em massa (AWS CLI)
<a name="CreateBulkImportJob"></a>

Use a operação de [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API para transferir dados do Amazon S3 para o. AWS IoT SiteWise A [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API permite a ingestão de grandes volumes de dados históricos e a ingestão em buffer de fluxos de dados analíticos em pequenos lotes. Ela oferece um primitivo econômico para ingestão de dados. O exemplo a seguir usa a AWS CLI.

**Importante**  
Antes de criar um trabalho de importação em massa, você deve habilitar o nível AWS IoT SiteWise quente ou o nível AWS IoT SiteWise frio. Para obter mais informações, consulte [Defina as configurações de armazenamento em AWS IoT SiteWise](configure-storage.md).  
 A [CreateBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_CreateBulkImportJob.html)API suporta a ingestão de dados históricos AWS IoT SiteWise com a opção de definir o adaptive-ingestion-flag parâmetro.   
Quando definido como `false`, a API ingere dados históricos sem acionar computações ou notificações.
Quando definido como `true`, a API ingere novos dados, calcula métricas e transforma os dados para otimizar análises e notificações contínuas dentro de sete dias.

Execute o comando a seguir. *file-name*Substitua pelo nome do arquivo que contém a configuração do trabalho de importação em massa.

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

**Example Configuração do trabalho de importação em massa**  
Estes são exemplos das definições de configuração:  
+ Substitua *adaptive-ingestion-flag* por `true` ou `false`.
  + Se definido como `false`, o trabalho de importação em massa ingere dados históricos no AWS IoT SiteWise.
  + Se definido como `true`, o trabalho de importação em massa faz o seguinte:
    + Ingere novos dados em. AWS IoT SiteWise
    + Calcula métricas e transformações, além de oferecer suporte a notificações de dados com um carimbo de data/hora dentro de sete dias.
+ *delete-files-after-import-flag*`true`Substitua por para excluir os dados do bucket de dados do Amazon S3 após a ingestão no armazenamento de nível AWS IoT SiteWise quente.
+ Substitua amzn-s3-demo-bucket pelo *-for-errors* nome do bucket Amazon S3 para o qual os erros associados a esse trabalho de importação em massa são enviados.
+ Substitua amzn-s3-demo-bucket pelo *-for-errors-prefix* prefixo do bucket Amazon S3 para o qual os erros associados a esse trabalho de importação em massa são enviados. 

  O Amazon S3 usa o prefixo como nome de pasta para organizar os dados no bucket. Cada objeto em um bucket do Amazon S3 tem uma chave que é seu identificador exclusivo no bucket. Cada objeto em um bucket tem exatamente uma chave. O prefixo deve terminar com uma barra (/). Para obter mais informações, consulte [Organizing objects using prefixes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-prefixes.html) no *Guia do usuário do Amazon Simple Storage Service*.
+ Substitua amzn-s3-demo-bucket pelo *-data* nome do bucket Amazon S3 do qual os dados são importados.
+ *data-bucket-key*Substitua pela chave do objeto Amazon S3 que contém seus dados. Cada objeto tem uma chave que é um identificador exclusivo. Cada objeto tem exatamente uma chave.
+ *data-bucket-version-id*Substitua pelo ID da versão para identificar uma versão específica do objeto Amazon S3 que contém seus dados. Esse parâmetro é opcional.
+ *column-name*Substitua pelo nome da coluna especificado no arquivo.csv.
+ *job-name*Substitua por um nome exclusivo que identifique o trabalho de importação em massa.
+ *job-role-arn*Substitua pela função do IAM que AWS IoT SiteWise permite ler dados do Amazon S3.
Certifique-se de que sua função tem as permissões do exemplo a seguir: Substitua amzn-s3-demo-bucket pelo *-data* nome do bucket Amazon S3 que contém seus dados. Além disso, *amzn-s3-demo-bucket-for-errors* substitua pelo nome do bucket do Amazon S3 para o qual os erros associados a esse trabalho de importação em massa são enviados.    
****  

```
{
    "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 resposta**  

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

# Descreva um trabalho de importação em AWS IoT SiteWise massa (AWS CLI)
<a name="DescribeBulkImportJob"></a>

Use a operação [DescribeBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeBulkImportJob.html)da API para recuperar informações sobre um trabalho específico de importação em massa em AWS IoT SiteWise. Essa operação retorna detalhes, como status do trabalho, hora de criação e informações de erro em caso de falha no trabalho. Você pode usar essa operação para monitorar o progresso do trabalho e solucionar problemas. Para usar `DescribeBulkImportJob`, você precisa do ID do trabalho da operação `CreateBulkImportJob`. A API retorna as seguintes informações:
+ Lista de arquivos que estão sendo importados, incluindo seus locais e chaves de bucket do Amazon S3
+ Local do relatório de erros (se aplicável).
+ Detalhes de configuração do trabalho, como formato de arquivo e nomes de colunas CSV.
+ Carimbos de data/hora da criação do trabalho e da última atualização.
+ Status atual do trabalho (por exemplo, se o trabalho está em andamento, concluído ou com falha).
+ ARN do perfil do IAM para o trabalho de importação.

Para trabalhos concluídos, revise os resultados para confirmar a integração de dados bem-sucedida. Se um trabalho falhar, examine os detalhes do erro para realizar o diagnóstico e resolver os problemas.

*job-ID*Substitua pela ID do trabalho de importação em massa que você deseja recuperar.

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

**Example resposta**  

```
{
   "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"
}
```

# Listar trabalhos de importação em AWS IoT SiteWise massa (AWS CLI)
<a name="ListBulkImportJobs"></a>

Use a operação [ListBulkImportJobs](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_ListBulkImportJobss.html)da API para recuperar uma lista de resumos para trabalhos de importação em massa em. AWS IoT SiteWise Essa operação oferece uma maneira eficiente de monitorar e gerenciar os processos de importação de dados. Ela retorna as seguintes informações importantes sobre cada trabalho:
+ ID do trabalho. Um identificador exclusivo para cada trabalho de importação em massa.
+ Nome do trabalho. O nome atribuído ao trabalho quando ele foi criado.
+ Status atual. O estado atual do trabalho (por exemplo, CONCLUÍDO, EM EXECUÇÃO, COM FALHA)

ListBulkImportJobs é particularmente útil para obter uma visão geral abrangente de todos os seus trabalhos de importação em massa. Isso pode ajudar você a monitorar várias importações de dados, identificar trabalhos que exijam atenção e manter um fluxo de trabalho organizado. A operação oferece suporte à paginação, permitindo que você recupere um grande número de resumos de trabalhos de maneira eficiente. Você pode usar o trabalho IDs retornado por essa operação com a [DescribeBulkImportJob](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeBulkImportJob.html)operação para recuperar informações mais detalhadas sobre trabalhos específicos. Esse processo de duas etapas permite que você primeiro tenha uma visão geral de todos os trabalhos, depois se aprofunde nos detalhes dos trabalhos de interesse. Ao usar `ListBulkImportJobs`, você pode aplicar filtros para restringir os resultados. Por exemplo, você pode filtrar trabalhos com base no status para recuperar apenas trabalhos concluídos ou em execução. Esse recurso ajuda você a se concentrar nas informações mais relevantes para a tarefa atual. A operação também retornará um `nextToken` se houver mais resultados disponíveis. Você pode usar esse token em chamadas subsequentes para recuperar o próximo conjunto de resumos de trabalhos, permitindo que você repita todos os trabalhos de importação em massa, mesmo que tenha um grande número deles. O exemplo a seguir demonstra como usar `ListBulkImportJobs` com o AWS CLI para recuperar uma lista de trabalhos concluídos.

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

**Example Resposta para filtro de trabalhos concluídos**  

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

Esse comando demonstra como usar `ListBulkImportJobs` para recuperar uma lista de trabalhos concluídos com falhas. O máximo está definido como 50 resultados e estamos usando uma opção de próximo token para resultados paginados.

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

# Ingira dados para AWS IoT SiteWise usar regras AWS IoT Core
<a name="iot-rules"></a>

Envie dados para AWS IoT SiteWise AWS IoT coisas e outros AWS serviços usando regras em AWS IoT Core. As regras transformam as mensagens do MQTT e realizam ações para interagir com AWS os serviços. A ação da AWS IoT SiteWise regra encaminha os dados das mensagens para a [BatchPutAssetPropertyValue](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_BatchPutAssetPropertyValue.html)operação a partir da AWS IoT SiteWise API. Para obter mais informações, consulte [Rules](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html) e a [AWS IoT SiteWise ação](https://docs.aws.amazon.com/iot/latest/developerguide/iot-rule-actions.html#iotsitewise-rule) no *AWS IoT Developer Guide*.

Para seguir um tutorial que apresenta as etapas necessárias para configurar uma regra que faz a ingestão de dados por meio de sombras de dispositivo, consulte [Ingira dados para AWS IoT SiteWise extrair coisas AWS IoT](ingest-data-from-iot-things.md).

Você também pode enviar dados AWS IoT SiteWise de outros AWS serviços. Para obter mais informações, consulte [Interaja com outros AWS serviços](interact-with-other-services.md).

**Topics**
+ [AWS IoT Conceda o acesso necessário](grant-rule-access.md)
+ [Configurar a ação da AWS IoT SiteWise regra](configure-rule-action.md)
+ [Reduza os custos com o Basic Ingest em AWS IoT SiteWise](basic-ingest-rules.md)

# AWS IoT Conceda o acesso necessário
<a name="grant-rule-access"></a>

Você usa funções do IAM para controlar os AWS recursos aos quais cada regra tem acesso. Antes de criar uma regra, você deve criar uma função do IAM com uma política que permita que a regra execute ações no AWS recurso necessário. AWS IoT assume essa função ao executar uma regra.

Se você criar a ação de regra no AWS IoT console, poderá escolher um ativo raiz para criar uma função que tenha acesso a uma hierarquia de ativos selecionada. Para obter mais informações sobre como definir manualmente uma função para uma regra, consulte [Conceder AWS IoT o acesso necessário](https://docs.aws.amazon.com/iot/latest/developerguide/iot-create-role.html) e Aprovar [as permissões de função](https://docs.aws.amazon.com/iot/latest/developerguide/pass-role.html) no *Guia do AWS IoT desenvolvedor*.

Para a ação da AWS IoT SiteWise regra, você deve definir uma função que permita `iotsitewise:BatchPutAssetPropertyValue` acesso às propriedades do ativo para as quais a regra envia dados. Para melhorar a segurança, você pode especificar um caminho AWS IoT SiteWise de hierarquia de ativos na `Condition` propriedade. 

O exemplo de política de confiança a seguir concede acesso a um ativo específico e seus filhos.

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

****  

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

------

Remova `Condition` da política para conceder acesso a todos os ativos. O exemplo de política de confiança a seguir concede acesso a todos os ativos na região atual.

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

****  

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

------

# Configurar a ação da AWS IoT SiteWise regra
<a name="configure-rule-action"></a>

A ação da AWS IoT SiteWise regra envia dados da mensagem MQTT que iniciou a regra para as propriedades do ativo em AWS IoT SiteWise. É possível fazer upload de várias entradas de dados em diferentes propriedades de ativo ao mesmo tempo a fim de enviar atualizações a todos os sensores de um dispositivo em uma mensagem. Também é possível fazer upload de vários pontos de dados de uma vez para cada entrada de dados.

**nota**  
Quando você envia dados para AWS IoT SiteWise com a ação de regra, seus dados devem atender a todos os requisitos da `BatchPutAssetPropertyValue` operação. Por exemplo, seus dados não podem ter um time stamp com mais de 7 dias do horário Unix epoch atual. Para obter mais informações, consulte [Ingerir dados com a API do AWS IoT SiteWise]().

Para cada entrada de dados na ação de regra, você identifica uma propriedade de ativo e especifica o time stamp, a qualidade e o valor de cada ponto de dados para essa propriedade de ativo. A ação da regra espera strings para todos os parâmetros.

Para identificar uma propriedade de ativo em uma entrada, especifique um dos seguintes elementos:
+ O **Asset ID (ID do ativo)** (`assetId`) e o **Property ID (ID da propriedade)** (`propertyId`) da propriedade de ativo para a qual você está enviando dados. Você pode encontrar o ID de ativo e o ID de propriedade usando o Console do AWS IoT SiteWise. Se você souber o ID do ativo, poderá usar o AWS CLI to call [DescribeAsset](https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_DescribeAsset.html)para encontrar o ID da propriedade.
+ O **Property alias (Alias da propriedade)** (`propertyAlias`), que é um alias de fluxo de dados (por exemplo, `/company/windfarm/3/turbine/7/temperature`). Para usar esta opção, primeiro você deve definir o apelido da propriedade do seu ativo. Para saber como definir apelidos de propriedades, consulte [Gerencie fluxos de dados para AWS IoT SiteWise](manage-data-streams.md).

Para o carimbo de data/hora em cada entrada, use o carimbo de data/hora informado pelo seu equipamento ou o carimbo de data/hora informado pelo AWS IoT Core. O time stamp tem dois parâmetros:
+ **Time in seconds (Tempo em segundos)** (`timeInSeconds`) – o horário Unix epoch, em segundos, no qual o sensor ou equipamento reportou os dados.
+ **Offset in nanos (Deslocamento em nanossegundos)** (`offsetInNanos`) – (opcional) o deslocamento em nanossegundos do tempo em segundos.

**Importante**  
Se seu time stamp for uma string, tiver uma parte decimal ou não estiver em segundos, AWS IoT SiteWise rejeitará a solicitação. Você deve converter o time stamp em segundos e o deslocamento em nanossegundos. Use os recursos do mecanismo de AWS IoT regras para converter o carimbo de data/hora. Para saber mais, consulte:  
[Obter time stamps para dispositivos que não informam a hora exata](#rule-timestamp-function)
[Conversão de time stamps em formato de string](#rule-time-to-epoch-function)

Também é possível usar modelos de substituição para vários parâmetros na ação para executar cálculos, invocar funções e extrair valores da carga de mensagem. Para obter mais informações, consulte [Modelos de substituição](https://docs.aws.amazon.com/iot/latest/developerguide/iot-substitution-templates.html) no *Guia do desenvolvedor* do AWS IoT .

**nota**  <a name="substitution-template-limitations"></a>
Como uma expressão em um modelo de substituição é avaliado separadamente da instrução `SELECT`, não é possível usar um modelo de substituição para fazer referência a um alias criado usando uma cláusula `AS`. Você pode fazer referência somente às informações presentes na carga original, além das funções e dos operadores compatíveis.

**Topics**
+ [Obter time stamps para dispositivos que não informam a hora exata](#rule-timestamp-function)
+ [Conversão de time stamps em formato de string](#rule-time-to-epoch-function)
+ [Convertendo strings de time stamp de precisão de nanossegundos](#rule-convert-precise-timestamp-string)
+ [Configurações de regra de exemplo](#rule-action-examples)
+ [Solucionar problemas de ação de regra do](#troubleshoot-rule-action)

## Obter time stamps para dispositivos que não informam a hora exata
<a name="rule-timestamp-function"></a>

Se seu sensor ou equipamento não reportar dados de tempo precisos, obtenha a hora atual da época do Unix no mecanismo de AWS IoT regras com [timestamp](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp) (). Essa função reporta o tempo em milissegundos, portanto, é necessário converter o valor para tempo em segundos e deslocamento em nanossegundos. Para fazer isso, use as seguintes conversões:
+ Para **Time in seconds (Tempo em segundos)** (`timeInSeconds`), use **\$1\$1floor(timestamp() / 1E3)\$1** para converter o tempo de milissegundos para segundos.
+ Para **Offset in nanos (Deslocamento em nanossegundos)** (`offsetInNanos`), use **\$1\$1(timestamp() % 1E3) \$1 1E6\$1** para calcular o deslocamento em nanossegundos do time stamp.

## Conversão de time stamps em formato de string
<a name="rule-time-to-epoch-function"></a>

Se o sensor ou equipamento informar dados de tempo em formato de string (por exemplo, `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). Essa função insere o time stamp e o padrão de formato como parâmetros e gera o tempo em milissegundos. Em seguida, você deve converter o tempo para tempo em segundos e o deslocamento em nanossegundos. Para fazer isso, use as seguintes conversões:
+ Para **Time in seconds (Tempo em segundos)** (`timeInSeconds`), use **\$1\$1floor(time\$1to\$1epoch("2020-03-03T14:57:14.699Z", "yyyy-MM-dd'T'HH:mm:ss'Z'") / 1E3)\$1** para converter o string do time stamp de milissegundos para segundos.
+ Para **Offset in nanos (Deslocamento em nanossegundos)** (`offsetInNanos`), use **\$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 o deslocamento em nanossegundos do string do time stamp.

**nota**  
A função `time_to_epoch` suporta sequências de time stamp com precisão de até milissegundos. Para converter cadeias de caracteres com precisão de microssegundos ou nanossegundos, configure uma AWS Lambda função que sua regra chama para converter o timestamp em valores numéricos. Para obter mais informações, consulte [Convertendo strings de time stamp de precisão de nanossegundos](#rule-convert-precise-timestamp-string).

## Convertendo strings de time stamp de precisão de nanossegundos
<a name="rule-convert-precise-timestamp-string"></a>

Se o seu dispositivo enviar informações de time stamp no formato de string (por exemplo, `2020-03-03T14:57:14.699728491Z`), use as etapas a seguir para configurar suaa ação da regra. Você pode criar uma AWS Lambda função que converta o timestamp de uma string em **Time in seconds (`timeInSeconds`) e **Offset em**** nanos (). `offsetInNanos` Depois, use [aws\$1lambda(functionArn, inputJson)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda) nos parâmetros de ação de regra para invocar essa função do Lambda e usar a saída na regra.

**nota**  
Esta seção contém instruções avançadas que presumem que você esteja familiarizado com como criar os recursos a seguir:  
Funções do Lambda. Para ter mais informações, consulte [Criar sua primeira função do Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html) no *Guia do desenvolvedor do AWS Lambda *.
AWS IoT regras com a ação da AWS IoT SiteWise regra. Para obter mais informações, consulte [Ingira dados para AWS IoT SiteWise usar regras AWS IoT Core](iot-rules.md).

**Para criar uma ação de AWS IoT SiteWise regra que analisa cadeias de caracteres de carimbo de data/hora**

1. Crie uma função do Lambda com as seguintes propriedades:
   + **Nome da função** – use um nome descritivo de função (por exemplo, **ConvertNanosecondTimestampFromString**).
   + **Tempo de execução**: use um runtime Python 3, como o **Python 3.11** (`python3.11`).
   + **Permissões** — Crie uma função com permissões básicas do Lambda () **AWS LambdaBasicExecutionRole**.
   + **Camadas** — Adicione a **AWS SDKPandascamada -Python311** para usar a função Lambda. `numpy`
   + **Código de função** – use o código de função a seguir, que consome um argumento de string chamado `timeInSeconds` e emite na saída os valores `timestamp` e `offsetInNanos` para esse time stamp.

     ```
     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
         }
     ```

     [Essa função Lambda insere cadeias de caracteres de timestamp no formato [ISO](https://en.wikipedia.org/wiki/ISO_8601) 8601 usando datetime64 de.](https://numpy.org/doc/stable/reference/arrays.datetime.html) NumPy
**nota**  
Se suas strings de time stamp não estiverem no formato ISO 8601, você poderá implementar uma solução com pandas que defina seu formato. Para obter mais informações, consulte [pandas.to\$1datetime](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html).

1. Ao configurar a AWS IoT SiteWise ação para sua regra, use os seguintes modelos de substituição para **Tempo em segundos** (`timeInSeconds`) e **Deslocamento em nanos** (). `offsetInNanos` Esses modelos de substituição presumem que a carga de mensagem contém a string de time stamp em `timestamp`. A função `aws_lambda` consome uma estrutura JSON para seu segundo parâmetro, assim você pode modificar os modelos de substituição abaixo, se necessário.
   + Para **Time in seconds (Tempo em segundos)** (`timeInSeconds`), use o seguinte modelo de substituição.

     ```
     ${aws_lambda('arn:aws:lambda:region:account-id:function:ConvertNanosecondTimestampFromString', {'timestamp': timestamp}).timeInSeconds}
     ```
   + Para **Offset in nanos (Deslocamento em nanos)** (`offsetInNanos`), use o seguinte modelo de substituição.

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

   Para cada parâmetro, substitua *region* e *account-id* por sua região e ID AWS da conta. Se você usou um nome diferente para sua função do Lambda, altere-o também.

1. Conceda AWS IoT permissões para invocar sua função com a `lambda:InvokeFunction` permissão. Para obter mais informações, consulte [aws\$1lambda(functionArn, inputJson)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda).

1. Teste sua regra (por exemplo, use o cliente de teste AWS IoT MQTT) e verifique se ela AWS IoT SiteWise recebe os dados que você envia.

   Se sua regra não funcionar como esperado, consulte [Solucionar problemas de uma ação de AWS IoT SiteWise regra](troubleshoot-rule.md).

**nota**  
Esta solução invoca a função do Lambda duas vezes para cada string de time stamp. Você pode criar outra regra para reduzir o número de invocações de função do Lambda se sua regra manipular vários pontos de dados que têm o mesmo time stamp em cada carga.  
Para fazer isso, crie uma regra com uma ação de publicar novamente que invoque o Lambda e publique a carga original com a string de time stamp convertida para `timeInSeconds` e `offsetInNanos`. Em seguida, crie uma regra com uma ação de AWS IoT SiteWise regra para consumir a carga convertida. Com essa abordagem, você reduz o número de vezes que a regra invoca o Lambda, mas aumenta o número de ações de AWS IoT regras executadas. Considere a definição de preço de cada serviço caso você aplique essa solução ao seu caso de uso.

## Configurações de regra de exemplo
<a name="rule-action-examples"></a>

Esta seção contém exemplos de configurações de regras para criar uma regra com uma AWS IoT SiteWise ação.

**Example O exemplo de ação de regra que usa aliases de propriedade como tópicos de mensagem**  
O exemplo a seguir cria uma regra com uma AWS IoT SiteWise ação que usa o tópico (por meio de [topic ())](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-topic) como alias da propriedade para identificar as propriedades do ativo. Use esse exemplo para definir uma regra para a ingestão de dados do tipo duplo em todas as turbinas eólicas de todos os parques eólicos. Este exemplo exige que você defina aliases de propriedade em todas as propriedades dos ativos da turbina. Você precisa definir uma segunda regra semelhante para ingerir dados de tipo inteiro.  

```
aws iot create-topic-rule \
  --rule-name SiteWiseWindFarmRule \
  --topic-rule-payload file://sitewise-rule-payload.json
```
O exemplo de carga no `sitewise-rule-payload.json` contém o conteúdo a seguir.  

```
{
  "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"
      }
    }
  ]
}
```
Com essa ação de regra, envie a mensagem a seguir ao alias de propriedade de uma turbina eólica (por exemplo, `/company/windfarm/3/turbine/7/temperature`) como um tópico para ingerir dados.  

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

**Example Exemplo de ação de regra que usa time stamp() para determinar o tempo**  
O exemplo a seguir cria uma regra com uma AWS IoT SiteWise ação que identifica uma propriedade do ativo IDs e usa [timestamp ()](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-timestamp) para determinar a hora atual.  

```
aws iot create-topic-rule \
  --rule-name SiteWiseAssetPropertyRule \
  --topic-rule-payload file://sitewise-rule-payload.json
```
O exemplo de carga no `sitewise-rule-payload.json` contém o conteúdo a seguir.  

```
{
  "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"
      }
    }
  ]
}
```
Com essa ação de regra, envie a mensagem a seguir a `my/asset/property/topic` para ingerir dados.  

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

## Solucionar problemas de ação de regra do
<a name="troubleshoot-rule-action"></a>

Para solucionar problemas de sua ação de AWS IoT SiteWise regra AWS IoT Core, configure CloudWatch Logs ou configure uma ação de erro de republicação para sua regra. Para obter mais informações, consulte [Solucionar problemas de uma ação de AWS IoT SiteWise regra](troubleshoot-rule.md).

# Reduza os custos com o Basic Ingest em AWS IoT SiteWise
<a name="basic-ingest-rules"></a>

AWS IoT Core fornece um recurso chamado Basic Ingest, que você pode usar para enviar dados AWS IoT Core sem incorrer em custos de [AWS IoT mensagens](https://aws.amazon.com/iot-core/pricing/). O Basic Ingest otimiza o fluxo de dados para cargas de trabalho de ingestão de dados de alto volume removendo o agente de publish/subscribe mensagens do caminho de ingestão. É possível usar a Ingestão básica se souber para quais regras as mensagens devem ser roteadas.

Para usar a Ingestão básica, envie mensagens diretamente a uma regra específica usando um tópico especial, `$aws/rules/rule-name`. Por exemplo, para enviar uma mensagem a uma regra chamada `SiteWiseWindFarmRule`, envie uma mensagem ao tópico`$aws/rules/SiteWiseWindFarmRule`.

Se a ação de regra usa modelos de substituição que contêm [topic(Decimal)](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sql-functions.html#iot-function-topic), é possível transmitir o tópico original ao fim do tópico especial de Ingestão básica, como `$aws/rules/rule-name/original-topic`. Por exemplo, para usar a Ingestão básica com o exemplo de alias de propriedade do parque de energia eólica da seção anterior, é possível enviar mensagens ao tópico a seguir.

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

**nota**  
O exemplo acima inclui uma segunda barra (`//`) porque AWS IoT remove o prefixo Basic Ingest (`$aws/rules/rule-name/`) do tópico que está visível para a ação da regra. Neste exemplo, a regra recebe o tópico `/company/windfarm/3/turbine/7/temperature`.

Para obter mais informações, consulte [Reducing messaging costs with basic ingest](https://docs.aws.amazon.com/iot/latest/developerguide/iot-basic-ingest.html) no *AWS IoT Developer Guide*.

# Ingira dados de AWS IoT SiteWise AWS IoT Events
<a name="iot-events"></a>

Com AWS IoT Events, você pode criar aplicativos complexos de monitoramento de eventos para sua frota de IoT na AWS nuvem. Use a SiteWise ação de IoT AWS IoT Events para enviar dados às propriedades do ativo AWS IoT SiteWise quando ocorrer um evento.

**nota**  
Aviso de fim do suporte: suporte AWS encerrado para AWS IoT Events. Para obter mais informações, consulte [AWS IoT Events Fim do suporte](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-end-of-support.html).

AWS IoT Events foi projetado para agilizar o desenvolvimento de aplicativos de monitoramento de eventos para dispositivos e sistemas de IoT na AWS nuvem. Usando AWS IoT Events, você pode:
+ Detecte e responda a alterações, anomalias ou condições específicas em toda a frota de IoT.
+  Aumente a eficiência operacional e permita o gerenciamento proativo do ecossistema de IoT.

 Ao se integrar por AWS IoT SiteWise meio da AWS IoT SiteWise ação, AWS IoT Events amplia seus recursos, permitindo que você atualize automaticamente as propriedades do ativo AWS IoT SiteWise em resposta a eventos específicos. Essa interação pode simplificar a ingestão e o gerenciamento de dados. Ela também pode capacitar você com insights práticos. 

Para obter mais informações, consulte os tópicos a seguir no *Guia do desenvolvedor do AWS IoT Events *.
+ [O que é AWS IoT Events?](https://docs.aws.amazon.com/iotevents/latest/developerguide/)
+ [Ações do AWS IoT Events](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-supported-actions.html)
+ [Ação de IoT SiteWise ](https://docs.aws.amazon.com/iotevents/latest/developerguide/iotevents-other-aws-services.html#iotevents-iotsitewise)

# Use o gerenciador de AWS IoT Greengrass stream em AWS IoT SiteWise
<a name="greengrass-stream-manager"></a>

AWS IoT Greengrass O gerenciador de fluxo é um recurso de integração que facilita a transferência de fluxos de dados de fontes locais para a AWS nuvem. Ele atua como uma camada intermediária que gerencia os fluxos de dados, permitindo que os dispositivos que operam na borda coletem e armazenem dados antes de serem enviados AWS IoT SiteWise, para análise e processamento adicionais.

Adicione um destino de dados configurando uma fonte local no console do AWS IoT SiteWise . Você também pode usar o gerenciador de streams em sua AWS IoT Greengrass solução personalizada para ingerir dados para AWS IoT SiteWise.

**nota**  
Para ingerir dados de fontes OPC UA, configure um gateway AWS IoT SiteWise Edge que seja executado em. AWS IoT Greengrass Para obter mais informações, consulte [Use gateways AWS IoT SiteWise Edge](gateways.md).

Para ter mais informações sobre como **configurar um destino** para dados da fonte local, consulte [AWS IoT SiteWise Entenda os destinos Edge](gw-destinations.md#source-destination).

Para ter mais informações sobre como **ingerir dados usando o gerenciador de fluxos** em uma solução do AWS IoT Greengrass personalizada, consulte os seguintes tópicos no *Guia do desenvolvedor do AWS IoT Greengrass Version 2 *:
+ [O que AWS IoT Greengrassé](https://docs.aws.amazon.com/greengrass/v2/developerguide/)
+ [Gerenciar streams de dados no núcleo do AWS IoT Greengrass core](https://docs.aws.amazon.com/greengrass/v2/developerguide/manage-data-streams.html)
+ [Exportação de dados para propriedades AWS IoT SiteWise de ativos](https://docs.aws.amazon.com/greengrass/v2/developerguide/stream-export-configurations.html#export-to-iot-sitewise)