

サポート終了通知: 2026 年 10 月 7 日、 AWS はサポートを終了します AWS IoT Greengrass Version 1。2026 年 10 月 7 日以降、 AWS IoT Greengrass V1 リソースにアクセスできなくなります。詳細については、[「 からの移行 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)」を参照してください。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ML フィードバックコネクタ
<a name="ml-feedback-connector"></a>

**警告**  <a name="connectors-extended-life-phase-warning"></a>
このコネクタは延長ライフサイクルフェーズに移行しており、 AWS IoT Greengrass では、機能、既存機能の拡張、セキュリティパッチ、バグ修正を提供するアップデートはリリースされません。詳細については、「[AWS IoT Greengrass Version 1 メンテナンスポリシー](maintenance-policy.md)」を参照してください。

この ML フィードバックコネクタにより、モデルの再トレーニングと分析のための機械学習 (ML) モデルデータへのアクセスが容易になります。コネクタ:
+ ML モデルで使用される入力データ (サンプル) を Amazon S3 にアップロードします。モデル入力は、イメージ、JSON、オーディオなど、任意の形式にすることができます。サンプルをクラウドにアップロードした後、そのサンプルを使用してモデルを再トレーニングし、予測の正確性と精度を向上させることができます。たとえば、[SageMaker AI Ground Truth ](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html)を使用してサンプルにラベルを付け、[SageMaker AI ](https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html)を使用してモデルを再トレーニングできます。
+ モデルからの予測結果を MQTT メッセージとして発行します。これにより、モデルの推論品質をリアルタイムでモニタリングおよび分析できます。また、予測結果を保存し、それを使用して経時的な傾向を分析することもできます。
+ サンプルアップロードとサンプルデータに関するメトリクスを Amazon CloudWatch に発行します。

このコネクタを設定するには、サポートされている*フィードバック設定*を JSON 形式で記述します。フィードバック設定では、送信先 Amazon S3 バケット、コンテンツタイプ、[サンプリング戦略](#ml-feedback-connector-sampling-strategies)などのプロパティを定義します。(サンプリング戦略は、アップロードするサンプルを決定するために使用されます)。

ML フィードバックコネクタは、次のシナリオで使用できます。
+ ユーザー定義関数と共に使用する。ローカル推論 Lambda 関数は、 AWS IoT Greengrass Machine Learning SDK を使用してこのコネクタを呼び出し、ターゲットフィードバック設定、モデル入力、モデル出力 (予測結果) を渡します。例については、[使用例](#ml-feedback-connector-usage)を参照してください。
+ [ML イメージ分類コネクタ](image-classification-connector.md) (v2) と共に使用する。このコネクタを ML イメージ分類コネクタで使用するには、ML イメージ分類コネクタの `MLFeedbackConnectorConfigId` パラメータを設定します。
+ [ML オブジェクト検出コネクタ](obj-detection-connector.md)と共に使用する。このコネクタを ML オブジェクト検出コネクタで使用するには、ML オブジェクト検出コネクタの `MLFeedbackConnectorConfigId` パラメータを設定します。

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

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

このコネクタには以下の要件があります。
+ AWS IoT Greengrass Core ソフトウェア v1.9.3 以降。
+ <a name="conn-req-py-3.7-and-3.8"></a>[Python](https://www.python.org/) バージョン 3.7 または 3.8 が Core デバイスにインストールされ、PATH 環境変数に追加されている。
**注記**  <a name="use-runtime-py3.8"></a>
Python 3.8 を使用するには、次のコマンドを実行して、Python 3.7 のデフォルトのインストールフォルダからインストール済みの Python 3.8 バイナリへのシンボリックリンクを作成します。  

  ```
  sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7
  ```
これにより、 AWS IoT Greengrassの Python 要件を満たすようにデバイスが設定されます。
+ 1 つ以上の Amazon S3 バケット。使用するバケットの数は、サンプリング戦略によって異なります。
+ 以下の IAM ポリシーの例に示すように、送信先 Amazon S3 バケットのオブジェクトに対して `s3:PutObject` アクションを許可するために [Greengrass グループロール](group-role.md)が設定されている。

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

****  

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

------

  ポリシーには、すべての送信先バケットをリソースとして含める必要があります。リソースにきめ細かいアクセス権限または条件付きアクセス権限を付与できます (例えば、ワイルドカード \$1 命名スキームを使用)。

  <a name="set-up-group-role"></a>グループロール要件では、必要なアクセス許可を付与するようにロールを設定し、ロールがグループに追加されていることを確認する必要があります。詳細については、[Greengrass グループロールの管理 (コンソール)](group-role.md#manage-group-role-console)または[Greengrass グループロールの管理 (CLI)](group-role.md#manage-group-role-cli)を参照してください。
+ [CloudWatch Metrics コネクタ](cloudwatch-metrics-connector.md)が Greengrass グループに追加され、設定されている。これは、メトリクスレポート機能を使用する場合にのみ必要です。
+ このコネクタを操作するには、[AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) v1.1.0 が必要です。

## パラメータ
<a name="ml-feedback-connector-param"></a>

`FeedbackConfigurationMap`  
コネクタが Amazon S3 にサンプルをアップロードするために使用できる 1 つ以上のフィードバック設定のセット。フィードバック設定は、送信先バケット、コンテンツタイプ、 [サンプリング戦略](#ml-feedback-connector-sampling-strategies)などのパラメータを定義します。このコネクタが呼び出されると、呼び出し元の Lambda 関数またはコネクタはターゲットフィードバック設定を指定します。  
 AWS IoT コンソールの表示名: **フィードバック設定マップ**  
必須: `true`  
タイプ: サポートされているフィードバック設定のセットを定義する正しい形式の JSON 文字列。例については、[FeedbackConfigurationMap の例](#ml-feedback-connector-feedbackconfigmap)を参照してください。    
  
フィードバック設定オブジェクトの ID には、次の要件があります。    
  
ID:  
+ 設定オブジェクト間で一意である必要があります。
+ 文字または数字で始まる必要があります。小文字と大文字の英文字、数字、およびハイフン (-) を含めることができます。
+ 2～63 文字の長さにする必要があります。
必須: `true`  
型: `string`  
有効なパターン: `^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$`  
例: `MyConfig0`、`config-a`、`12id`
フィードバック設定オブジェクトの本文には、次のプロパティが含まれます。    
`s3-bucket-name`  
宛先 Amazon S3 バケットの名前。  
グループロールは、すべての送信先バケットで `s3:PutObject` アクションを許可する必要があります。詳細については、「[要件](#ml-feedback-connector-req)」を参照してください。
必須: `true`  
型: `string`  
有効なパターン: `^[a-z0-9\.\-]{3,63}$`  
`content-type`  
アップロードするサンプルのコンテンツタイプ。個々のフィードバック設定のすべてのコンテンツは、同じタイプである必要があります。  
必須: `true`  
型: `string`  
例: `image/jpeg`、`application/json`、`audio/ogg`  
`s3-prefix`  
アップロードされたサンプルに使用するキープレフィックス。プレフィックスはディレクトリ名に似ています。これにより、バケット内の同じディレクトリに類似したデータを保存できます。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「[オブジェクトメタデータの使用](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html)」を参照してください。  
必須: `false`  
型: `string`  
`file-ext`  
アップロードされたサンプルに使用するファイル拡張子。コンテンツタイプの有効なファイル拡張子である必要があります。  
必須: `false`  
型: `string`  
例: `jpg`、`json`、`ogg`  
`sampling-strategy`  
アップロードするサンプルをフィルタリングするために使用する[サンプリング戦略](#ml-feedback-connector-sampling-strategies)。省略した場合、コネクタは受け取ったすべてのサンプルのアップロードを試みます。  
必須: `false`  
タイプ: 次のプロパティを含む正しい形式の JSON 文字列。    
`strategy-name`  
サンプリング戦略の名前。  
必須: `true`  
型: `string`  
有効な値: `RANDOM_SAMPLING`、`LEAST_CONFIDENCE`、`MARGIN`、または `ENTROPY`  
`rate`  
[Random](#ml-feedback-connector-sampling-strategies-random) サンプリング戦略のレート。  
必須: `strategy-name` が `RANDOM_SAMPLING` の場合、`true`。  
型: `number`  
有効な値: `0.0 - 1.0`  
`threshold`  
[Least Confidence](#ml-feedback-connector-sampling-strategies-least-confidence)、[Margin](#ml-feedback-connector-sampling-strategies-margin)、または [Entropy](#ml-feedback-connector-sampling-strategies-entropy) サンプリング戦略のしきい値。  
必須: `strategy-name` が `LEAST_CONFIDENCE`、`MARGIN`、または `ENTROPY` の場合、`true`。  
型: `number`  
有効な値:  
+ `LEAST_CONFIDENCE` または `MARGIN` 戦略の場合は `0.0 - 1.0`。
+ `ENTROPY` 戦略の場合は `0.0 - no limit`。

`RequestLimit`  
コネクタが一度に処理できるリクエストの最大数。  
このパラメータを使用すると、コネクタが同時に処理するリクエストの合計数を限定して、メモリ消費量を制限することができます。この制限を超えるリクエストは無視されます。  
 AWS IoT コンソールの表示名: **リクエスト制限**  
必須: `false`  
型: `string`  
有効な値: `0 - 999`  
有効なパターン: `^$|^[0-9]{1,3}$`

### サンプルコネクタを作成する (AWS CLI)
<a name="ml-feedback-connector-create"></a>

以下の CLI コマンドは、ML フィードバックコネクタを含む初期バージョンで `ConnectorDefinition` を作成します。

```
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 の例
<a name="ml-feedback-connector-feedbackconfigmap"></a>

以下に示しているのは、`FeedbackConfigurationMap` パラメータ値の拡張例です。この例には、さまざまなサンプリング戦略を使用するいくつかのフィードバック設定が含まれています。

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

### サンプリング戦略
<a name="ml-feedback-connector-sampling-strategies"></a>

コネクタは、コネクタに渡されたサンプルをアップロードするかどうかを決定する 4 つのサンプリング戦略をサポートします。サンプルは、モデルが予測に使用するデータの個別のインスタンスです。サンプリング戦略を使用して、モデルの精度を向上させる可能性が最も高いサンプルをフィルタリングできます。

`RANDOM_SAMPLING`  <a name="ml-feedback-connector-sampling-strategies-random"></a>
指定されたレートに基づいてサンプルをランダムにアップロードします。ランダムに生成された値がレートより小さい場合、サンプルをアップロードします。レートが高いほど、アップロードされるサンプルが増えます。  
この戦略では、提供されたモデル予測は無視されます。

`LEAST_CONFIDENCE`  <a name="ml-feedback-connector-sampling-strategies-least-confidence"></a>
最大信頼確率が指定されたしきい値を下回るサンプルをアップロードします。    
シナリオの例:  
しきい値: `.6`  
モデル予測: `[.2, .2, .4, .2]`  
最大信頼確率: `.4`  
結果:  
最大信頼確率 (`.4`) <= しきい値 (`.6`) であるため、サンプルを使用します。

`MARGIN`  <a name="ml-feedback-connector-sampling-strategies-margin"></a>
上位 2 つの信頼確率間のマージンが指定されたしきい値内である場合、サンプルをアップロードします。マージンは、上位 2 つの確率の差です。    
シナリオの例:  
しきい値: `.02`  
モデル予測: `[.3, .35, .34, .01]`  
トップ 2 つの信頼確率: `[.35, .34]`  
マージン: `.01` `.35 - .34`  
結果:  
マージン (`.01`) <= しきい値 (`.02`) であるため、サンプルを使用します。

`ENTROPY`  <a name="ml-feedback-connector-sampling-strategies-entropy"></a>
指定されたしきい値よりエントロピーが大きいサンプルをアップロードします。モデル予測の正規化されたエントロピーを使用します。    
シナリオの例:  
しきい値: `0.75`  
モデル予測: `[.5, .25, .25]`  
予測のエントロピー: `1.03972`  
結果:  
エントロピー (`1.03972`) > しきい値 (`0.75`) のため、サンプルを使用します。

## 入力データ
<a name="ml-feedback-connector-data-input"></a>

ユーザー定義の Lambda 関数は、 AWS IoT Greengrass Machine Learning SDK の `feedback`クライアントの `publish`関数を使用してコネクタを呼び出します。例については、[使用例](#ml-feedback-connector-usage)を参照してください。

**注記**  
このコネクタは MQTT メッセージを入力データとして受け入れません。

`publish` 関数は次の引数を取ります。

ConfigId  
ターゲットフィードバック設定の ID。これは、ML フィードバックコネクタの [FeedbackConfigurationMap](#ml-feedback-connector-param) パラメータに定義されたフィードバック設定の ID と一致する必要があります。  
必須: true  
タイプ: 文字列

ModelInput  
推論のためにモデルに渡された入力データ。この入力データは、サンプリング戦略に基づいて除外されない限り、ターゲット設定を使用してアップロードされます。  
必須: true  
タイプ: バイト

ModelPrediction  
モデルからの予測結果。結果タイプは、ディクショナリまたはリストです。例えば、ML イメージ分類コネクタコネクタからの予測結果は、確率のリスト (`[0.25, 0.60, 0.15]` など) です。このデータは `/feedback/message/prediction` トピックに発行されます。  
必須: true  
タイプ: ディクショナリまたは `float` 値のリスト

メタデータ  
アップロードされたサンプルにアタッチされ、`/feedback/message/prediction` トピックに発行される、お客様が定義したアプリケーション固有のメタデータ。また、コネクタはタイムスタンプ値を持つ `publish-ts` キーをメタデータに挿入します。  
必須: false  
タイプ: ディクショナリ  
例: `{"some-key": "some value"}`

## 出力データ
<a name="ml-feedback-connector-data-output"></a>

このコネクタは、3 つの MQTT トピックにデータを発行します。
+ `feedback/message/status` トピックに関するコネクタからのステータス情報。
+ `feedback/message/prediction` トピックに関する予測結果。
+ `cloudwatch/metric/put` トピックの CloudWatch を対象とするメトリクス。

<a name="connectors-input-output-subscriptions"></a>コネクタが MQTT トピックで通信できるようにするには、サブスクリプションを設定する必要があります。詳細については、「[入力と出力](connectors.md#connectors-inputs-outputs)」を参照してください。

**トピックのフィルター:** `feedback/message/status`  
このトピックを使用して、サンプルのアップロードと削除されたサンプルのステータスをモニタリングします。コネクタは、リクエストを受け取るたびに、このトピックに発行します。    
**出力例: サンプルアップロードが成功しました**  

```
{
  "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"
}
```
コネクタは、`bucket` フィールドと `key` フィールドを Amazon S3 からのレスポンスに追加します。Amazon S3 のレスポンスについては、「Amazon Simple Storage Service API リファレンス」の「[PUT オブジェクト](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html#RESTObjectPUT-responses)」を参照してください。  
**出力例: サンプリング戦略のために削除されたサンプル**  

```
{
  "response": {
    "status": "sample_dropped_by_strategy"
  },
  "id": "4bf5aeb0-d1e4-4362-5bb4-87c05de78ba3"
}
```  
**出力例: サンプルアップロードに失敗しました**  
失敗ステータスには、エラーメッセージが `error_message` 値、例外クラスが `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"
}
```  
**出力例: リクエスト制限のために調整されたリクエスト**  

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

**トピックのフィルター:** `feedback/message/prediction`  
このトピックを使用して、アップロードされたサンプルデータに基づく予測をリッスンします。これにより、モデルのパフォーマンスをリアルタイムで分析できます。モデル予測は、データが Amazon S3 に正常にアップロードされた場合にのみ、このトピックに発行されます。このトピックで発行されるメッセージは JSON 形式です。これには、アップロードされたデータオブジェクトへのリンク、モデルの予測、およびリクエストに含まれるメタデータが含まれます。  
また、予測結果を保存し、それを使用して経時的な傾向を報告および分析することもできます。傾向は、価値あるインサイトを提供できます。たとえば、*時間の傾向に伴って精度が低下した場合*に、モデルを再トレーニングする必要があるかどうかを判断するのに役立ちます。    
**出力例**  

```
{
  "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"
  }
}
```
このトピックをサブスクライブし、詳細または履歴分析 AWS IoT Analytics のために に情報を送信するように [IoT Analytics コネクタ](iot-analytics-connector.md)を設定できます。

**トピックのフィルター:** `cloudwatch/metric/put`  
これは、CloudWatch にメトリクスを発行するために使用される出力トピックです。この機能を使用するには、[CloudWatch Metrics コネクタ](cloudwatch-metrics-connector.md)をインストールして設定する必要があります。  
メトリクスには次のものがあります。  
+ アップロードされたサンプルの数。
+ アップロードされたサンプルのサイズ。
+ Amazon S3 へのアップロードからのエラーの数。
+ サンプリング戦略に基づいて削除されたサンプルの数。
+ スロットルされたリクエストの数。  
**出力例: データサンプルのサイズ (実際のアップロード前に発行)**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 47592,
      "unit": "Bytes",
      "metricName": "SampleSize"
    }
  }
}
```  
**出力例: サンプルアップロードが成功しました**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadSuccess"
    }
  }
}
```  
**出力例: サンプルアップロードが成功し、予測結果が発行されました**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleAndPredictionPublished"
    }
  }
}
```  
**出力例: サンプルアップロードに失敗しました**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleUploadFailure"
    }
  }
}
```  
**出力例: サンプリング戦略のために削除されたサンプル**  

```
{
  "request": {
    "namespace": "GreengrassFeedbackConnector",
    "metricData": {
      "value": 1,
      "unit": "Count",
      "metricName": "SampleNotUsed"
    }
  }
}
```  
**出力例: リクエスト制限のために調整されたリクエスト**  

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

## 使用例
<a name="ml-feedback-connector-usage"></a>

次の例は、[AWS IoT Greengrass Machine Learning SDK](lambda-functions.md#lambda-sdks-ml) を使用して ML フィードバックコネクタにデータを送信するユーザー定義 Lambda 関数です。

**注記**  
 AWS IoT Greengrass Machine Learning SDK は、 AWS IoT Greengrass [ダウンロードページからダウンロードできます](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
```

## ライセンス
<a name="ml-feedback-connector-license"></a>



ML フィードバックコネクタには、以下のサードパーティーのソフトウェアおよびライセンスが含まれています。<a name="boto-3-licenses"></a>
+ [AWS SDK for Python (Boto3)](https://pypi.org/project/boto3/)/Apache License 2.0
+ [botocore](https://pypi.org/project/botocore/)/Apache License 2.0
+ [dateutil](https://pypi.org/project/python-dateutil/1.4/)/PSF ライセンス
+ [docutils](https://pypi.org/project/docutils/)/BSD ライセンス、GNU 一般パブリックライセンス (GPL)、Python Software Foundation ライセンス、パブリックドメイン
+ [jmespath](https://pypi.org/project/jmespath/)/MIT ライセンス
+ [s3transfer](https://pypi.org/project/s3transfer/)/Apache License 2.0
+ [urllib3](https://pypi.org/project/urllib3/)/MIT ライセンス
+ <a name="six-license"></a>[six](https://github.com/benjaminp/six)/MIT

このコネクタは、[Greengrass Core ソフトウェアライセンス契約](https://greengrass-release-license.s3.us-west-2.amazonaws.com/greengrass-license-v1.pdf)に従ってリリースされます。

## 関連情報
<a name="ml-feedback-connector-see-also"></a>
+ [Greengrass コネクタを使用したサービスおよびプロトコルとの統合](connectors.md)
+ [Greengrass コネクタの開始方法 (コンソール)](connectors-console.md)
+ [Greengrass コネクタの開始方法 (CLI)](connectors-cli.md)