

Avis de fin de support : le 7 octobre 2026, AWS le support de. AWS IoT Greengrass Version 1 Après le 7 octobre 2026, vous ne pourrez plus accéder aux AWS IoT Greengrass V1 ressources. Pour plus d'informations, rendez-vous sur [Migrer depuis AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Connecteur ML Feedback
<a name="ml-feedback-connector"></a>

**Avertissement**  <a name="connectors-extended-life-phase-warning"></a>
Ce connecteur est passé à la *phase de durée de vie prolongée* et AWS IoT Greengrass ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations aux fonctionnalités existantes, des correctifs de sécurité ou des corrections de bogues. Pour de plus amples informations, veuillez consulter [AWS IoT Greengrass Version 1 politique de maintenance](maintenance-policy.md).

Le connecteur ML Feedback facilite l'accès aux données de votre modèle d'apprentissage automatique (ML) pour le réentraînement et l'analyse des modèles. Le connecteur :
+ Télécharge les données d'entrée (échantillons) utilisées par votre modèle de machine learning vers Amazon S3. L'entrée du modèle peut être dans n'importe quel format, tel que des images, JSON ou audio. Une fois les échantillons chargés dans le cloud, vous pouvez les utiliser pour reformer le modèle afin d'améliorer l'exacitude et la précision de ses prédictions. Par exemple, vous pouvez utiliser [SageMaker AI Ground Truth](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html) pour étiqueter vos échantillons et [SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html) pour réentraîner le modèle.
+ Publie les résultats des prédictions à partir du modèle sous forme de messages MQTT. Cela vous permet de surveiller et d'analyser la qualité d'inférence de votre modèle en temps réel. Vous pouvez également stocker les résultats des prédictions et les utiliser pour analyser les tendances au fil du temps.
+ Publie des statistiques relatives aux téléchargements d'échantillons et d'échantillons de données sur Amazon CloudWatch.

Pour configurer ce connecteur, vous décrivez vos *configurations de commentaires* prises en charge au format JSON. Une configuration de feedback définit des propriétés telles que le compartiment Amazon S3 de destination, le type de contenu et la [stratégie d'échantillonnage](#ml-feedback-connector-sampling-strategies). (Une stratégie d'échantillonnage est utilisée pour déterminer les échantillons à charger.)

Vous pouvez utiliser le connecteur ML Feedback dans les scénarios suivants :
+ Avec des fonctions Lambda définies par l'utilisateur. Vos fonctions Lambda d'inférence locales utilisent le SDK Machine AWS IoT Greengrass Learning pour appeler ce connecteur et transmettre la configuration du feedback cible, l'entrée du modèle et la sortie du modèle (résultats de prédiction). Pour obtenir un exemple, consultez [Exemple d'utilisation](#ml-feedback-connector-usage).
+ Avec le [connecteur ML Image Classification](image-classification-connector.md) (v2). Pour utiliser ce connecteur avec le connecteur ML Image Classification, configurez le `MLFeedbackConnectorConfigId` paramètre du connecteur ML Image Classification.
+ Avec le [connecteur ML Object Detection](obj-detection-connector.md). Pour utiliser ce connecteur avec le connecteur ML Object Detection, configurez le `MLFeedbackConnectorConfigId` paramètre du connecteur ML Object Detection.

**ARN** : `arn:aws:greengrass:region::/connectors/MLFeedback/versions/1`

## Exigences
<a name="ml-feedback-connector-req"></a>

Ce connecteur possède les critères suivants :
+ AWS IoT Greengrass Core Software v1.9.3 ou version ultérieure.
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) version 3.7 ou 3.8 installé sur le périphérique principal et ajouté à la variable d'environnement PATH.
**Note**  <a name="use-runtime-py3.8"></a>
Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique entre le dossier d'installation par défaut de Python 3.7 et les fichiers binaires Python 3.8 installés.  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.
+ Un ou plusieurs compartiments Amazon S3. Le nombre de compartiments que vous utilisez dépend de votre stratégie d'échantillonnage.
+ Le [rôle de groupe Greengrass](group-role.md) est configuré pour autoriser l'`s3:PutObject`action sur les objets du compartiment Amazon S3 de destination, comme illustré dans l'exemple de politique IAM suivant.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": "s3:PutObject",
              "Resource": [
                  "arn:aws:s3:::bucket-name/*"
              ]
          }
      ]
  }
  ```

------

  La stratégie doit inclure tous les compartiments de destination en tant que ressources. Vous pouvez octroyer un accès précis ou conditionnel aux ressources (par exemple, en utilisant un schéma d'attribution de nom avec caractère générique \$1).

  <a name="set-up-group-role"></a>Pour l'exigence de rôle de groupe, vous devez configurer le rôle de manière à accorder les autorisations requises et à vous assurer que le rôle a été ajouté au groupe. Pour plus d’informations, consultez [Gestion du rôle de groupe Greengrass (console)](group-role.md#manage-group-role-console) ou [Gestion du rôle de groupe Greengrass (interface de ligne de commande)](group-role.md#manage-group-role-cli).
+ Le [connecteur CloudWatch Metrics](cloudwatch-metrics-connector.md) a été ajouté au groupe Greengrass et configuré. Cette opération est obligatoire uniquement si vous souhaitez utiliser la fonction de création de rapports de métriques.
+ AWS IoT Greengrass Le [SDK Machine Learning](lambda-functions.md#lambda-sdks-ml) v1.1.0 est requis pour interagir avec ce connecteur.

## Parameters
<a name="ml-feedback-connector-param"></a>

`FeedbackConfigurationMap`  
Ensemble d'une ou plusieurs configurations de feedback que le connecteur peut utiliser pour charger des échantillons sur Amazon S3. Une configuration de commentaire définit des paramètres tels que le compartiment de destination, le type de contenu et la [stratégie d'échantillonnage](#ml-feedback-connector-sampling-strategies). Lorsque ce connecteur est invoqué, la fonction ou le connecteur Lambda appelant spécifie une configuration de feedback cible.  
Nom affiché dans la AWS IoT console : **carte de configuration des commentaires**  
Nécessaire : `true`  
Type : chaîne JSON bien formée qui définit l'ensemble des configurations de feedback prises en charge. Pour obtenir un exemple, consultez [FeedbackConfigurationMap exemple](#ml-feedback-connector-feedbackconfigmap).    
  
L'ID d'un objet de configuration de commentaire présente les exigences suivantes.    
  
ID :  
+ Doit être unique parmi les objets de configuration.
+ Doit commencer par une lettre ou un chiffre. Les noms de compartiments peuvent contenir des lettres minuscules, des chiffres et des traits d'union.
+ Nombre maximal de caractères : 2 à 63.
Nécessaire : `true`  
Type : `string`  
Modèle valide : `^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`  
Exemples : `MyConfig0`, `config-a`, `12id`
Le corps d'un objet de configuration de commentaire contient les propriétés suivantes.    
`s3-bucket-name`  
Nom du compartiment Amazon S3 de destination.  
Le rôle de groupe doit autoriser l'action `s3:PutObject` sur tous les compartiments de destination. Pour de plus amples informations, veuillez consulter [Exigences](#ml-feedback-connector-req).
Nécessaire : `true`  
Type : `string`  
Modèle valide : `^[a-z0-9\.\-]{3,63}$`  
`content-type`  
Type de contenu des exemples à charger. Tout le contenu d'une configuration de commentaire individuelle doit être du même type.  
Nécessaire : `true`  
Type : `string`  
Exemples : `image/jpeg`, `application/json`, `audio/ogg`  
`s3-prefix`  
Préfixe de clé à utiliser pour les exemples chargés. Un préfixe est similaire à un nom de répertoire. Il vous permet de stocker des données similaires dans le même répertoire d'un compartiment. Pour plus d'informations, consultez la section [Clé d'objet et métadonnées](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.  
Nécessaire : `false`  
Type : `string`  
`file-ext`  
Extension de fichier à utiliser pour les exemples chargés. Doit être une extension de fichier valide pour le type de contenu.  
Nécessaire : `false`  
Type : `string`  
Exemples : `jpg`, `json`, `ogg`  
`sampling-strategy`  
[Stratégie d'échantillonnage](#ml-feedback-connector-sampling-strategies) à utiliser pour filtrer les exemples à charger. S'il n'est pas spécifié, le connecteur essaie de charger tous les exemples qu'il reçoit.  
Nécessaire : `false`  
Type : chaîne JSON bien formée qui contient les propriétés suivantes.    
`strategy-name`  
Nom de la stratégie d'échantillonnage.  
Nécessaire : `true`  
Type : `string`  
Valeurs valides : `RANDOM_SAMPLING`, `LEAST_CONFIDENCE`, `MARGIN` ou `ENTROPY`  
`rate`  
Taux de la stratégie d'échantillonnage [aléatoire](#ml-feedback-connector-sampling-strategies-random) .  
Obligatoire : `true` si `strategy-name` c'est le cas`RANDOM_SAMPLING`.  
Type : `number`  
Valeurs valides : `0.0 - 1.0`  
`threshold`  
Seuil de la stratégie d'échantillonnage [Least Confidence](#ml-feedback-connector-sampling-strategies-least-confidence), [Margin](#ml-feedback-connector-sampling-strategies-margin) ou [Entropy](#ml-feedback-connector-sampling-strategies-entropy) .  
Obligatoire : `true` si `strategy-name` c'est `LEAST_CONFIDENCE` le cas`MARGIN`, ou`ENTROPY`.  
Type : `number`  
Valeurs valides :  
+ `0.0 - 1.0` pour la stratégie `LEAST_CONFIDENCE` ou `MARGIN`.
+ `0.0 - no limit` pour la stratégie `ENTROPY`.

`RequestLimit`  
Nombre maximal de demandes que le connecteur peut traiter à la fois.  
Vous pouvez utiliser ce paramètre pour limiter la consommation de mémoire en limitant le nombre de demandes traitées par le connecteur en même temps. Les demandes qui dépassent cette limite sont ignorées.  
Nom affiché dans la AWS IoT console : **limite de demandes**  
Nécessaire : `false`  
Type : `string`  
Valeurs valides : `0 - 999`  
Modèle valide : `^$|^[0-9]{1,3}$`

### Exemple de création de connecteur (AWS CLI)
<a name="ml-feedback-connector-create"></a>

La commande CLI suivante crée un `ConnectorDefinition` avec une version initiale contenant le connecteur ML Feedback.

```
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{
    "Connectors": [
        {
            "Id": "MyMLFeedbackConnector",
            "ConnectorArn": "arn:aws:greengrass:region::/connectors/MLFeedback/versions/1",
            "Parameters": {
                "FeedbackConfigurationMap": "{  \"RandomSamplingConfiguration\": {  \"s3-bucket-name\": \"my-aws-bucket-random-sampling\",  \"content-type\": \"image/png\",  \"file-ext\": \"png\",  \"sampling-strategy\": {  \"strategy-name\": \"RANDOM_SAMPLING\",  \"rate\": 0.5  } },  \"LeastConfidenceConfiguration\": {  \"s3-bucket-name\": \"my-aws-bucket-least-confidence-sampling\",  \"content-type\": \"image/png\",  \"file-ext\": \"png\",  \"sampling-strategy\": {  \"strategy-name\": \"LEAST_CONFIDENCE\",  \"threshold\": 0.4  } } }", 
                "RequestLimit": "10"
            }
        }
    ]
}'
```

### FeedbackConfigurationMap exemple
<a name="ml-feedback-connector-feedbackconfigmap"></a>

Voici un exemple de valeur développé pour le paramètre `FeedbackConfigurationMap`. Cet exemple inclut plusieurs configurations de commentaires qui utilisent différentes stratégies d'échantillonnage.

```
{
    "ConfigID1": {
        "s3-bucket-name": "my-aws-bucket-random-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "RANDOM_SAMPLING",
            "rate": 0.5
        }
    },
    "ConfigID2": {
        "s3-bucket-name": "my-aws-bucket-margin-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "MARGIN",
            "threshold": 0.4
        }
    },
    "ConfigID3": {
        "s3-bucket-name": "my-aws-bucket-least-confidence-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "LEAST_CONFIDENCE",
            "threshold": 0.4
        }
    },
    "ConfigID4": {
        "s3-bucket-name": "my-aws-bucket-entropy-sampling",
        "content-type": "image/png",
        "file-ext": "png",
        "sampling-strategy": {
            "strategy-name": "ENTROPY",
            "threshold": 2
        }
    },
    "ConfigID5": {
        "s3-bucket-name": "my-aws-bucket-no-sampling",
        "s3-prefix": "DeviceA",
        "content-type": "application/json"
    }
}
```

### Stratégies d'échantillonnage
<a name="ml-feedback-connector-sampling-strategies"></a>

Le connecteur prend en charge quatre stratégies d'échantillonnage qui déterminent s'il convient de charger les échantillons transmis au connecteur. Les exemples sont des instances de données discrètes qu'un modèle utilise pour une prédiction. Vous pouvez utiliser des stratégies d'échantillonnage pour filtrer les échantillons les plus susceptibles d'améliorer la précision du modèle.

`RANDOM_SAMPLING`  <a name="ml-feedback-connector-sampling-strategies-random"></a>
Charge de façon aléatoire les exemples en fonction du débit fourni. Il charge un exemple si une valeur générée de façon aléatoire est inférieure à la fréquence. Plus le taux est élevé, plus le nombre d'échantillons chargés est élevé.  
Cette stratégie ignore toute prédiction de modèle fournie.

`LEAST_CONFIDENCE`  <a name="ml-feedback-connector-sampling-strategies-least-confidence"></a>
Charge des exemples dont la probabilité de fiabilité maximale est inférieure au seuil fourni.    
Exemple de scénario  
Seuil : `.6`  
Prédiction du modèle : `[.2, .2, .4, .2]`  
Probabilité de fiabilité maximale : `.4`  
Résultat :  
Utilisez l'exemple, car la probabilité de fiabilité maximale (`.4`) <= seuil (`.6`).

`MARGIN`  <a name="ml-feedback-connector-sampling-strategies-margin"></a>
Charge des exemples si la marge entre les deux principales probabilités de confiance se situe dans le seuil fourni. La marge correspond à la différence entre les deux principales probabilités.    
Exemple de scénario  
Seuil : `.02`  
Prédiction du modèle : `[.3, .35, .34, .01]`  
Les deux principales probabilités de confiance : `[.35, .34]`  
Marge : `.01` (`.35 - .34`)  
Résultat :  
Utilisez l'exemple car marge (`.01`) <= seuil (`.02`).

`ENTROPY`  <a name="ml-feedback-connector-sampling-strategies-entropy"></a>
Charge des exemples dont l'entropie est supérieure au seuil fourni. Utilise l'entropie normalisée de la prédiction du modèle.    
Exemple de scénario  
Seuil : `0.75`  
Prédiction du modèle : `[.5, .25, .25]`  
Entropie pour la prédiction : `1.03972`  
Résultat :  
Utilisez sample car entropy (`1.03972`) > threshold (`0.75`).

## Données d’entrée
<a name="ml-feedback-connector-data-input"></a>

Les fonctions Lambda définies par l'utilisateur utilisent `publish` la fonction `feedback` du client dans le SDK Machine AWS IoT Greengrass Learning pour appeler le connecteur. Pour obtenir un exemple, consultez [Exemple d'utilisation](#ml-feedback-connector-usage).

**Note**  
Ce connecteur n'accepte pas les messages MQTT comme données d'entrée.

La fonction `publish` accepte les arguments suivants :

ConfigId  
ID de la configuration des commentaires cibles. Cela doit correspondre à l'ID d'une configuration de feedback définie dans le [FeedbackConfigurationMap](#ml-feedback-connector-param)paramètre du connecteur ML Feedback.  
Obligatoire : vrai  
Type : chaîne

ModelInput  
Données d'entrée qui ont été transmises à un modèle pour l'inférence. Ces données d'entrée sont chargées à l'aide de la configuration cible, sauf si elles sont filtrées en fonction de la stratégie d'échantillonnage.  
Obligatoire : vrai  
Type : octets

ModelPrediction  
La prédiction est le résultat du modèle. Le type de résultat peut être un dictionnaire ou une liste. Par exemple, les résultats de prédiction du connecteur ML Image Classification sont une liste de probabilités (telles que`[0.25, 0.60, 0.15]`). Ces données sont publiées dans la rubrique `/feedback/message/prediction`.  
Obligatoire : vrai  
Type : dictionnaire ou liste de `float` valeurs

Métadonnées  
Métadonnées spécifiques à l'application définies par le client qui sont attachées à l'exemple chargé et publiées dans la rubrique `/feedback/message/prediction`. Le connecteur insère également une clé `publish-ts` avec une valeur d'horodatage dans les métadonnées.  
Obligatoire : faux  
Type : dictionnaire  
Exemple : `{"some-key": "some value"}`

## Données de sortie
<a name="ml-feedback-connector-data-output"></a>

Ce connecteur publie les données dans trois rubriques MQTT :
+ Informations sur le statut à partir du connecteur dans la rubrique `feedback/message/status`.
+ Résultats des prédictions sur la rubrique `feedback/message/prediction`.
+ Des métriques destinées CloudWatch à `cloudwatch/metric/put` ce sujet.

<a name="connectors-input-output-subscriptions"></a>Vous devez configurer les abonnements pour autoriser le connecteur à communiquer sur les rubriques MQTT. Pour de plus amples informations, veuillez consulter [Entrées et sorties](connectors.md#connectors-inputs-outputs).

**Filtre de rubriques :** `feedback/message/status`  
Utilisez cette rubrique pour surveiller le statut des exemples de chargement et d'exemples supprimés. Le connecteur publie dans cette rubrique chaque fois qu'il reçoit une demande.     
**Exemple de sortie : l'exemple de chargement a réussi**  

```
{
  "response": {
    "status": "success",
    "s3_response": {
      "ResponseMetadata": {
        "HostId": "IOWQ4fDEXAMPLEQM+ey7N9WgVhSnQ6JEXAMPLEZb7hSQDASK+Jd1vEXAMPLEa3Km",
        "RetryAttempts": 1,
        "HTTPStatusCode": 200,
        "RequestId": "79104EXAMPLEB723",
        "HTTPHeaders": {
          "content-length": "0",
          "x-amz-id-2": "lbbqaDVFOhMlyU3gRvAX1ZIdg8P0WkGkCSSFsYFvSwLZk3j7QZhG5EXAMPLEdd4/pEXAMPLEUqU=",
          "server": "AmazonS3",
          "x-amz-expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"",
          "x-amz-request-id": "79104EXAMPLEB723",
          "etag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"",
          "date": "Thu, 11 Jul 2019 00:12:50 GMT",
          "x-amz-server-side-encryption": "AES256"
        }
      },
      "bucket": "greengrass-feedback-connector-data-us-west-2",
      "ETag": "\"b9c4f172e64458a5fd674EXAMPLE5628\"",
      "Expiration": "expiry-date=\"Wed, 17 Jul 2019 00:00:00 GMT\", rule-id=\"OGZjYWY3OTgtYWI2Zi00ZDllLWE4YmQtNzMyYzEXAMPLEoUw\"",
      "key": "s3-key-prefix/UUID.file_ext",
      "ServerSideEncryption": "AES256"
    }
  },
  "id": "5aaa913f-97a3-48ac-5907-18cd96b89eeb"
}
```
Le connecteur ajoute les `key` champs `bucket` et à la réponse d'Amazon S3. Pour plus d'informations sur la réponse Amazon S3, consultez [l'objet PUT](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html#RESTObjectPUT-responses) dans le manuel *Amazon Simple Storage Service API Reference*.  
**Exemple de sortie : Exemple supprimé en raison de la stratégie d'échantillonnage**  

```
{
  "response": {
    "status": "sample_dropped_by_strategy"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**Exemple de sortie : Échec du chargement de l'exemple**  
Un statut d'échec inclut le message d'erreur comme valeur `error_message` et la classe d'exception comme valeur `error`.  

```
{
  "response": {
    "status": "fail",
    "error_message": "[RequestId: 4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3] Failed to upload model input data due to exception. Model prediction will not be published. Exception type: NoSuchBucket, error: An error occurred (NoSuchBucket) when calling the PutObject operation: The specified bucket does not exist",
    "error": "NoSuchBucket"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**Exemple de sortie : demande limitée en raison de la limite de demande**  

```
{
  "response": {
    "status": "fail",
    "error_message": "Request limit has been reached (max request: 10 ). Dropping request.",
    "error": "Queue.Full"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```

**Filtre de rubriques :** `feedback/message/prediction`  
Utilisez cette rubrique pour écouter les prédictions basées sur des exemples de données chargés. Cela vous permet d'analyser les performances de votre modèle en temps réel. Les prédictions du modèle sont publiées dans cette rubrique uniquement si les données sont correctement chargées sur Amazon S3. Les messages publiés dans cette rubrique sont au format JSON. Ils contiennent le lien vers l'objet de données chargé, la prédiction du modèle et les métadonnées incluses dans la demande.  
Vous pouvez également stocker les résultats des prédictions et les utiliser pour signaler et analyser les tendances au fil du temps. Les tendances peuvent fournir des informations précieuses. Par exemple, une tendance de *précision décroissante au fil du temps* peut vous aider à décider si le modèle doit être reformé.    
**Exemple de sortie**  

```
{
  "source-ref": "s3://greengrass-feedback-connector-data-us-west-2/s3-key-prefix/UUID.file_ext",
  "model-prediction": [
    0.5,
    0.2,
    0.2,
    0.1
  ],
  "config-id": "ConfigID2",
  "metadata": {
    "publish-ts": "2019-07-11 00:12:48.816752"
  }
}
```
Vous pouvez configurer le [connecteur IoT Analytics](iot-analytics-connector.md) pour vous abonner à cette rubrique et envoyer les informations à des AWS IoT Analytics fins d'analyse ultérieure ou historique.

**Filtre de rubriques :** `cloudwatch/metric/put`  
Il s'agit de la rubrique de sortie utilisée pour publier des métriques dans CloudWatch. Cette fonctionnalité nécessite l'installation et la configuration du [connecteur CloudWatch Metrics](cloudwatch-metrics-connector.md).  
Les métriques incluent :  
+ Nombre d'échantillons chargés.
+ Taille des échantillons chargés.
+ Le nombre d'erreurs liées aux téléchargements vers Amazon S3.
+ Nombre d'échantillons abandonnés en fonction de la stratégie d'échantillonnage.
+ Nombre de demandes limitées.  
**Exemple de sortie : taille de l'échantillon de données (publié avant le chargement réel)**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 47592,
      "unit": "Bytes",
      "metricName": "SampleSize"
    }
  }
}
```  
**Exemple de sortie : l'exemple de chargement a réussi**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadSuccess"
    }
  }
}
```  
**Exemple de sortie : exemple de chargement réussi et résultat de prédiction publié**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleAndPredictionPublished"
    }
  }
}
```  
**Exemple de sortie : Échec du chargement de l'exemple**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadFailure"
    }
  }
}
```  
**Exemple de sortie : Exemple supprimé en raison de la stratégie d'échantillonnage**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleNotUsed"
    }
  }
}
```  
**Exemple de sortie : demande limitée en raison de la limite de demande**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "ErrorRequestThrottled"
    }
  }
}
```

## Exemple d'utilisation
<a name="ml-feedback-connector-usage"></a>

L'exemple suivant est une fonction Lambda définie par l'utilisateur qui utilise le SDK [Machine AWS IoT Greengrass Learning](lambda-functions.md#lambda-sdks-ml) pour envoyer des données au connecteur ML Feedback.

**Note**  
Vous pouvez télécharger le SDK AWS IoT Greengrass Machine Learning depuis la [page des AWS IoT Greengrass téléchargements](what-is-gg.md#gg-ml-sdk-download).

```
import json
import logging
import os
import sys
import greengrass_machine_learning_sdk as ml

client = ml.client('feedback')

try:
    feedback_config_id = os.environ["FEEDBACK_CONFIG_ID"]
    model_input_data_dir = os.environ["MODEL_INPUT_DIR"]
    model_prediction_str = os.environ["MODEL_PREDICTIONS"]
    model_prediction = json.loads(model_prediction_str)
except Exception as e:
    logging.info("Failed to open environment variables. Failed with exception:{}".format(e))
    sys.exit(1)

try:
    with open(os.path.join(model_input_data_dir, os.listdir(model_input_data_dir)[0]), 'rb') as f:
        content = f.read()
except Exception as e:
    logging.info("Failed to open model input directory. Failed with exception:{}".format(e))
    sys.exit(1)    

def invoke_feedback_connector():
    logging.info("Invoking feedback connector.")
    try:
        client.publish(
            ConfigId=feedback_config_id,
            ModelInput=content,
            ModelPrediction=model_prediction
        )
    except Exception as e:
        logging.info("Exception raised when invoking feedback connector:{}".format(e))
        sys.exit(1)    

invoke_feedback_connector()

def function_handler(event, context):
    return
```

## Licences
<a name="ml-feedback-connector-license"></a>



Le connecteur ML Feedback inclut les logiciels/licences tiers suivants :<a name="boto-3-licenses"></a>
+ [AWS SDK pour Python (Boto3)](https://pypi.org/project/boto3/)/Licence Apache 2.0
+ [botocore](https://pypi.org/project/botocore/)/Licence Apache 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/Licence PSF
+ [docutils](https://pypi.org/project/docutils/)/Licence BSD, licence GPL (General Public License) GNU, licence Python Software Foundation, domaine public
+ [jmespath](https://pypi.org/project/jmespath/)/Licence MIT
+ [s3transfer](https://pypi.org/project/s3transfer/)/Licence Apache 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/Licence MIT
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

Ce connecteur est publié dans le cadre du contrat de [licence logicielle Greengrass Core](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf).

## Consultez aussi
<a name="ml-feedback-connector-see-also"></a>
+ [Intégrer à des services et protocoles à l'aide de connecteurs Greengrass](connectors.md)
+ [Mise en route avec les connecteurs Greengrass (console)](connectors-console.md)
+ [Démarrage avec les connecteurs Greengrass (CLI)](connectors-cli.md)