

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creare una AWS IoT regola
<a name="iot-create-rule"></a>

Puoi creare AWS IoT regole per indirizzare i dati dagli oggetti connessi all'interazione con altri AWS servizi. Una AWS IoT regola è composta dai seguenti componenti:


**Componenti di una regola**  

| Componente | Description | Obbligatorio o facoltativo | 
| --- | --- | --- | 
| Nome regola |  Nome della regola . Tieni presente che non consigliamo l'uso di informazioni di identificazione personale nei nomi delle regole.  | Obbligatorio. | 
| Descrizione della regola |  Una descrizione testuale della regola. Tieni presente che non consigliamo l'uso di informazioni di identificazione personale nelle descrizioni delle regole.  | Opzionale. | 
| Istruzione SQL |  Sintassi SQL semplificata per filtrare i messaggi ricevuti in un argomento MQTT ed effettuare il push dei dati in un’altra posizione. Per ulteriori informazioni, consulta [AWS IoT Riferimento SQL](iot-sql-reference.md).  | Obbligatorio. | 
| Versione SQL |  Versione del motore di regole SQL da usare durante la valutazione della regola. Sebbene questa proprietà sia facoltativa, si consiglia vivamente di specificare la versione SQL. La AWS IoT Core console imposta questa proprietà come `2016-03-23` predefinita. Se questa proprietà non è impostata, ad esempio in un AWS CLI comando o in un CloudFormation modello, `2015-10-08` viene utilizzata. Per ulteriori informazioni, consulta [Versioni SQL](iot-rule-sql-version.md).  | Obbligatorio. | 
| Una o più azioni | Le azioni AWS IoT eseguite quando si applica la regola. Ad esempio, è possibile inserire i dati in una tabella Dynamo DB, scrivere i dati in un bucket Amazon S3, eseguire la pubblicazione in un argomento Amazon SNS o invocare una funzione Lambda. | Obbligatorio. | 
| Un'operazione in caso di errore | L'azione viene AWS IoT eseguita quando non è in grado di eseguire l'azione di una regola. | Opzionale. | 

Prima di creare una AWS IoT regola, devi creare un ruolo IAM con una policy che consenta l'accesso alle AWS risorse richieste. AWS IoT assume questo ruolo quando implementa una regola. Per ulteriori informazioni, vedere [Concessione a una AWS IoT regola dell'accesso richiesto](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html) e [Passaggio delle autorizzazioni di ruolo](https://docs.aws.amazon.com//iot/latest/developerguide/pass-role.html).

Quando crei una regola, fai attenzione alla quantità di dati che pubblichi negli argomenti. Se crei regole che includono uno schema di argomento con caratteri jolly, potrebbero corrispondere a una percentuale elevata dei tuoi messaggi. In tal caso, potrebbe essere necessario aumentare la capacità delle risorse AWS  utilizzate dalle operazioni di destinazione. Consigliamo di evitare schemi di argomento con caratteri jolly nelle regole di ripubblicazione per evitare elaborazioni duplicate e ridurre i costi.

**Nota**  
La creazione e l’aggiornamento di regole sono operazioni a livello di amministratore. Qualsiasi utente che abbia l'autorizzazione per creare o aggiornare regole potrà accedere ai dati elaborati dalle regole.

## Crea una regola (Console)
<a name="iot-create-rule-console"></a>

**Per creare una regola (Console di gestione AWS)**

Usa il [Console di gestione AWS](https://console.aws.amazon.com//iot/home#/home)comando per creare una regola:

1. Apri la [AWS IoT console](https://console.aws.amazon.com//iot/home#/home).

1. Nella barra di navigazione a sinistra, scegli **Instradamento dei messaggi** dalla sezione **Gestisci**. Quindi scegli **Regole**.

1. Nella pagina **Regole**, scegli **Crea regola**.

1. Nella pagina **Specificare le proprietà della regola**, inserisci un nome per la regola. **La descrizione e i **tag** della regola** sono facoltativi. Scegli **Next (Successivo)**.

1. Nella pagina **Configura l'istruzione SQL**, scegli una versione SQL e inserisci un'istruzione SQL. Un esempio di istruzione SQL può essere`SELECT temperature FROM 'iot/topic' WHERE temperature > 50`. Per ulteriori informazioni, vedere [Versioni SQL](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-sql-version.html) e [riferimenti AWS IoT SQL](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-reference.html).

1. Nella pagina **Allega azioni alle regole**, aggiungi le azioni delle regole per indirizzare i dati ad altri AWS servizi.

   1. In **Azioni relative alle** regole, seleziona un'azione della regola dall'elenco a discesa. Ad esempio, puoi scegliere **Kinesis** Stream. Per ulteriori informazioni sulle azioni delle regole, consulta le [azioni delle AWS IoT regole](https://docs.aws.amazon.com//iot/latest/developerguide/iot-rule-actions.html).

   1. A seconda dell'azione della regola scelta, inserisci i dettagli di configurazione correlati. Ad esempio, se scegli **Kinesis Stream**, dovrai scegliere o creare una risorsa di flusso di dati e, facoltativamente, inserire dettagli di configurazione come la **chiave di partizione**, che viene utilizzata per raggruppare i dati per shard in uno stream.

   1. Nel **ruolo IAM**, scegli o crea un ruolo per concedere AWS IoT l'accesso al tuo endpoint. Tieni presente che AWS IoT creerà automaticamente una policy con un prefisso corrispondente al ruolo IAM selezionato. `aws-iot-rule` Puoi scegliere **Visualizza per visualizzare** il tuo ruolo IAM e la policy dalla console IAM. **L'azione di errore** è facoltativa. Ulteriori informazioni sono disponibili in [Gestione degli errori (azione di errore)](https://docs.aws.amazon.com//iot/latest/developerguide/rule-error-handling.html). Per ulteriori informazioni sulla creazione di un ruolo IAM per la regola, consulta [Concedere a una regola l'accesso richiesto](https://docs.aws.amazon.com//iot/latest/developerguide/iot-create-role.html). Scegli **Next (Successivo)**.

1. Nella pagina **Rivedi e crea**, esamina tutta la configurazione e apporta le modifiche necessarie. Scegli **Create** (Crea).

Dopo aver creato correttamente una regola, la regola verrà visualizzata nella pagina **Regole**. È possibile selezionare una regola per aprire la pagina **Dettagli** in cui è possibile visualizzare una regola, modificare una regola, disattivarla ed eliminarla.

## Creare una regola (CLI)
<a name="iot-create-rule-cli"></a>

**Per creare una regola (AWS CLI)**  
Usa il [create-topic-rule](https://docs.aws.amazon.com/cli/latest/reference/iot/create-topic-rule.html)comando per creare una regola:

```
aws iot create-topic-rule --rule-name myrule --topic-rule-payload file://myrule.json
```

Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento `iot/test` nella tabella Dynamo DB specificata. L'istruzione SQL filtra i messaggi e il ruolo ARN concede il AWS IoT permesso di scrivere nella tabella DynamoDB.

```
{
	"sql": "SELECT * FROM 'iot/test'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"dynamoDB": {
				"tableName": "my-dynamodb-table",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"hashKeyField": "topic",
				"hashKeyValue": "${topic(2)}",
				"rangeKeyField": "timestamp",
				"rangeKeyValue": "${timestamp()}"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento `iot/test` nel bucket S3 specificato. L'istruzione SQL filtra i messaggi e il ruolo ARN concede l' AWS IoT autorizzazione alla scrittura nel bucket Amazon S3.

```
{
	"awsIotSqlVersion": "2016-03-23",
	"sql": "SELECT * FROM 'iot/test'",
	"ruleDisabled": false,
	"actions": [
		{
			"s3": {
				"roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3",
				"bucketName": "amzn-s3-demo-bucket",
				"key": "myS3Key"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che invia i dati ad Amazon OpenSearch Service:

```
{
	"sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"OpenSearch": {
				"roleArn": "arn:aws:iam::123456789012:role/aws_iot_es",
				"endpoint": "https://my-endpoint",
				"index": "my-index",
				"type": "my-type",
				"id": "${newuuid()}"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che richiama una funzione Lambda:

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"lambda": {
				"functionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che esegue la pubblicazione in un argomento Amazon SNS:

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"sns": {
				"targetArn": "arn:aws:sns:us-west-2:123456789012:my-sns-topic",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che esegue la ripubblicazione in un argomento MQTT diverso:

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"republish": {
				"topic": "my-mqtt-topic",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che invia i dati a un flusso Amazon Data Firehose:

```
{
	"sql": "SELECT * FROM 'my-topic'",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"firehose": {
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"deliveryStreamName": "my-stream-name"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che utilizza la `machinelearning_predict` funzione Amazon SageMaker AI per ripubblicare su un argomento se i dati nel payload MQTT sono classificati come 1.

```
{
	"sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"republish": {
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role",
				"topic": "my-mqtt-topic"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che pubblica messaggi in un flusso di input Salesforce IoT Cloud.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"salesforce": {
				"token": "ABCDEFGHI123456789abcdefghi123456789",
				"url": "https://ingestion-cluster-id.my-env.sfdcnow.com/streams/stream-id/connection-id/my-event"
			}
		}
	]
}
```

Di seguito è riportato un esempio di file di payload con una regola che avvia un'esecuzione di una macchina a stati Step Functions.

```
{
	"sql": "expression",
	"ruleDisabled": false,
	"awsIotSqlVersion": "2016-03-23",
	"actions": [
		{
			"stepFunctions": {
				"stateMachineName": "myCoolStateMachine",
				"executionNamePrefix": "coolRunning",
				"roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
			}
		}
	]
}
```