IoT Edge モジュールの技術資産の準備
この記事では、Azure Marketplace で公開する前にモノのインターネット (IoT) Edge モジュールの技術アセットが満たす必要のある要件について説明します。
作業の開始
IoT Edge モジュールは、IoT Edge デバイスで実行する Docker 互換コンテナーです。
- IoT Edge モジュールの詳細については、Azure IoT Edge モジュールを理解するを参照してください。
- IoT Edge モジュールの開発を開始するには、独自の IoT Edge モジュールを開発するを参照してください。
技術的な要件
IoT Edge モジュールが認定され Azure Marketplace で公開できるようにするには、次の技術的な要件を満たす必要があります。
プラットフォームのサポート
IoT Edge モジュールは、次のプラットフォーム オプションのいずれかをサポートする必要があります。
IoT Edge によってサポートされるレベル 1 プラットフォーム
IoT Edge でサポートされているすべてのレベル 1 プラットフォーム (Azure IoT Edge サポートに記録されているもの) をサポートしなくてはなりません。 より良いカスタマー エクスペリエンスを提供するため、このオプションをお勧めします。 この基準を満たすモジュールが紹介されます。 このプラットフォーム オプションを使用するモジュールは、以下のことが必要です。
GitHub Manifest-tool でビルドされたマニフェスト タグである最新のタグとバージョン タグ (1.0.1 など) を指定します。
パートナー センターでオファーの一覧タブを使用し、「有用なリンク」セクションのリンクを Azure IoT Edge 認定デバイス カタログに追加します。
IoT Edge によってサポートされるレベル 1 プラットフォームのサブセット
お使いになっているモジュールは、IoT Edge でサポートされているレベル 1 のプラットフォーム (Azure IoT Edge サポートに記録されているもの) のサブセットを少なくとも 1 つサポートする必要があります。 このプラットフォーム オプションを使用するモジュールは、以下のことが必要です。
- 複数のプラットフォームがサポートされている場合は、GitHub の manifest-tool でビルドされたマニフェスト タグである最新のタグとバージョン タグ (1.0.1 など) を指定します。 マニフェスト タグは、1 つのプラットフォームのみがサポートされている場合は省略できます。
- パートナー センターでオファーの一覧タブを使用し、「有用なリンク」セクションのリンクを Azure IoT Edge 認定デバイス カタログから少なくとも 1 つの IoT Edge デバイスに追加します。
デバイスのディメンション
対象の IoT Edge デバイス上の IoT Edge モジュールのサイズ (CPU、RAM、ストレージ、GPU など) は、次の要件を満たす必要があります。
モジュールは、Azure IoT Edge 認定デバイス カタログから少なくとも 1 つの IoT Edge デバイスで動作する必要があります。
ハードウェアの最低要件をオファーの説明の最後の段落に記載する必要があります (パートナー センターのオファーの一覧タブ)。 必要に応じて、推奨されるハードウェア要件が大幅に異なる場合は、要件を一覧にすることもできます。 たとえば、プランの説明の最後に次のセクションを追加します。
この HTML テキストをコピーするか、該当するリッチ テキスト関数を編集ウィンドウで使用します。
<p><u>Minimum hardware requirements:</u> Linux x64 and arm32 OS, 1GB of RAM, 500 Mb of storage</p>
構成
モジュールには、IoT Edge デバイスへのデプロイをできるだけ簡単にするための既定の構成設定を含める必要があります。 この情報は、パートナー センターのプランの「技術的構成」ページで指定できます。 コンテナーには、エッジ ハブと IoT Hub との通信を有効にする IoT Edge モジュール SDK も含まれる場合があります。
既定の構成
IoT Edge モジュールは、パートナー センターの計画の「技術的構成」ページで指定された既定の設定で開始できなくてはなりません。 次の既定の設定を使用できます。
- 既定のルート
- 既定のモジュール ツインの必要なプロパティ
- 既定の環境変数
- 既定のコンテナー作成オプション
既定値に必要なパラメーターでは意味をなさないシナリオでは (たとえば、顧客のサーバーの IP アドレスなど)、既定値としてパラメーターを追加します。 この値は大文字で表記し、角かっこで囲みます。 この例では、次の既定の環境変数を設定します。
ServerIPAddress = <MY_SERVER_IP_ADDRESS>
構成に関するドキュメント
IoT Edge モジュールのすべての構成設定を明確に文書化する必要があります。 たとえば、ルート、ツインが必要なプロパティ、環境変数、createOptions などを使用する方法を文書化する必要があります。 ドキュメントへのリンクを指定するか、ドキュメントをオファーまたはプランの説明の一部に含める必要があります。 この情報は、パートナー センターのオファーの一覧と計画の一覧ページに記載できます。
タグとバージョン管理
お客様はモジュールを簡単にデプロイし、マーケットプレースから (開発者シナリオで) 更新プログラムを自動的に取得できなくてはなりません。 また、(運用環境シナリオで) テスト済みのバージョンを使用して凍結できる必要もあります。
お客様のこれらの期待に応え、マーケットプレースに公開できるようにするために、IoT Edge モジュールは次の要件を満たす必要があります
- サポートされているすべてのプラットフォームの最新バージョンを参照するマニフェストの最新タグを含めます。
- バージョン タグを X.Y.Z 形式にします (X、Y、Z は整数)。
- サポートされているすべてのプラットフォームで特定のバージョンを参照する「バージョン」タグ (1.0.1 など) を含めます。
- 「バージョン」タグ (1.0.1 など) は変更する必要がないため、更新しないでください。
Note
必要に応じて、2.0 や 1.0 といった「ローリング バージョン」タグを含めることができます。 これは、複数のメジャー バージョンの並列管理をサポートします。
テレメトリ
IoT Module SDK を使用するモジュールは、テレメトリ目的で一意のモジュール識別子を PublisherId.OfferId.SkuId に設定する必要があります。 一意の識別子により、Azure Marketplace では、実行されているモジュール インスタンスの数を識別できます。
IoT Module SDK から次の方法のいずれかを使用して、ProductInfo をこの識別子に設定します。
IoT Module SDK を使用していないモジュールでは、ダウンロード数などパートナー センターを通して入手できる分析情報の精度が低くなります。
セキュリティ
IoT Edge モジュールは、特権モジュールを避ける必要があります。 その代わり、ホストに対する特権アクセスは最小限にするよう要請します。
Module IoT SDK
Module IoT SDK の同梱は、認定の前提条件ではありません。 ただし、IoT Module SDK を含めると、より優れたユーザー エクスペリエンスが提供される場合があります。 たとえば、ルーティングやクラウドへのメッセージ送信などをサポートできます。
IoT Module SDK は、実行中のモジュール インスタンスの数に関するテレメトリ データを取得するために必要です。
再認定プロセス
以下のようなモジュールに影響する破壊的変更があったときはパートナーに通知されます。
- IoT Edge でサポートされるレベル 1 の OS/arch サポート マトリックス
- IoT Module SDK
- IoT Edge ランタイム
- IoT Edge モジュール認定ガイドライン
パートナーは、パートナー センターで再公開することによって、オファーを更新して再認定する必要があります。
また、オファーを更新すると再認定されます (新しいイメージ タグの追加など)。
Azure Container Registry でモジュールをホストする
IoT Edge モジュールを Azure Marketplace にアップロードするには、まず、これを Azure Container Registry (ACR) でホストする必要があります。 モジュールには、マニフェスト タグによって参照されるイメージ タグなど、発行するすべてのタグを含める必要があります。 詳細については、「Azure コンテナー レジストリを作成してコンテナー イメージをプッシュする」チュートリアルを参照してください。