IoT Platform では、リージョン、インスタンス、またはアカウント間でデバイスを分散できます。デバイスを分散した後、IoT Platform は新しいエンドポイントをデバイスに送信します。デバイスはエンドポイントを受信した後、新しいエンドポイントを使用して IoT Platform に接続できます。これにより、新しいエンドポイントをデバイスに書き込む必要がなくなります。
シナリオ
以下のシナリオでデバイスを分散できます。
接続前のデバイスへの書き込み: 工場からデバイスを出荷する前に、インスタンスが存在する IoT Platform インスタンスまたはリージョンに基づいて、デバイスに異なるエンドポイントをハードコードする必要はありません。リージョン情報を含まないグローバルに一意のエンドポイントが各デバイスに書き込まれます。デバイスが工場を出荷された後、IoT Platform コンソールでデバイスを異なるリージョンに分散できます。このようにして、デバイスは世界中のさまざまなリージョンから IoT Platform に接続できます。
ビジネスの移行: ビジネスを移行する場合、デバイスが接続されているリージョンまたはインスタンスを変更する必要がある場合があります。この場合、リージョン、インスタンス、またはアカウント間でデバイスを分散できます。
以下の分散ポリシーは、さまざまなシナリオに適用されます。
指定リージョン: デバイスは、指定されたリージョンとインスタンスに分散されます。デバイスを分散する必要がある宛先リージョンとインスタンスを確認できる場合は、このポリシーを使用することをお勧めします。このようにして、デバイスを効率的に分散できます。
最近アクセス: デバイスは、世界中のさまざまなリージョンで使用される場合があります。デバイスを分散するときは、1 つ以上のリージョンを選択し、各リージョンからインスタンスを選択できます。その後、デバイスは IP アドレスに基づいて最も近いリージョンに接続されます。このようにして、デバイスの場所にかかわらず、デバイスを最も近いリージョンに接続できます。
使用上の注意
項目 | 説明 |
分散範囲 |
|
クロスアカウント分散 |
|
指定リージョンへの分散 |
分散可能な項目の詳細については、「分散可能な項目」をご参照ください。 |
最も近いリージョンへの分散 |
|
分散可能な項目
インスタンス、リージョン、またはアカウント間でデバイスを分散できます。
デバイスが分散されると、特定のデバイス データとプロダクト データも分散されます。次の表に、分散可能な項目を示します。
分散可能な項目 | 制限 |
デバイスの最大数 | 同時に最大 10,000 台のデバイスを分散できます。 |
デバイス データ | デバイス証明書は分散され、デバイスと新しいインスタンス間の接続を認証するために使用されます。証明書には、ProductKey、DeviceName、および DeviceSecret が含まれています。 次のデバイス データは分散されません。
|
プロダクト データ | プロダクト情報、トピック カテゴリ、TSL 機能、およびデータ解析スクリプトが分散されます。受信者は、分散されたプロダクトのデータのみを表示できます。受信者は、[プロダクト情報]、[トピック カテゴリ]、[機能の定義]、または [データ解析] タブの [プロダクトの詳細] ページでデータを編集または削除することはできません。受信者は、IoT Platform コンソールで分散されたプロダクトのデバイスを作成することもできません。 重要 デバイスを分散する場合は、次の項目に注意してください。
|
注意事項
デバイスの分散による影響を受ける項目 | 説明 |
課金 |
|
デバイス分散タスク |
|
メッセージング | 分散されたデバイスで AMQP(Advanced Message Queuing Protocol)サーバー側サブスクリプションとデータ転送機能を使用する場合は、宛先インスタンスで機能を再構成する必要があります。 |
OTA アップデート | 分散されているデバイスの OTA(無線)アップデートを構成する場合は、次の項目に注意してください。
OTA アップデート機能の詳細については、「OTA アップデートの概要」をご参照ください。 |
プロダクト データの更新 | プロダクトが分散された後、ソース インスタンスからカスタム トピックの作成、TSL モデルの定義、データ解析スクリプトの編集など、プロダクトに対して実行される操作は、宛先インスタンスの分散されたプロダクトには影響しません。 |
手順
IoT Platform コンソールでプロダクトとデバイスを作成し、デバイス証明書を取得します。証明書には、ProductKey、DeviceName、および DeviceSecret が含まれています。詳細については、「プロダクトを作成する」、「デバイスを作成する」、および「一度に複数のデバイスを作成する」をご参照ください。
Link SDK for C V4.x を使用して物理デバイスを構成するか、通信プロトコルに基づいてデバイスを構成して、次の機能を実装します。
説明デバイスを構成するには、Link SDK for C を使用することをお勧めします。詳細については、「デバイス分散の概要」をご参照ください。
IoT Platform コンソールでデバイスを分散した後、次の操作を実行してデバイスを IoT Platform に接続できます。
デバイス開発方法に基づいて、次のいずれかの方法を使用して Bootstrap リクエストを開始します。
Link SDK for C を使用してデバイスを接続する
デバイスは、SDK にカプセル化されている Bootstrap メソッドを呼び出し、ProductKey および DeviceName パラメーターを指定して、グローバルに一意のエンドポイント
https://iot-auth-global.aliyuncs.comにリクエストを送信します。Bootstrap 機能の開発方法については、「デバイス分散の概要」をご参照ください。
SDK を使用せずにデバイスを接続する
使用しているプロトコルに基づいて、
https://iot-auth-global.aliyuncs.com/auth/bootstrapにリクエストを送信します。次の表に、リクエスト パラメーターを示します。表 1 リクエスト パラメーター パラメーター
必須
説明
productKey
必須
デバイスが属するプロダクトの ProductKey。ProductKey は、IoT Platform コンソールで確認できます。
ProductKey の取得方法については、「デバイスを作成する」をご参照ください。
deviceName
必須
デバイスの DeviceName。DeviceName は、IoT Platform コンソールで確認できます。
clientId
オプション
クライアントの ID。ID は 1 ~ 64 文字の長さでなければなりません。
version
オプション
検証サービスのバージョン番号。
timestamp
オプション
タイムスタンプ。タイムスタンプは、スライド ウィンドウ アルゴリズムを使用して検証されません。
resources
オプション
取得するリソースの名前。例: MQTT。複数のリソース名はコンマ (,) で区切ります。
表 2 レスポンス パラメーター パラメーター
タイプ
説明
resources
構造体
MQTT(Message Queuing Telemetry Transport)ブローカーのエンドポイントなどのリソース情報。
リクエストの例
POST /auth/bootstrap HTTP/1.1 Host: iot-auth-global.aliyuncs.com Content-Type: application/x-www-form-urlencoded Content-Length: 123 productKey=123×tamp=123&version=default&clientId=123&resources=mqtt&deviceName=testレスポンスの例
HTTP/1.1 200 OK Server: Tengine Date: Wed, 29 Mar 2017 13:08:36 GMT Content-Type: application/json;charset=utf-8 Connection: close { "code" : 200, // レスポンスコード "data" : { "resources" : { // リソース情報 "mqtt" : { // MQTTリソース "host" : "xxx.iot-as-mqtt.cn-shanghai.aliyuncs.com", // MQTTブローカーのエンドポイント "port" : 1883 // MQTTブローカーのポート } } }, "message" : "success" // 操作が成功したかどうか }
IoT Platform は、宛先リージョンとインスタンスに基づいてエンドポイントを返します。「分散ポリシー」パラメーターを「最近アクセス」に設定すると、IoT Platform はデバイスの IP アドレスに基づいて宛先リージョンとインスタンスを決定します。
デバイスは、デバイス証明書と、デバイスが接続できるインスタンスのエンドポイント情報に基づいて、MQTT 経由で IoT Platform に接続します。デバイス証明書には、ProductKey、DeviceName、および DeviceSecret が含まれています。エンドポイント情報は、分散サービスによって返されます。
Link SDK for C を使用してデバイスを接続する
デバイスを接続するには、SDK V4.x を使用することをお勧めします。デバイスを IoT Platform に接続する方法の詳細については、「MQTT 経由のデバイス接続の概要」をご参照ください。
SDK を使用せずにデバイスを接続する
組み込み C 用のオープンソース Paho MQTT プロジェクトを使用して、デバイスを IoT Platform に接続します。詳細については、「組み込み C 用の Paho MQTT ライブラリを使用してデバイスを IoT Platform に接続する」をご参照ください。
オプション。IoT Platform コンソールでデバイスを分散すると、デバイスは分散操作が実行されたことを示す MQTT メッセージを受信します。その後、デバイスは強制的にオフラインになります。
IoT Platform がダウンストリーム MQTT リクエストを送信し、デバイスが IoT Platform にレスポンスを送信するときに、次のトピックが使用されます。
リクエスト トピック:
/sys/${productKey}/${deviceName}/thing/bootstrap/notifyAlink JSON 形式のリクエストの例:
{ "id": "****", // メッセージID。ランダムに生成された文字列 "version": "1.0", // メッセージバージョン。固定値: 1.0 "method": "thing.bootstrap.notify", // メッセージメソッド名。固定値: thing.bootstrap.notify "params": { // メッセージパラメーター "cmd": 0 // コマンド。固定値: 0 } }レスポンストピック:
/sys/${productKey}/${deviceName}/thing/bootstrap/notify_replyAlink JSON 形式のレスポンスの例:
{ "id": "****", // リクエストメッセージのIDと同じ "code":200, // レスポンスコード。200は成功を示す "data" : {} // レスポンスデータ。空のJSONオブジェクト }
重要デバイスを IoT Platform に接続するたびに、上記の最初の 3 つの段階を完了することをお勧めします。これにより、デバイスに保存されているエンドポイントが、IoT Platform によって送信されたエンドポイントと同じになります。そうでない場合、デバイスは IoT Platform に接続できない可能性があります。
エンドポイント情報はデバイスに保存できます。接続情報が失われた場合、または接続試行が失敗した場合、デバイスは Bootstrap リクエストを開始して、エンドポイント情報を再度取得できます。
デバイスを構成した後、実際の状況に基づいて次のいずれかの操作を実行します。
デバイス分散機能が無効になっている既存のデバイスを分散する前に、OTA アップデートを実行して、前の手順で開発されたバージョンにデバイスをアップデートする必要があります。デバイスのアップデート方法については、「OTA アップデートの概要」をご参照ください。
重要既存のデバイスのデバイス分散機能が無効になっている場合は、デバイスを分散する前に OTA アップデートを実行して機能を有効にする必要があります。そうでない場合、分散後にデバイスは IoT Platform に接続できません。
デバイスを作成した後、デバイス証明書をデバイスに書き込む必要があります。デバイス証明書の書き込み方法については、「デバイス証明書の取得の概要」をご参照ください。
ビジネス要件に基づいて、IoT Platform コンソールでデバイスを特定のリージョン、インスタンス、およびアカウントに分散します。
IoT Platform コンソール にログインします。
上部のナビゲーション バーで、ドロップダウン リストから [中国 (上海)] を選択します。
説明この手順は、デバイス分散機能を使用するために行われます。デバイス分散のソース リージョンまたは宛先リージョンを指定するものではありません。
[概要] ページで、[すべての環境] をクリックします。「すべての環境」タブで、管理するインスタンスを見つけ、インスタンス ID またはインスタンス名をクリックします。
左側のナビゲーション ウィンドウで、 を選択します。
[デバイス分散] ページで、[デバイス分散] をクリックします。
パラメーターを構成します。
次の表に、パラメーターを示します。
パラメーター
説明
分散方法
デバイスを分散するために使用される方法。有効な値:
[このアカウント]: 現在のアカウントの別のインスタンスまたはリージョンにデバイスを分散します。
[クロスアカウント]: デバイスを別のアカウントに分散します。
説明「分散方法」パラメーターを「クロスアカウント」に設定した場合、「分散ポリシー」パラメーターを「最近アクセス」に設定することはできません。
宛先アカウント
デバイスが分散される宛先アカウント。「分散方法」パラメーターを [クロスアカウント] に設定した場合、このパラメーターは必須です。
アカウント名またはアカウント ID を使用して宛先アカウントを指定できます。
[宛先アカウント名]: Alibaba Cloud アカウントの名前を入力します。
[宛先アカウント ID]: Alibaba Cloud アカウントの ID を入力します。
説明Alibaba Cloud アカウントの ID を表示するには、次の手順を実行します。IoT Platform コンソール にログインし、右上隅のプロファイル画像をクリックして [セキュリティ設定] ページに移動します。
確認コード
宛先アカウントを指定した後、[確認コードを送信] をクリックします。IoT Platform は、アカウントに関連付けられている携帯電話番号に確認コードを送信します。確認コードは 5 分間有効です。宛先アカウントの所有者に連絡して確認コードを取得してください。
ソース リージョン
デバイスが分散されるリージョン。
ソース インスタンス
デバイスが分散されるインスタンス。
分散ポリシー
デバイスを分散するために使用されるポリシー。有効な値:
[リージョンの更新]: デバイスを指定されたリージョンに分散します。
[最近アクセス]: デバイスの IP アドレスに基づいて、デバイスを最も近いリージョンに分散します。1 つ以上のリージョンを選択できます。
宛先リージョン
「分散ポリシー」パラメーターを [リージョンの更新] に設定した場合、このパラメーターは必須です。
デバイスを分散するリージョンを選択します。
宛先インスタンス
「分散ポリシー」パラメーターを [リージョンの更新] に設定した場合、このパラメーターは必須です。
デバイスを分散するインスタンス。
「分散方法」パラメーターを [このアカウント] に設定した場合、宛先インスタンスを選択する必要があります。
「分散方法」パラメーターを [クロスアカウント] に設定した場合、インスタンス ID を指定する必要があります。そうでない場合、以前のバージョンのパブリックインスタンスが使用されます。
重要宛先インスタンスが新しいパブリックインスタンスまたは Enterprise Edition インスタンスの場合、インスタンス ID を指定する必要があります。
詳細については、「インスタンスのエンドポイントを管理する」をご参照ください。
リージョン
「分散ポリシー」パラメーターを [最近アクセス] に設定した場合、このパラメーターは必須です。
1 つ以上のリージョンを選択できます。デバイスをソース リージョンに分散する場合は、ソース リージョンを選択します。
宛先リージョンに複数のインスタンスが存在する場合は、ドロップダウン リストからインスタンスを選択できます。
デバイス
次のいずれかの方法でデバイスを選択できます。
[選択]: プロダクト リストからプロダクトを選択し、デバイス リストから 1 つ以上のデバイスを選択します。デバイス リストのページを変更しても、デバイスは選択されたままになります。
「分散方法」パラメーターを [リージョンの更新] に設定し、デバイスを指定しない場合、IoT Platform はプロダクトのみを分散します。
[ファイルを選択]: デバイス リストを含むファイルをアップロードします。ファイルは CSV 形式で、最大 1,000 エントリを含めることができます。[テンプレートをダウンロード] をクリックしてファイル テンプレートを取得できます。
[OK] をクリックします。
IoT Platform はすぐに分散タスクを実行します。
「分散ポリシー」パラメーターを「リージョンの更新」に設定すると、プロダクト データとデバイス データは指定されたリージョンに分散されます。
「分散ポリシー」パラメーターを「最近アクセス」に設定すると、プロダクト データは指定されたリージョンに分散されます。デバイスが IoT Platform に接続されると、IoT Platform はデバイスの IP アドレスに基づいてデバイス データを最も近いリージョンに動的に分散します。
次の表に、分散タスクのさまざまなステータスを示します。ステータスは「バッチ リスト」タブに表示されます。
ステータス
説明
初期化中
分散タスクを初期化しています。
分散中
分散タスクを実行しています。
分散タスクがこの状態が長時間続く場合は、「アクション」列の「再試行」をクリックできます。
分散済み
分散タスクは完了です。
この「分散済み」ステータスは、すべてのデバイスが分散されたことを示すものではありません。すべてのデバイスが分散されているかどうかを確認するには、「アクション」列の [レコードをダウンロード] をクリックして結果を表示します。特定のデバイスが存在しない場合、デバイスの分散は失敗しています。
失敗
ネットワーク ジッターが原因で分散タスクが失敗しました。「アクション」列の「再試行」をクリックできます。問題が解決しない場合は、カスタマー サービスに連絡するか、チケットを送信してください。
分散タスクが完了し、デバイスが IoT Platform に接続されると、デバイスは手順 2 の操作を実行して宛先リージョンとインスタンスに接続します。