

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

# HTTP を使用した OTA 更新の前提条件
<a name="ota-http-freertos"></a>

このセクションでは、HTTP を使用して無線 (OTA) による更新を実行するための一般的な要件について説明します。バージョン 201912.00 以降、FreeRTOS OTA は HTTP プロトコルまたは MQTT プロトコルを使用して、 からデバイスにファームウェア更新イメージ AWS IoT を転送できます。

**注記**  
ファームウェアイメージの転送には HTTP プロトコルを使用できますが、 との他のやり取りでは、ジョブ実行通知、ジョブドキュメント、実行ステータスの更新の送受信など、coreMQTT エージェントライブラリ AWS IoT Core が使用されるため、coreMQTT エージェントライブラリは依然として必要です。 coreMQTT 
OTA 更新ジョブに MQTT プロトコルと HTTP プロトコルの両方を指定すると、各デバイスの OTA エージェントソフトウェアの設定によって、ファームウェアイメージの転送に使用するプロトコルが決定されます。OTA エージェントをデフォルトの MQTT プロトコルメソッドから HTTP プロトコルに変更するには、デバイスの FreeRTOS ソースコードのコンパイルに使用するヘッダーファイルを変更します。

## 最小要件
<a name="ota-http-freertos-min-requirements"></a>
+ デバイスファームウェアに必要な FreeRTOS ライブラリ (coreMQTT 、HTTP、OTA エージェント、その依存関係) が含まれている必要があります。
+ FreeRTOS バージョン 201912.00 以降では、HTTP 経由の OTA データ転送を有効にするために OTA プロトコルの設定を変更する必要があります。

## Configurations
<a name="ota-http-freertos-config"></a>

[https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h) ファイルにある以下の OTA プロトコルの設定を参照してください。

**HTTP 経由で OTA データの転送を有効にするには**

1. `configENABLED_DATA_PROTOCOLS` を `OTA_DATA_OVER_HTTP` に変更します。

1. OTA が更新されると、MQTT または HTTP のプロトコルのいずれかを使用できるように、両方のプロトコルを指定できます。`configOTA_PRIMARY_DATA_PROTOCOL` を `OTA_DATA_OVER_HTTP` に変更することで、デバイスが使用するプライマリプロトコルを HTTP に設定できます。

**注記**  
HTTP は、OTA データオペレーションに対してのみサポートされます。制御オペレーションには MQTT を使用する必要があります。

## デバイス固有の設定
<a name="ota-http-freertos-device-configuration"></a>

**ESP32**  
RAM の容量が限られているため、OTA データプロトコルとして HTTP を有効にする場合は、BLE をオフにする必要があります。[https://github.com/aws/amazon-freertos/blob/main/vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h) ファイルで、`configENABLED_NETWORKS` を `AWSIOT_NETWORK_TYPE_WIFI` のみに変更します。  

```
/**
     * @brief Configuration flag which is used to enable one or more network interfaces for a board.
     *
     * The configuration can be changed any time to keep one or more network enabled or disabled.
     * More than one network interfaces can be enabled by using 'OR' operation with flags for
     * each network types supported. Flags for all supported network types can be found
     * in "aws_iot_network.h"
     *
     */
    #define configENABLED_NETWORKS      ( AWSIOT_NETWORK_TYPE_WIFI )
```

## メモリ使用量
<a name="ota-http-freertos-memory"></a>

MQTT をデータ転送に使用する場合、MQTT 接続は制御オペレーションとデータオペレーションの間で共有されるため、追加のヒープメモリは必要ありません。ただし、HTTP 経由でデータを有効化するには、追加のヒープメモリが必要です。以下は、FreeRTOS `xPortGetFreeHeapSize` API を使用して計算された、サポートされているすべてのプラットフォームのヒープメモリの使用状況のデータです。OTA ライブラリを使用するのに十分な RAM があることを確認する必要があります。

****Texas Instruments CC3220SF-LAUNCHXL****  
制御オペレーション (MQTT): 12 KB  
データオペレーション (HTTP): 10 KB  
 TI はハードウェアで SSL を行うため、使用する RAM は大幅に少なくなります。そのため、mbedtls ライブラリを使用しません。

****Microchip Curiosity PIC32MZEF****  
制御オペレーション (MQTT): 65 KB  
データオペレーション (HTTP): 43 KB

****Espressif ESP32****  
制御オペレーション (MQTT): 65 KB  
データオペレーション (HTTP): 45 KB  
ESP32 の BLE では、約 87 KB の RAM を使用します。上記のデバイス固有の設定で説明されているように、すべての設定を有効にするのに十分な RAM がありません。

****Windows simulator****  
制御オペレーション (MQTT): 82 KB   
データオペレーション (HTTP): 63 KB 

****Nordic nrf52840-dk****  
HTTP はサポートされていません。

## デバイスポリシー
<a name="ota-http-freertos-device-policy"></a>

このポリシーでは、OTA アップデートに MQTT または HTTP を使用できます。

HTTP を使用して OTA 更新を受信する各デバイスは、 AWS IoT にモノとして登録する必要があります。また、モノには、ここに記載されているようなポリシーがアタッチされている必要があります。`"Action"` および `"Resource"` オブジェクトの項目の詳細については、[AWS IoT Core ポリシーアクション](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html)と[AWS IoT Core アクションリソース](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html)を参照してください。

**注意事項**
+ この `iot:Connect` アクセス許可により、デバイスが MQTT 経由で AWS IoT に接続できるようになります。
+  AWS IoT ジョブ (`.../jobs/*`) のトピックに対する `iot:Subscribe`および アクセス`iot:Publish`許可により、接続されたデバイスはジョブ通知とジョブドキュメントを受信し、ジョブ実行の完了状態を発行できます。
+ アクセス`iot:Receive`許可により、 AWS IoT Core はこれらのトピックに関するメッセージを現在の接続デバイスに発行できます。このアクセス許可は、MQTT メッセージの配信ごとにチェックされます。このアクセス許可を使用して、トピックに現在サブスクライブしているクライアントへのアクセスを取り消すことができます。