翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS IoT Device Defender デモ
重要
これは、FreeRTOS リリース 202012.00 で使用する FreeRTOS ユーザーガイドのアーカイブ版です。このドキュメントの最新バージョンについては、FreeRTOS ユーザーガイドを参照してください。
序章
このデモでは、 AWS IoT Device Shadow ライブラリを使用して に接続する方法を示しますAWS IoT Device Defender。このデモでは、coreMQTT ライブラリを使用して、MQTT ブローカーへの TLS (相互認証) による AWS IoT MQTT 接続を確立し、coreJSON ライブラリを使用して受信するレスポンスを検証および解析します AWS IoT Device Defender。このデモでは、デバイスから収集されたメトリクスを使用して JSON 形式のレポートを作成する方法と、このレポートを AWS IoT Device Defenderに送信する方法を示します。このデモでは、coreMQTT ライブラリにコールバック関数を登録して、 がレポートが承諾されたか拒否されたかを確認するために AWS IoT Device Defender 送信するレスポンスを処理する方法も示します。
注記
FreeRTOS デモをセットアップして実行するには、FreeRTOS の開始方法 の手順に従います。
機能
このデモでは、メトリクスの収集、JSON 形式での Device Defender レポートの構築、MQTT AWS IoT ブローカーへの安全な MQTT 接続 AWS IoT Device Defender を介した への送信方法を示す単一のアプリケーションタスクを作成します。
メトリクスの収集方法は、使用される TCP/IP スタックによって異なります。FreeRTOS+TCP およびサポートされている lwIP 設定には、デバイスから実際のメトリクスを収集して AWS IoT Device Defender レポートでメトリクスを送信する、メトリクス収集の実装を提供しています。FreeRTOS+TCP
他の TCP/IP スタックを使用するボードには、すべてのメトリクスに対してゼロを返すメトリクス収集関数のスタブ定義を提供しています。このスタブ実装を使用してボードの実際のメトリクスを送信するには、ネットワークスタック向けに
に関数を実装します。このファイルも GitHubfreertos
/demos/device_defender_for_aws/metrics_collector/stub/metrics_collector.c
ESP32 の場合、デフォルトの lwIP 設定はコアロックを使用しないため、デモではスタブメトリクスが使用されます。参照 lwIP メトリクス収集の実装を使用する場合は、lwiopts.h
に次のマクロを定義します。
#define LINK_SPEED_OF_YOUR_NETIF_IN_BPS 0 #define LWIP_TCPIP_CORE_LOCKING 1 #define LWIP_STATS 1 #define MIB2_STATS 1
以下に、デモを実行したときの出力例を示します。

ボードが FreeRTOS+TCP またはサポートされている lwIP 設定を使用していない場合、出力は次のようになります。

デモのソースコードは、
ディレクトリのダウンロード内、または GitHubfreertos
/demos/device_defender_for_aws/
AWS IoT Device Defender トピックをサブスクライブする
subscribeToDefenderTopicsDEFENDER_API_JSON_ACCEPTED
を使用して、受け入れた Device Defender レポートの応答を受信するトピック文字列を作成します。ここでは、マクロ DEFENDER_API_JSON_REJECTED
を使用して、拒否した Device Defender レポートの応答を受信するトピック文字列を作成します。
デバイスメトリクスを収集する
collectDeviceMetricsmetrics_collector.h
で定義されている関数を使用してネットワークメトリクスを収集します。送受信されたバイト数とパケット数、開いている TCP ポート、開いている UDP ポート、確立された TCP 接続に関するメトリクスが収集されます。
AWS IoT Device Defender レポートを生成する
generateDeviceMetricsReportreport_builder.h
で定義されている関数を使用して Device Defender レポートを生成します。この関数は、ネットワークメトリクスとバッファを受け取り、 が期待する形式で JSON ドキュメントを作成し AWS IoT Device Defender 、提供されたバッファに書き込みます。で想定される JSON ドキュメントの形式 AWS IoT Device Defender は、 AWS IoT デベロッパーガイドの「デバイス側のメトリクス」で指定されています。
AWS IoT Device Defender レポートの発行
AWS IoT Device Defender レポートは、JSON AWS IoT Device Defender レポートを発行するための MQTT トピックで発行されます。レポートは、GitHub ウェブサイトのこのコードスニペットDEFENDER_API_JSON_PUBLISH
を使用して作成されます。
応答を処理するコールバック
publishCallbackDefender_MatchTopic
API を使用して、受信 MQTT メッセージが AWS IoT Device Defender サービスからのものであるかどうかを確認します。メッセージの送信元である場合 AWS IoT Device Defender、受信した JSON レスポンスを解析し、レスポンス内のレポート ID を抽出します。その後、レポート ID は、レポート内に送信されたものと同じかどうか検証されます。