

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

**Topics**
+ [Extraire et interroger AWS IoT SiteWise les attributs de métadonnées dans un lac de données](extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.md)
+ [Configuration et résolution des problèmes liés à AWS IoT Greengrass avec des appareils clients](set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.md)
+ [Plus de modèles](iot-more-patterns-pattern-list.md)

# Extraire et interroger AWS IoT SiteWise les attributs de métadonnées dans un lac de données
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake"></a>

*Ambarish Dongaonkar, Amazon Web Services*

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

AWS IoT SiteWise utilise des modèles d'actifs et des hiérarchies pour représenter vos équipements industriels, vos processus et vos installations. Chaque modèle ou actif peut avoir plusieurs attributs spécifiques à votre environnement. Les exemples d'attributs de métadonnées incluent le site ou l'emplacement physique de l'actif, les détails de l'usine et les identifiants de l'équipement. Ces valeurs d'attribut complètent les données de mesure des actifs afin de maximiser la valeur commerciale. L'apprentissage automatique (ML) peut fournir des informations supplémentaires sur ces métadonnées et rationaliser les tâches d'ingénierie.

Toutefois, les attributs de métadonnées ne peuvent pas être demandés directement depuis le AWS IoT SiteWise service. Pour rendre les attributs interrogeables, vous devez les extraire et les ingérer dans un lac de données. Ce modèle utilise un script Python pour extraire les attributs de tous les AWS IoT SiteWise actifs et les intégrer dans un lac de données situé dans un bucket Amazon Simple Storage Service (Amazon S3). Une fois ce processus terminé, vous pouvez utiliser des requêtes SQL dans Amazon Athena pour accéder aux attributs de AWS IoT SiteWise métadonnées et à d'autres ensembles de données, tels que les ensembles de données de mesures. Les informations relatives aux attributs de métadonnées sont également utiles lorsque vous travaillez avec des AWS IoT SiteWise moniteurs ou des tableaux de bord. Vous pouvez également créer un tableau de [bord Amazon Quick Sight](https://docs.aws.amazon.com/quicksuite/latest/userguide/quick-bi.html) en utilisant les attributs extraits dans le compartiment Amazon S3.

Le modèle comporte un code de référence, et vous pouvez implémenter le code en utilisant les meilleurs services de calcul pour votre cas d'utilisation, tels que AWS Lambda ou AWS Glue.

## Conditions préalables et limitations
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-prereqs"></a>

**Conditions préalables**
+ Un actif Compte AWS.
+ Autorisations pour configurer des AWS Lambda fonctions ou AWS Glue des tâches.
+ Un compartiment Amazon S3.
+ Les modèles d'actifs et les hiérarchies sont configurés dans AWS IoT SiteWise. Pour plus d'informations, consultez la section [Création de modèles d'actifs](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/create-asset-models.html) dans la AWS IoT SiteWise documentation.

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

Vous pouvez utiliser une fonction Lambda ou une AWS Glue tâche pour terminer ce processus. Nous vous recommandons d'utiliser Lambda si vous avez moins de 100 modèles et que chaque modèle possède en moyenne 15 attributs ou moins. Pour tous les autres cas d'utilisation, nous vous recommandons d'utiliser AWS Glue.

L'architecture de la solution et le flux de travail sont illustrés dans le schéma suivant.

![\[Schéma d'architecture illustrant le processus d'extraction et de requête décrit.\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/22b59ff7-3df3-4a5b-9973-d43967bd58fd/images/fa3d80bf-df9a-49fe-971c-a055339b2cd2.png)


1. La AWS Glue tâche planifiée ou la fonction Lambda s'exécute. Il extrait les attributs des métadonnées des actifs AWS IoT SiteWise et les intègre dans un compartiment Amazon S3.

1. Un AWS Glue robot d'exploration explore les données extraites dans le compartiment Amazon S3 et crée des tables dans un. AWS Glue Data Catalog

1. À l'aide du SQL standard, Amazon Athena interroge les tables du. AWS Glue Data Catalog

**Automatisation et mise à l'échelle**

Vous pouvez planifier l'exécution quotidienne ou hebdomadaire de la fonction ou de la AWS Glue tâche Lambda, en fonction de la fréquence de mise à jour de la configuration de vos AWS IoT SiteWise actifs.

Il n'y a pas de limite au nombre de AWS IoT SiteWise ressources que l'exemple de code peut traiter, mais un grand nombre d'actifs peut augmenter le temps nécessaire pour terminer le processus.

## Outils
<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) est un service de requête interactif qui vous permet d'analyser les données directement dans Amazon S3 à l'aide du SQL standard.
+ [AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)est un service d'extraction, de transformation et de chargement (ETL) entièrement géré. Il vous aide à classer, nettoyer, enrichir et déplacer les données de manière fiable entre les magasins de données et les flux de données.
+ [Gestion des identités et des accès AWS (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos AWS ressources en contrôlant qui est authentifié et autorisé à les utiliser.
+ [AWS IoT SiteWise](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)vous aide à collecter, modéliser, analyser et visualiser les données des équipements industriels à grande échelle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.
+ [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.
+ [AWS SDK pour Python (Boto3)](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html)est un kit de développement logiciel qui vous aide à intégrer votre application, bibliothèque ou script Python à Services AWS.

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

### Configuration de la tâche ou de la fonction
<a name="set-up-the-job-or-function"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez les autorisations dans IAM. | Dans la console IAM, accordez des autorisations au rôle IAM assumé par la fonction ou la AWS Glue tâche Lambda pour effectuer les opérations suivantes :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake.html)Pour plus d'informations, consultez [la section Création d'un rôle pour un Service AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) dans la documentation IAM. | AWS général | 
| Créez la fonction ou AWS Glue la tâche Lambda. | Si vous utilisez Lambda, créez une nouvelle fonction Lambda. Pour **Runtime**, choisissez **Python**. Pour plus d'informations, consultez la section [Création de fonctions Lambda avec Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) dans la documentation Lambda.Si vous en utilisez AWS Glue, créez une nouvelle tâche shell Python dans la AWS Glue console. Pour plus d'informations, consultez la section [Ajout de tâches shell Python](https://docs.aws.amazon.com/glue/latest/dg/add-job-python.html#create-job-python-properties) dans la AWS Glue documentation.  | AWS général | 
| Mettez à jour la fonction ou AWS Glue la tâche Lambda. | Modifiez la nouvelle fonction ou AWS Glue tâche Lambda et entrez l'exemple de code dans la section [Informations supplémentaires](#extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-additional). Modifiez le code en fonction de votre cas d'utilisation. Pour plus d'informations, voir [Modifier le code à l'aide de l'éditeur de console](https://docs.aws.amazon.com/lambda/latest/dg/foundation-console.html#code-editor) dans la documentation Lambda et voir [Utilisation de scripts](https://docs.aws.amazon.com/glue/latest/dg/console-edit-script.html) dans la AWS Glue documentation. | AWS général | 

### Exécuter le job ou la fonction
<a name="run-the-job-or-function"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Exécutez la fonction ou AWS Glue le job Lambda. | Exécutez la fonction ou AWS Glue le job Lambda. Pour plus d'informations, consultez [Invoke the Lambda function dans la](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#get-started-invoke-manually) documentation Lambda ou consultez [Starting jobs using triggers](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) dans la documentation. AWS Glue Cela extrait les attributs de métadonnées pour les actifs et les modèles de la AWS IoT SiteWise hiérarchie et les stocke dans le compartiment Amazon S3 spécifié. | AWS général | 
| Configurez un AWS Glue crawler. | Configurez un AWS Glue robot avec le classificateur de format nécessaire pour un fichier au format CSV. Utilisez les détails du compartiment et du préfixe Amazon S3 utilisés dans la fonction AWS Glue ou la tâche Lambda. Pour plus d'informations, consultez la section [Définition des robots](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) d'exploration dans la AWS Glue documentation. | AWS général | 
| Lancez le AWS Glue crawler. | Exécutez le robot d'exploration pour traiter le fichier de données créé par la fonction AWS Glue ou la tâche Lambda. Le robot crée une table dans le champ spécifié AWS Glue Data Catalog. Pour plus d'informations, consultez la section [Démarrage de robots d'exploration à l'aide de déclencheurs](https://docs.aws.amazon.com/glue/latest/dg/trigger-job.html) dans la AWS Glue documentation. | AWS général | 
| Interrogez les attributs des métadonnées. | À l'aide d'Amazon Athena, utilisez le code SQL standard pour effectuer les AWS Glue Data Catalog requêtes nécessaires à votre cas d'utilisation. Vous pouvez joindre la table attributaire des métadonnées à d'autres bases de données et tables. Pour plus d'informations, consultez [Getting Started](https://docs.aws.amazon.com/athena/latest/ug/getting-started.html) dans la documentation Amazon Athena. | AWS général | 

## Ressources connexes
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-resources"></a>
+ [Documentation Amazon Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html)
+ [AWS Glue documentation](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html)
+ [AWS IoT SiteWise Référence d’API](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iotsitewise/index.html)
+ [AWS IoT SiteWise guide de l'utilisateur](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/what-is-sitewise.html)
  + [Premiers pas](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/getting-started.html)
  + [Modélisation des actifs industriels](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/industrial-asset-models.html)
  + [Définition des relations entre les modèles d'actifs (hiérarchies)](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html)
  + [Associer et dissocier des actifs](https://docs.aws.amazon.com/iot-sitewise/latest/userguide/add-associated-assets.html)
  + [Création de la AWS IoT SiteWise démo](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) (SDK pour la documentation Python)
+ [Documentation Lambda](https://docs.aws.amazon.com/lambda/latest/dg/getting-started-create-function.html)

## Informations supplémentaires
<a name="extract-and-query-aws-iot-sitewise-metadata-attributes-in-a-data-lake-additional"></a>

**Code**

L'exemple de code fourni est fourni à titre de référence, et vous pouvez personnaliser ce code selon vos besoins en fonction de votre cas d'utilisation.

```
# 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()
```

# Configuration et résolution des problèmes liés à AWS IoT Greengrass avec des appareils clients
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices"></a>

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

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

AWS IoT Greengrass est un environnement d'exécution périphérique et un service cloud open source permettant de créer, de déployer et de gérer des logiciels Internet des objets (IoT) sur des appareils périphériques. Les cas d'utilisation d'AWS IoT Greengrass incluent :
+ Maisons intelligentes dans lesquelles une passerelle AWS IoT Greengrass est utilisée comme hub pour la domotique
+ Des usines intelligentes dans lesquelles AWS IoT Greengrass peut faciliter l'ingestion et le traitement local des données depuis l'atelier

AWS IoT Greengrass peut agir en tant que point de terminaison de connexion MQTT sécurisé et authentifié pour d'autres appareils périphériques (également appelés *appareils clients*), qui autrement se connecteraient généralement directement à AWS IoT Core. Cette fonctionnalité est utile lorsque les appareils clients ne disposent pas d'un accès réseau direct au point de terminaison AWS IoT Core.

Vous pouvez configurer AWS IoT Greengrass pour une utilisation avec des appareils clients dans les cas d'utilisation suivants :
+ Pour que les appareils clients puissent envoyer des données à AWS IoT Greengrass
+ Pour qu'AWS IoT Greengrass transmette les données à AWS IoT Core
+ Pour tirer parti des fonctionnalités avancées du moteur de règles AWS IoT Core

Ces fonctionnalités nécessitent l'installation et la configuration des composants suivants sur l'appareil AWS IoT Greengrass :
+ courtier MQTT
+ Pont MQTT
+ Authentification de l'appareil client
+ Détecteur IP

En outre, les messages publiés depuis les appareils clients doivent être au format JSON ou au format [Protocol Buffers (protobuf](https://protobuf.dev/)).

Ce modèle décrit comment installer et configurer ces composants requis, et fournit des conseils de dépannage et les meilleures pratiques.

## Conditions préalables et limitations
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-prereqs"></a>

**Conditions préalables**
+ Un compte AWS actif
+ [Interface de ligne de commande AWS (AWS CLI) version 2](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ Deux appareils clients exécutant Python 3.7 ou version ultérieure
+ [Un appareil principal exécutant Java Runtime Environment (JRE) version 8 ou ultérieure, et [Amazon Corretto 11 ou OpenJDK 11](https://aws.amazon.com/corretto/)](https://openjdk.java.net/)

**Limites**
+ Vous devez choisir une région AWS dans laquelle AWS IoT Core est disponible. Pour consulter la liste actuelle des régions pour AWS IoT Core, consultez la section [Services AWS par région](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).
+ Le périphérique principal doit disposer d'au moins 172 Mo de RAM et 512 Mo d'espace disque.

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

Le schéma suivant montre l'architecture de la solution pour ce modèle.

![\[Architecture de solution pour configurer AWS IoT Greengrass avec des appareils clients\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/0656c5ae-d979-4cf7-be92-a46fa81cab0d.png)


L'architecture inclut :
+ Deux appareils clients. Chaque appareil contient une clé privée, un certificat de périphérique et un certificat d'autorité de certification (CA) racine. Le SDK pour appareils AWS IoT, qui contient un client MQTT, est également installé sur chaque appareil client.
+ Un appareil principal sur lequel AWS IoT Greengrass a été déployé avec les composants suivants :
  + courtier MQTT
  + Pont MQTT
  + Authentification de l'appareil client
  + Détecteur IP

Cette architecture prend en charge les scénarios suivants :
+ Les appareils clients peuvent utiliser leur client MQTT pour communiquer entre eux via le broker MQTT du périphérique principal.
+ Les appareils clients peuvent également communiquer avec AWS IoT Core dans le cloud via le broker MQTT de l'appareil principal et le pont MQTT.
+ AWS IoT Core dans le cloud peut envoyer des messages aux appareils clients via le client de test MQTT, le pont MQTT et le courtier MQTT de l'appareil principal.

Pour plus d'informations sur les communications entre les appareils clients et le périphérique principal, consultez la section [Informations supplémentaires](#set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional).

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

**Services AWS**
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) est un environnement d'exécution périphérique et un service cloud open source pour l'Internet des objets (IoT) qui vous aide à créer, déployer et gérer des applications IoT sur vos appareils.
+ [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) fournit une communication bidirectionnelle sécurisée permettant aux appareils connectés à Internet de se connecter au cloud AWS.
+ Le [SDK pour appareils AWS IoT](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) est un kit de développement logiciel qui comprend des bibliothèques open source, des guides de développement avec des exemples et des guides de portage afin que vous puissiez créer des produits ou des solutions IoT innovants sur les plateformes matérielles de votre choix.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) vous aide à gérer en toute sécurité l'accès à vos ressources AWS en contrôlant qui est authentifié et autorisé à les utiliser.

## Bonnes pratiques
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-best-practices"></a>
+ La charge utile des messages provenant des appareils clients doit être au format JSON ou Protobuf afin de tirer parti des fonctionnalités avancées du moteur de règles AWS IoT Core, telles que la transformation et les actions conditionnelles.
+ Configurez le pont MQTT pour autoriser la communication bidirectionnelle.
+ Configurez et déployez le composant de détection IP dans AWS IoT Greengrass pour vous assurer que les adresses IP de l'appareil principal sont incluses dans le champ du nom alternatif du sujet (SAN) du certificat de courtier MQTT.

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

### Configuration de l'appareil principal
<a name="set-up-the-core-device"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Configurez AWS IoT Greengrass sur votre appareil principal. | Installez le logiciel AWS IoT Greengrass Core en suivant les instructions du guide du [développeur](https://docs.aws.amazon.com/greengrass/v2/developerguide/install-greengrass-core-v2.html). | AWS IoT Greengrass | 
| Vérifiez l'état de votre installation. | Utilisez la commande suivante pour vérifier l'état du service AWS IoT Greengrass sur votre appareil principal :<pre>sudo systemctl status greengrass.service</pre>Le résultat attendu de la commande est le suivant :<pre>Launched Nucleus successfully</pre> | AWS général | 
| Configurez une politique IAM et associez-la au rôle de service Greengrass. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS général | 
| Configurez et déployez les composants requis dans le dispositif principal AWS IoT Greengrass. | Configurez et déployez les composants suivants :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS IoT Greengrass | 
| Vérifiez que le pont MQTT autorise la communication bidirectionnelle. | Pour relayer des messages MQTT entre les appareils clients et AWS IoT Core, configurez et déployez le composant du pont MQTT et spécifiez les sujets à relayer. Voici un exemple :<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 | 
| Vérifiez que le composant d'authentification permet aux appareils clients de se connecter et de publier des sujets ou de s'y abonner.  | La `aws.greengrass.clientdevices.Auth` configuration suivante permet à tous les appareils clients de se connecter, de publier des messages et de s'abonner à toutes les rubriques.<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 | 

### Configuration des appareils clients
<a name="set-up-client-devices"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Installez le SDK pour appareils AWS IoT. | Installez le SDK pour appareils AWS IoT sur les appareils clients. Pour obtenir la liste complète des langues prises en charge et des langues associées SDKs, consultez la [documentation AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html).Par exemple, le SDK pour appareils AWS IoT pour Python [se trouve](https://github.com/aws/aws-iot-device-sdk-python-v2) sur. GitHub Pour installer ce SDK :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html)Vous pouvez également installer le SDK à partir du référentiel source :<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> | AWS IoT général | 
| Créez quelque chose. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS IoT Core | 
| Téléchargez le certificat CA depuis l'appareil principal de Greengrass. | Si vous vous attendez à ce que le périphérique principal de Greengrass fonctionne dans des environnements hors ligne, vous devez mettre le certificat de base de CA de Greengrass à la disposition de l'appareil client afin qu'il puisse vérifier le certificat du courtier MQTT (qui est émis par l'autorité de certification principale de Greengrass). Il est donc important d'obtenir une copie de ce certificat. Utilisez l'une des méthodes suivantes pour télécharger le certificat CA :[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS général | 
| Copiez les informations d'identification sur les appareils clients. | Copiez le certificat CA principal de Greengrass, le certificat de l'appareil et la clé privée dans les appareils clients. | AWS général | 
| Associez les appareils clients au périphérique principal. | Associez les appareils clients à un périphérique principal afin qu'ils puissent découvrir le périphérique principal. Les appareils clients peuvent ensuite utiliser l'[API de découverte Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-discover-api.html) pour récupérer les informations de connectivité et les certificats pour leurs appareils principaux associés. Pour plus d'informations, consultez [Associer des appareils clients](https://docs.aws.amazon.com/greengrass/v2/developerguide/associate-client-devices.html) dans la documentation AWS IoT Greengrass.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html)Les appareils clients que vous avez associés peuvent désormais utiliser l'API de découverte Greengrass pour découvrir cet appareil principal. | AWS IoT Greengrass | 

### Envoyer et recevoir des données
<a name="send-and-receive-data"></a>


| Sous-tâche | Description | Compétences requises | 
| --- | --- | --- | 
| Envoyez des données d'un appareil client à un autre appareil client. | Utilisez le client MQTT de votre appareil pour publier un message sur le `dt/client1/sensor` sujet. | AWS général | 
| Envoyez des données depuis l'appareil client vers AWS IoT Core. | Utilisez le client MQTT de votre appareil pour publier un message sur le `dt/client1/sensor` sujet.Dans le client de test MQTT, abonnez-vous au sujet sur lequel l'appareil envoie des messages ou abonnez-vous à **\$1** pour tous les sujets (voir [détails](https://docs.aws.amazon.com/iot/latest/developerguide/view-mqtt-messages.html)). | AWS général | 
| Envoyez des messages depuis AWS IoT Core aux appareils clients. | Sur la page du client de test MQTT, dans l'onglet **Publier dans un sujet**, dans le champ **Nom du sujet**, entrez le nom du sujet de votre message. Dans cet exemple, utilisez `cmd/client1` pour le sujet. | AWS général | 

## Résolution des problèmes
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-troubleshooting"></a>


| Problème | Solution | 
| --- | --- | 
| **Impossible de vérifier l'erreur du certificat du serveur** | Cette erreur se produit lorsque le client MQTT ne peut pas vérifier le certificat présenté par le courtier MQTT lors de la prise de contact TLS. La raison la plus courante est que le client MQTT ne possède pas le certificat CA. Suivez ces étapes pour vous assurer que le certificat CA est fourni au client MQTT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | 
| **Impossible de vérifier l'erreur du nom du serveur** | Cette erreur se produit lorsque le client MQTT ne parvient pas à vérifier qu'il se connecte au bon serveur. La raison la plus courante est que l'adresse IP de l'appareil Greengrass n'est pas répertoriée dans le champ SAN du certificat.Suivez les instructions de la solution précédente pour obtenir le certificat de courtier MQTT et vérifier que le champ SAN contient l'adresse IP de l'appareil AWS IoT Greengrass, comme expliqué dans [la section Informations supplémentaires](#set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional). Si ce n'est pas le cas, vérifiez que le composant du détecteur IP est correctement installé et redémarrez le périphérique principal. | 
| **Impossible de vérifier le nom du serveur uniquement lors de la connexion à partir d'un appareil client intégré** | Mbed TLS, qui est une bibliothèque TLS populaire utilisée dans les appareils embarqués, prend actuellement en charge la vérification du nom DNS uniquement dans le champ SAN du certificat, comme indiqué dans le code de la bibliothèque Mbed TLS. Comme le périphérique principal ne possède pas son propre nom de domaine et dépend de l'adresse IP, les clients TLS qui utilisent Mbed TLS échoueront à la vérification du nom du serveur lors de la prise de contact TLS, ce qui provoquera un échec de connexion. Nous vous recommandons d'ajouter la vérification de l'adresse IP du SAN à votre bibliothèque TLS Mbed via la fonction [x509\$1crt\$1check\$1san](https://github.com/Mbed-TLS/mbedtls/blob/6a327a5fdc2786cb50b4dbe5e3a75884a1f8435a/library/x509_crt.c#L2548). | 

## Ressources connexes
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-resources"></a>
+ [Documentation AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)
+ [Documentation de base d'AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html)
+ [Composant du broker MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)
+ [composant de pont MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-bridge-component.html)
+ [Composant d'authentification de l'appareil client](https://docs.aws.amazon.com/greengrass/v2/developerguide/client-device-auth-component.html)
+ [composant du détecteur IP](https://docs.aws.amazon.com/greengrass/v2/developerguide/ip-detector-component.html)
+ [Kits de développement logiciel pour appareils AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html)
+ [Implémentation d'appareils clients locaux avec AWS IoT Greengrass](https://aws.amazon.com/blogs/iot/implementing-local-client-devices-with-aws-iot-greengrass/) (article de blog AWS)
+ [RFC 5280 — Certificat d'infrastructure à clé publique Internet X.509 et profil de liste de révocation de certificats (CRL)](https://www.rfc-editor.org/rfc/rfc5280)

## Informations supplémentaires
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional"></a>

Cette section fournit des informations supplémentaires sur les communications entre les appareils clients et le périphérique principal.

Le broker MQTT écoute une tentative de connexion client TLS sur le port 8883 du périphérique principal. L'illustration suivante montre un exemple de certificat de serveur du courtier MQTT.

![\[Exemple de certificat de serveur MQTT Broker\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/b2c324a1-60cd-4194-80e7-e5184662146a.png)


L'exemple de certificat affiche les détails suivants :
+ Le certificat est délivré par l'autorité de certification AWS IoT Greengrass Core, qui est locale et spécifique à l'appareil principal, c'est-à-dire qu'elle agit en tant qu'autorité de certification locale.
+ Ce certificat est automatiquement modifié chaque semaine par le composant d'authentification du client, comme indiqué dans l'illustration suivante. Vous pouvez définir cet intervalle dans la configuration du composant d'authentification du client.

![\[Rotation du certificat de serveur du courtier MQTT\]](http://docs.aws.amazon.com/fr_fr/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/65bcdc5c-a71c-4f52-adcd-21910fabfc2a.png)

+ Le nom alternatif du sujet (SAN) joue un rôle essentiel dans la vérification du nom du serveur côté client TLS. Cela permet au client TLS de s'assurer qu'il se connecte au bon serveur et d'éviter les man-in-the-middle attaques lors de la configuration de la session TLS. Dans l'exemple de certificat, le champ SAN indique que ce serveur écoute sur localhost (le socket de domaine Unix local) et que l'interface réseau possède l'adresse IP 192.168.1.12.

Le client TLS utilise le champ SAN du certificat pour vérifier qu'il se connecte à un serveur légitime lors de la vérification du serveur. En revanche, lors d'une prise de contact TLS classique entre un serveur HTTP et un navigateur, le nom de domaine figurant dans le champ nom commun (CN) ou dans le champ SAN est utilisé pour vérifier le domaine auquel le navigateur se connecte réellement pendant le processus de vérification du serveur. Si le périphérique principal n'a pas de nom de domaine, l'adresse IP incluse dans le champ SAN a le même objectif. Pour plus d'informations, consultez la [section Nom alternatif du sujet](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.6) de la *RFC 5280 — Profil du certificat d'infrastructure à clé publique Internet X.509 et de la liste de révocation des certificats (*CRL).

Le composant détecteur d'adresses IP d'AWS IoT Greengrass garantit que les adresses IP correctes sont incluses dans le champ SAN du certificat.

Dans l'exemple, le certificat est signé par l'appareil AWS IoT Greengrass agissant en tant qu'autorité de certification locale. Le client TLS (client MQTT) n'est pas au courant de l'existence de cette autorité de certification. Nous devons donc fournir un certificat de certification semblable au suivant.

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


# Plus de modèles
<a name="iot-more-patterns-pattern-list"></a>

**Topics**
+ [Ingérez de manière rentable des données IoT directement dans Amazon S3 à l'aide d'AWS IoT Greengrass](cost-effectively-ingest-iot-data-directly-into-amazon-s3-using-aws-iot-greengrass.md)
+ [Déployez des systèmes agentic sur Amazon Bedrock avec le framework CrewAI en utilisant Terraform](deploy-agentic-systems-on-amazon-bedrock-with-the-crewai-framework.md)
+ [Déployez des applications conteneurisées lorsqu'elles AWS IoT Greengrass V2 s'exécutent en tant que conteneur Docker](deploy-containerized-applications-on-aws-iot-greengrass-version-2-running-as-a-docker-container.md)