

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à.

# IoT
<a name="iot-pattern-list"></a>

**Topics**
+ [Estrarre e interrogare gli attributi AWS IoT SiteWise dei metadati in un data lake](extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.md)
+ [Configurazione e risoluzione dei problemi di AWS IoT Greengrass con dispositivi client](set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.md)
+ [Altri modelli](iot-more-patterns-pattern-list.md)

# Estrarre e interrogare gli attributi AWS IoT SiteWise dei metadati in un data lake
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake"></a>

*Ambarish Dongaonkar, Amazon Web Services*

## Riepilogo
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-summary"></a>

AWS IoT SiteWise utilizza modelli e gerarchie di asset per rappresentare le apparecchiature, i processi e le strutture industriali. Ogni modello o asset può avere più attributi specifici dell'ambiente. Gli attributi dei metadati di esempio includono il sito o l'ubicazione fisica dell'asset, i dettagli dell'impianto e gli identificatori delle apparecchiature. Questi valori di attributo integrano i dati di misurazione degli asset per massimizzare il valore aziendale. L'apprendimento automatico (ML) può fornire ulteriori informazioni su questi metadati e semplificare le attività di progettazione.

Tuttavia, gli attributi dei metadati non possono essere richiesti direttamente dal servizio. AWS IoT SiteWise Per rendere gli attributi interrogabili, è necessario estrarli e inserirli in un data lake. Questo modello utilizza uno script Python per estrarre gli attributi di tutte le AWS IoT SiteWise risorse e inserirli in un data lake in un bucket Amazon Simple Storage Service (Amazon S3). Una volta completato questo processo, puoi utilizzare le query SQL in Amazon Athena per accedere AWS IoT SiteWise agli attributi dei metadati e ad altri set di dati, come i set di dati di misurazione. Le informazioni sugli attributi dei metadati sono utili anche quando si lavora con monitor o dashboard. AWS IoT SiteWise Puoi anche creare un [dashboard Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) utilizzando gli attributi estratti nel bucket Amazon S3.

Il pattern ha un codice di riferimento e puoi implementarlo utilizzando i migliori servizi di elaborazione per il tuo caso d'uso, come o. AWS Lambda AWS Glue

## Prerequisiti e limitazioni
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS.
+ Autorizzazioni per configurare AWS Lambda funzioni o AWS Glue lavori.
+ Un bucket Amazon S3.
+ I modelli e le gerarchie degli asset sono configurati in. AWS IoT SiteWise Per ulteriori informazioni, consulta [Creazione di modelli di asset](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-asset-models.html) nella AWS IoT SiteWise documentazione.

## Architecture
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-architecture"></a>

È possibile utilizzare una funzione Lambda o un AWS Glue job per completare questo processo. Ti consigliamo di utilizzare Lambda se hai meno di 100 modelli e ogni modello ha una media di 15 o meno attributi. Per tutti gli altri casi d'uso, consigliamo di utilizzare AWS Glue.

L'architettura della soluzione e il flusso di lavoro sono illustrati nel diagramma seguente.

![\[Diagramma dell'architettura che mostra il processo di estrazione e interrogazione descritto.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/22b59ff7-3df3-4a5b-9973-d43967bd58fd/images/fa3d80bf-df9a-49fe-971c-a055339b2cd2.png)


1. Viene eseguito il AWS Glue job pianificato o la funzione Lambda. Estrae gli attributi dei metadati degli asset AWS IoT SiteWise e li inserisce in un bucket Amazon S3.

1. Un AWS Glue crawler esegue la scansione dei dati estratti nel bucket Amazon S3 e crea tabelle in un. AWS Glue Data Catalog

1. Utilizzando SQL standard, Amazon Athena esegue query sulle tabelle in. AWS Glue Data Catalog

**Automazione e scalabilità**

È possibile pianificare l'esecuzione giornaliera o settimanale della funzione o del AWS Glue processo Lambda, in base alla frequenza di aggiornamento delle configurazioni AWS IoT SiteWise degli asset.

Non c'è limite al numero di AWS IoT SiteWise risorse che il codice di esempio può elaborare, ma un numero elevato di risorse può aumentare il tempo necessario per completare il processo.

## Tools (Strumenti)
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-tools"></a>
+ [Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)è un servizio di estrazione, trasformazione e caricamento (ETL) completamente gestito. Ti aiuta a classificare, pulire, arricchire e spostare i dati in modo affidabile tra archivi di dati e flussi di dati.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)ti aiuta a raccogliere, modellare, analizzare e visualizzare i dati delle apparecchiature industriali su larga scala.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.
+ [AWS SDK per Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)è un kit di sviluppo software che ti aiuta a integrare la tua applicazione, libreria o script Python con. Servizi AWS

## Epiche
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-epics"></a>

### Imposta il lavoro o la funzione
<a name="set-up-the-job-or-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura le autorizzazioni in IAM. | Nella console IAM, concedi le autorizzazioni al ruolo IAM assunto dalla funzione AWS Glue o dal job Lambda per eseguire le seguenti operazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.html)Per ulteriori informazioni, consulta [Creating a role for an Servizio AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) nella documentazione IAM. | Informazioni generali su AWS | 
| Crea la funzione o AWS Glue il job Lambda. | Se utilizzi Lambda, crea una nuova funzione Lambda. Per **Runtime**, scegli **Python**. Per ulteriori informazioni, consulta [Creazione di funzioni Lambda con Python nella](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) documentazione di Lambda.Se lo stai usando AWS Glue, crea un nuovo job della shell Python nella AWS Glue console. Per ulteriori informazioni, consulta [Aggiungere lavori di shell Python](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html#create-job-python-properties) nella AWS Glue documentazione.  | Informazioni generali su AWS | 
| Aggiorna la funzione o AWS Glue il job Lambda. | Modifica la nuova funzione o AWS Glue job Lambda e inserisci l'esempio di codice nella sezione [Informazioni aggiuntive](#extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-additional). Modifica il codice in base alle esigenze del tuo caso d'uso. Per ulteriori informazioni, consulta [Modificare il codice utilizzando l'editor della console](https://docs.aws.amazon.com/lambda/latest/dg/foundation-console.html#code-editor) nella documentazione di Lambda e vedere [Lavorare con gli script](https://docs.aws.amazon.com/glue/latest/dg/console-edit-script.html) nella documentazione.AWS Glue  | Informazioni generali su AWS | 

### Esegui il lavoro o la funzione
<a name="run-the-job-or-function"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Esegui la funzione o AWS Glue il processo Lambda. | Esegui la funzione o AWS Glue il processo Lambda. Per ulteriori informazioni, consulta [Invocare la funzione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually) nella documentazione di Lambda o [vedere Avvio di lavori utilizzando](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) i trigger nella documentazione. AWS Glue Questo estrae gli attributi dei metadati per gli asset e i modelli nella AWS IoT SiteWise gerarchia e li archivia nel bucket Amazon S3 specificato. | Informazioni generali su AWS | 
| Configura un AWS Glue crawler. | Configura un AWS Glue crawler con il classificatore di formato necessario per un file in formato CSV. Usa il bucket Amazon S3 e i dettagli del prefisso utilizzati nella funzione o nel job Lambda. AWS Glue Per ulteriori informazioni, consulta [Definizione dei crawler nella documentazione](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html). AWS Glue  | Informazioni generali su AWS | 
| Esegui il AWS Glue crawler. | Esegui il crawler per elaborare il file di dati creato dalla funzione o dal processo Lambda. AWS Glue Il crawler crea una tabella nel campo specificato. AWS Glue Data Catalog Per ulteriori informazioni, consulta [Avvio dei crawler utilizzando i trigger](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) nella documentazione. AWS Glue  | Informazioni generali su AWS | 
| Interroga gli attributi dei metadati. | Utilizzando Amazon Athena, usa SQL standard per eseguire query in base alle esigenze del AWS Glue Data Catalog tuo caso d'uso. Puoi unire la tabella degli attributi dei metadati ad altri database e tabelle. Per ulteriori informazioni, consulta la sezione [Guida introduttiva](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) nella documentazione di Amazon Athena. | Informazioni generali su AWS | 

## Risorse correlate
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-resources"></a>
+ [Documentazione Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)
+ [AWS Glue documentazione](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [AWS IoT SiteWise Documentazione di riferimento dell'API](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotsitewise/index.html)
+ [AWS IoT SiteWise guida per l'utente](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)
  + [Nozioni di base](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/getting-started.html)
  + [Modellazione di asset industriali](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-asset-models.html)
  + [Definizione delle relazioni tra i modelli di asset (gerarchie)](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html)
  + [Associazione e dissociazione degli asset](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/add-associated-assets.html)
  + [Creazione della demo AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/getting-started-demo.html#create-getting-started-demo)
+ [IOTSiteWise](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iotsitewise.html) (documentazione SDK per Python)
+ [Documentazione Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html)

## Informazioni aggiuntive
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-additional"></a>

**Codice**

Il codice di esempio fornito è di riferimento ed è possibile personalizzare questo codice in base alle esigenze del caso d'uso.

```
# Following code can be used in an AWS Lambda function or in an AWS Glue Python shell job. 
# IAM roles used for this job need read access to the AWS IoT SiteWise service and write access to the S3 bucket.
sw_client = boto3.client('iotsitewise')
s3_client = boto3.client('s3')
output = io.StringIO()
 
attribute_list=[]
bucket = '{3_bucket name}'
prefix = '{s3_bucket prefix}'
output.write("model_id,model_name,asset_id,asset_name,attribuet_id,attribute_name,attribute_value\n")
     
m_resp = sw_client.list_asset_models()
for m_rec in m_resp['assetModelSummaries']:
     model_id = m_rec['id']
     model_name = m_rec['name']
 
     attribute_list.clear()
     dam_response = sw_client.describe_asset_model(assetModelId=model_id)
     for rec in dam_response['assetModelProperties']:
         if 'attribute' in rec['type']:
            attribute_list.append(rec['name'])
     
     response = sw_client.list_assets(assetModelId=model_id, filter='ALL')
     for asset in response['assetSummaries']:
         asset_id = asset['id']
         asset_name = asset['name']
         resp = sw_client.describe_asset(assetId=asset_id)
         for rec in resp['assetProperties']:
            if rec['name'] in attribute_list:
                p_resp = sw_client.get_asset_property_value(assetId=asset_id, propertyId=rec['id'])
                if 'propertyValue' in p_resp:
                    if p_resp['propertyValue']['value']:
                        if 'stringValue' in p_resp['propertyValue']['value']:
                             output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['stringValue']) + "\n")                             
                        if 'doubleValue' in p_resp['propertyValue']['value']:
                             output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['doubleValue']) + "\n")
                        if 'integerValue' in p_resp['propertyValue']['value']:
                             output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['integerValue']) + "\n")
                         if 'booleanValue' in p_resp['propertyValue']['value']:
                             output.write(model_id + "," + model_name + "," + asset_id + "," + asset_name + "," + rec['id'] + "," + rec['name'] + "," + str(p_resp['propertyValue']['value']['booleanValue']) + "\n")
 
output.seek(0)
s3_client.put_object(Bucket=bucket, Key= prefix + '/data.csv', Body=output.getvalue())
output.close()
```

# Configurazione e risoluzione dei problemi di AWS IoT Greengrass con dispositivi client
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices"></a>

*Marouane Sefiani e Akalanka De Silva, Amazon Web Services*

## Riepilogo
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-summary"></a>

AWS IoT Greengrass è un servizio cloud e di runtime edge open source per la creazione, la distribuzione e la gestione di software Internet of Things (IoT) su dispositivi edge. I casi d'uso per AWS IoT Greengrass includono:
+ Case intelligenti in cui un gateway AWS IoT Greengrass viene utilizzato come hub per l'automazione domestica
+ Fabbriche intelligenti in cui AWS IoT Greengrass può facilitare l'acquisizione e l'elaborazione locale dei dati dall'officina

AWS IoT Greengrass può fungere da endpoint di connessione MQTT sicuro e autenticato per altri dispositivi edge (noti anche come *dispositivi client*), che altrimenti si connetterebbero direttamente ad AWS IoT Core. Questa funzionalità è utile quando i dispositivi client non hanno accesso diretto alla rete all'endpoint AWS IoT Core.

Puoi configurare AWS IoT Greengrass per l'uso con i dispositivi client per i seguenti casi d'uso:
+ Per consentire ai dispositivi client di inviare dati ad AWS IoT Greengrass
+ Per l'inoltro dei dati ad AWS IoT Core da parte di AWS IoT Greengrass
+ Per sfruttare le funzionalità avanzate del motore di regole AWS IoT Core

Queste funzionalità richiedono l'installazione e la configurazione dei seguenti componenti sul dispositivo AWS IoT Greengrass:
+ Broker MQTT
+ Ponte MQTT
+ Autenticazione del dispositivo client
+ Rilevatore IP

Inoltre, i messaggi pubblicati dai dispositivi client devono essere in formato JSON o in formato [Protocol Buffers (protobuf](https://protobuf.dev/)).

Questo modello descrive come installare e configurare questi componenti richiesti e fornisce suggerimenti e best practice per la risoluzione dei problemi.

## Prerequisiti e limitazioni
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-prereqs"></a>

**Prerequisiti**
+ Un account AWS attivo
+ [AWS Command Line Interface (AWS CLI) versione 2](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ Due dispositivi client che eseguono Python 3.7 o versione successiva
+ Un dispositivo principale che esegue Java Runtime Environment (JRE) versione 8 o successiva e [Amazon Corretto 11](https://aws.amazon.com/corretto/) o [OpenJDK](https://openjdk.java.net/) 11

**Limitazioni**
+ Devi scegliere una regione AWS in cui è disponibile AWS IoT Core. Per l'elenco aggiornato delle regioni per AWS IoT Core, consulta [Servizi AWS per regione](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).
+ Il dispositivo principale deve avere almeno 172 MB di RAM e 512 MB di spazio su disco.

## Architecture
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-architecture"></a>

Il diagramma seguente mostra l'architettura della soluzione per questo modello.

![\[Architettura della soluzione per la configurazione di AWS IoT Greengrass con dispositivi client\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/0656c5ae-d979-4cf7-be92-a46fa81cab0d.png)


L'architettura include:
+ Due dispositivi client. Ogni dispositivo contiene una chiave privata, un certificato del dispositivo e un certificato di autorità di certificazione (CA) principale. L'SDK per dispositivi AWS IoT, che contiene un client MQTT, è installato anche su ogni dispositivo client.
+ Un dispositivo principale su cui è distribuito AWS IoT Greengrass con i seguenti componenti:
  + Broker MQTT
  + Ponte MQTT
  + Autenticazione del dispositivo client
  + Rilevatore IP

Questa architettura supporta i seguenti scenari:
+ I dispositivi client possono utilizzare il proprio client MQTT per comunicare tra loro tramite il broker MQTT del dispositivo principale.
+ I dispositivi client possono anche comunicare con AWS IoT Core nel cloud tramite il broker MQTT del dispositivo principale e il bridge MQTT.
+ AWS IoT Core nel cloud può inviare messaggi ai dispositivi client tramite il client di test MQTT e il bridge MQTT e il broker MQTT del dispositivo principale.

Per ulteriori informazioni sulle comunicazioni tra i dispositivi client e il dispositivo principale, consulta la sezione Informazioni [aggiuntive](#set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional).

## Tools (Strumenti)
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-tools"></a>

**Servizi AWS**
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) è un servizio cloud e di runtime edge open source per l'Internet of Things (IoT) che ti aiuta a creare, distribuire e gestire applicazioni IoT sui tuoi dispositivi.
+ [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) fornisce comunicazioni sicure e bidirezionali per i dispositivi connessi a Internet per connettersi al cloud AWS.
+ [AWS IoT Device SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) è un kit di sviluppo software che include librerie open source, guide per sviluppatori con esempi e guide al porting per creare prodotti o soluzioni IoT innovativi su piattaforme hardware a tua scelta.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.

## Best practice
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-best-practices"></a>
+ Il payload dei messaggi dai dispositivi client deve essere in formato JSON o Protobuf per sfruttare le funzionalità avanzate del motore di regole AWS IoT Core, come la trasformazione e le azioni condizionali.
+ Configura il bridge MQTT per consentire la comunicazione bidirezionale.
+ Configura e distribuisci il componente del rilevatore IP in AWS IoT Greengrass per garantire che gli indirizzi IP del dispositivo principale siano inclusi nel campo Subject Alternative Name (SAN) del certificato broker MQTT.

## Epiche
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-epics"></a>

### Configura il dispositivo principale
<a name="set-up-the-core-device"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Configura AWS IoT Greengrass sul tuo dispositivo principale. | Installa il software AWS IoT Greengrass Core seguendo le istruzioni nella guida per [sviluppatori](https://docs.aws.amazon.com/greengrass/v2/developerguide/install-greengrass-core-v2.html). | AWS IoT Greengrass | 
| Controlla lo stato dell'installazione. | Utilizza il seguente comando per verificare lo stato del servizio AWS IoT Greengrass sul tuo dispositivo principale:<pre>sudo systemctl status greengrass.service</pre>L'output previsto del comando è:<pre>Launched Nucleus successfully</pre> | Informazioni generali su AWS | 
| Imposta una policy IAM e collegala al ruolo di servizio Greengrass. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | Informazioni generali su AWS | 
| Configura e distribuisci i componenti richiesti nel dispositivo principale di AWS IoT Greengrass. | Configura e distribuisci i seguenti componenti:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS IoT Greengrass | 
| Verificate che il bridge MQTT consenta la comunicazione bidirezionale. | Per inoltrare messaggi MQTT tra dispositivi client e AWS IoT Core, configura e distribuisci il componente bridge MQTT e specifica gli argomenti da inoltrare. Ecco un esempio:<pre>{<br />  "mqttTopicMapping": {<br />    "ClientDevicesToCloud": {<br />      "topic": "dt/#",<br />      "source": "LocalMqtt",<br />      "target": "IotCore"<br />    },<br />    "CloudToClientDevices": {<br />      "topic": "cmd/#",<br />      "source": "IotCore",<br />      "target": "LocalMqtt"<br />    }<br />  }<br />}</pre> | AWS IoT Greengrass | 
| Verifica che il componente di autenticazione consenta ai dispositivi client di connettersi e pubblicare o sottoscrivere argomenti.  | La seguente `aws.greengrass.clientdevices.Auth` configurazione consente a tutti i dispositivi client di connettersi, pubblicare messaggi e sottoscrivere tutti gli argomenti.<pre>{<br />  "deviceGroups": {<br />    "formatVersion": "2021-03-05",<br />    "definitions": {<br />      "MyPermissiveDeviceGroup": {<br />        "selectionRule": "thingName: *",<br />        "policyName": "MyPermissivePolicy"<br />      }<br />    },<br />    "policies": {<br />      "MyPermissivePolicy": {<br />        "AllowAll": {<br />          "statementDescription": "Allow client devices to perform all actions.",<br />          "operations": [<br />            "*"<br />          ],<br />          "resources": [<br />            "*"<br />          ]<br />        }<br />      }<br />    }<br />  }<br />}</pre> | AWS IoT Greengrass | 

### Configurare i dispositivi client
<a name="set-up-client-devices"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Installa l'SDK per dispositivi AWS IoT. | Installa l'SDK per dispositivi AWS IoT sui dispositivi client. Per un elenco completo delle lingue supportate e associate SDKs, consulta la [documentazione di AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html).[Ad esempio, l'SDK per dispositivi AWS IoT per Python si trova su. GitHub](https://github.com/aws/aws-iot-device-sdk-python-v2) Per installare questo SDK:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html)In alternativa, puoi installare l'SDK dal repository di origine:<pre># Create a workspace directory to hold all the SDK files<br />mkdir sdk-workspace<br />cd sdk-workspace<br /># Clone the repository<br />git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git<br /># Install using Pip (use 'python' instead of 'python3' on Windows)<br />python3 -m pip install ./aws-iot-device-sdk-python-v2</pre> | Informazioni generali su AWS IoT | 
| Crea una cosa. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS IoT Core | 
| Scarica il certificato CA dal dispositivo principale Greengrass. | Se si prevede che il dispositivo core Greengrass funzioni in ambienti offline, è necessario rendere disponibile il certificato CA di base Greengrass al dispositivo client in modo che possa verificare il certificato del broker MQTT (rilasciato dalla CA principale di Greengrass). Pertanto, è importante ottenere una copia di questo certificato. Utilizza uno dei seguenti approcci per scaricare il certificato CA:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | Informazioni generali su AWS | 
| Copia le credenziali nei dispositivi client. | Copia il certificato CA di base Greengrass, il certificato del dispositivo e la chiave privata nei dispositivi client. | Informazioni generali su AWS | 
| Associa i dispositivi client al dispositivo principale. | Associa i dispositivi client a un dispositivo principale in modo che possano scoprire il dispositivo principale. I dispositivi client possono quindi utilizzare l'[API di scoperta Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-discover-api.html) per recuperare le informazioni di connettività e i certificati per i dispositivi principali associati. Per ulteriori informazioni, consulta [Associare i dispositivi client](https://docs.aws.amazon.com/greengrass/v2/developerguide/associate-client-devices.html) nella documentazione di AWS IoT Greengrass.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html)I dispositivi client che hai associato possono ora utilizzare l'API di scoperta Greengrass per scoprire questo dispositivo principale. | AWS IoT Greengrass | 

### Inviare e ricevere dati
<a name="send-and-receive-data"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Invia dati da un dispositivo client a un altro dispositivo client. | Utilizzate il client MQTT del vostro dispositivo per pubblicare un messaggio sull'`dt/client1/sensor`argomento. | Informazioni generali su AWS | 
| Invia dati dal dispositivo client ad AWS IoT Core. | Usa il client MQTT sul tuo dispositivo per pubblicare un messaggio sull'`dt/client1/sensor`argomento.Nel client di test MQTT, sottoscrivete l'argomento su cui il dispositivo invia i messaggi oppure abbonatevi a **\$1** per tutti gli argomenti (consultate i [dettagli](https://docs.aws.amazon.com/iot/latest/developerguide/view-mqtt-messages.html)). | Informazioni generali su AWS | 
| Invia messaggi da AWS IoT Core ai dispositivi client. | Nella pagina del client di test MQTT, nella scheda **Pubblica su un argomento**, nel campo **Nome argomento**, inserisci il nome dell'argomento del messaggio. In questo esempio, utilizzare `cmd/client1` per l'argomento. | Informazioni generali su AWS | 

## risoluzione dei problemi
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| **Impossibile verificare l'errore del certificato del server** | Questo errore si verifica quando il client MQTT non è in grado di verificare il certificato presentato dal broker MQTT durante l'handshake TLS. Il motivo più comune è che il client MQTT non dispone del certificato CA. Segui questi passaggi per assicurarti che il certificato CA venga fornito al client MQTT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | 
| **Impossibile verificare l'errore relativo al nome del server** | Questo errore si verifica quando il client MQTT non è in grado di verificare che si stia connettendo al server corretto. Il motivo più comune è che l'indirizzo IP del dispositivo Greengrass non è elencato nel campo SAN del certificato.Segui le istruzioni della soluzione precedente per ottenere il certificato del broker MQTT e verifica che il campo SAN contenga l'indirizzo IP del dispositivo AWS IoT Greengrass, come spiegato [nella sezione Informazioni aggiuntive](#set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional). In caso contrario, verifica che il componente del rilevatore IP sia installato correttamente e riavvia il dispositivo principale. | 
| **Impossibile verificare il nome del server solo durante la connessione da un dispositivo client integrato** | Mbed TLS, che è una popolare libreria TLS utilizzata nei dispositivi integrati, attualmente supporta la verifica dei nomi DNS solo nel campo SAN del certificato, come mostrato nel codice della libreria Mbed TLS. Poiché il dispositivo principale non ha un nome di dominio proprio e dipende dall'indirizzo IP, i client TLS che utilizzano Mbed TLS non riusciranno a verificare il nome del server durante l'handshake TLS, causando un errore di connessione. [Ti consigliamo di aggiungere la verifica dell'indirizzo IP SAN alla tua libreria TLS Mbed con la funzione x509\$1crt\$1check\$1san.](https://github.com/Mbed-TLS/mbedtls/blob/6a327a5fdc2786cb50b4dbe5e3a75884a1f8435a/library/x509_crt.c#L2548) | 

## Risorse correlate
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-resources"></a>
+ [Documentazione di AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)
+ [Documentazione di AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html)
+ [Componente del broker MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)
+ [Componente bridge MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-bridge-component.html)
+ [Componente di autenticazione del dispositivo client](https://docs.aws.amazon.com/greengrass/v2/developerguide/client-device-auth-component.html)
+ [Componente del rilevatore IP](https://docs.aws.amazon.com/greengrass/v2/developerguide/ip-detector-component.html)
+ [SDK per dispositivi AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html)
+ [Implementazione di dispositivi client locali con AWS IoT Greengrass](https://aws.amazon.com/blogs/iot/implementing-local-client-devices-with-aws-iot-greengrass/) (post sul blog AWS)
+ [RFC 5280 — Certificato dell'infrastruttura a chiave pubblica Internet X.509 e profilo dell'elenco di revoca dei certificati (CRL)](https://www.rfc-editor.org/rfc/rfc5280)

## Informazioni aggiuntive
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional"></a>

Questa sezione fornisce informazioni aggiuntive sulle comunicazioni tra i dispositivi client e il dispositivo principale.

Il broker MQTT ascolta sulla porta 8883 del dispositivo principale un tentativo di connessione al client TLS. L'illustrazione seguente mostra un esempio di certificato server del broker MQTT.

![\[Esempio di certificato del server del broker MQTT\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/b2c324a1-60cd-4194-80e7-e5184662146a.png)


Il certificato di esempio mostra i seguenti dettagli:
+ Il certificato è rilasciato dalla CA AWS IoT Greengrass Core, che è locale e specifica per il dispositivo principale, ovvero funge da CA locale.
+ Questo certificato viene ruotato automaticamente ogni settimana dal componente di autenticazione del client, come mostrato nella figura seguente. È possibile impostare questo intervallo nella configurazione del componente client auth.

![\[Rotazione del certificato del server del broker MQTT\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/65bcdc5c-a71c-4f52-adcd-21910fabfc2a.png)

+ Il nome alternativo del soggetto (SAN) svolge un ruolo fondamentale nella verifica del nome del server sul lato client TLS. Aiuta il client TLS a garantire la connessione al server corretto e aiuta a evitare man-in-the-middle attacchi durante la configurazione della sessione TLS. Nel certificato di esempio, il campo SAN indica che questo server è in ascolto su localhost (il socket del dominio Unix locale) e l'interfaccia di rete ha l'indirizzo IP 192.168.1.12.

Il client TLS utilizza il campo SAN nel certificato per verificare che si stia connettendo a un server legittimo durante la verifica del server. Al contrario, durante un tipico handshake TLS tra un server HTTP e un browser, il nome di dominio nel campo Common Name (CN) o nel campo SAN viene utilizzato per verificare il dominio a cui il browser si sta effettivamente connettendo durante il processo di verifica del server. Se il dispositivo principale non ha un nome di dominio, l'indirizzo IP incluso nel campo SAN ha lo stesso scopo. Per ulteriori informazioni, vedere la [sezione Subject Alternative Name](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.6) di *RFC 5280 — Profilo del certificato e dell'elenco di revoca dei certificati (CRL) dell'infrastruttura a chiave pubblica Internet X.509*.

Il componente del rilevatore IP in AWS IoT Greengrass assicura che gli indirizzi IP corretti siano inclusi nel campo SAN del certificato.

Il certificato nell'esempio è firmato dal dispositivo AWS IoT Greengrass che funge da CA locale. Il client TLS (client MQTT) non è a conoscenza di questa CA, quindi dobbiamo fornire un certificato CA simile al seguente.

![\[Esempio di certificato CA\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/b08b3bcb-9e12-4f5a-9204-cf65ea32902f.png)


# Altri modelli
<a name="iot-more-patterns-pattern-list"></a>

**Topics**
+ [Inserimento conveniente di dati IoT direttamente in Amazon S3 con AWS IoT Greengrass](cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.md)
+ [Implementa sistemi agentici su Amazon Bedrock con il framework CrewAI utilizzando Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Distribuisci applicazioni containerizzate in AWS IoT Greengrass V2 esecuzione come contenitore Docker](deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.md)