ルールエンジンのデータ転送機能を使用して、処理済みデータを ApsaraDB RDS インスタンスに転送して保存できます。このトピックでは、データ転送プロセスについて説明します。この例では、TSL (Thing Specification Language)通信トピックをソース トピックとして使用します。
前提条件
ApsaraDB RDS へのデータ転送をサポートするリージョンに、ApsaraDB RDS にデータを転送できる IoT Platform インスタンスが作成されていること。 ApsaraDB RDS へのデータ転送をサポートするリージョンの詳細については、「リージョン」をご参照ください。
DataSource という名前のデータソースが作成され、TSL 通信トピックがデータソースに追加されていること。詳細については、「データソースを作成する」をご参照ください。
- IoT Platform インスタンスが存在するリージョンに ApsaraDB RDS インスタンスが作成されていること。インスタンスのデータベースエンジンは MySQL または Microsoft SQL Server で、インスタンスのネットワークタイプは VPC である必要があります。データベースとテーブルが作成されていること。 ApsaraDB RDS の使用方法の詳細については、ApsaraDB RDS ドキュメントをご参照ください。
背景情報
データ転送先を構成すると、以下の構成が自動的に完了します。その後、IoT Platform のルールエンジンを使用して、デバイスデータを ApsaraDB RDS インスタンスに転送できます。- IoT Platform は、ApsaraDB RDS インスタンスが存在する vSwitch の 2 つの IP アドレスを使用します。 vSwitch の IPv4 CIDR ブロックは、ApsaraDB RDS インスタンスのホワイトリストに追加されます。
- ApsaraDB RDS インスタンスが存在する VPC (仮想プライベートクラウド)に、マネージド セキュリティグループが作成されます。セキュリティグループのデフォルト名は sg-nsm- で始まります。
制限事項
- データ転送は、同じリージョンにある IoT Platform インスタンスと ApsaraDB RDS インスタンス間でサポートされています。たとえば、中国(上海)リージョンにある IoT Platform インスタンスのデータは、中国(上海)リージョンにある ApsaraDB RDS テーブルにのみ転送できます。
- VPC に存在する ApsaraDB RDS インスタンスにのみデータを転送できます。
- MySQL および SQL Server インスタンスにデータを転送できます。
- 標準データベースと権限データベース間でデータ転送がサポートされています。
- JSON 形式のデータのみ転送できます。
使用上の注意
データ転送機能の新バージョンまたは旧バージョンを使用して、データを ApsaraDB RDS に転送できます。旧バージョンのデータ転送機能の使用方法の例の詳細については、「ApsaraDB RDS へのデータ転送」をご参照ください。
データ転送先を作成する
- IoT Platform コンソール にログインします。
[概要] ページで、[すべての環境] をクリックします。 [すべての環境] タブで、管理するインスタンスを見つけ、インスタンス ID またはインスタンス名をクリックします。
- 左側のナビゲーションウィンドウで、 を選択します。
[データ転送] ページの右上隅にある [新しいバージョンに移動] をクリックして、新しいバージョンに移動します。
説明この手順を実行した場合、[メッセージ転送] > [データ転送] を選択すると、新しいバージョンの [データ転送] ページが表示されます。
- [データ転送先] タブをクリックします。このタブで、[データ転送先を作成] をクリックします。
[データ転送先を作成] ダイアログボックスで、データ転送先の名前を入力します。例:DataPurpose。その他のパラメーターを構成し、[OK] をクリックします。次の表にパラメーターを示します。
パラメーター
説明
操作
[apsaradb RDS にデータを保存] を選択します。リージョン
IoT Platform インスタンスが存在するリージョンを選択します。RDS インスタンス
データを転送する ApsaraDB RDS インスタンスを選択します。データベース
データベース名を入力します。説明 権限データベースを使用する場合は、データベース名を手動で指定する必要があります。アカウント
ApsaraDB RDS インスタンスのアカウントを入力します。このアカウントには、データベースに対する読み取りおよび書き込み権限が必要です。そうでない場合、ルールエンジンは ApsaraDB RDS インスタンスにデータを書き込むことができません。説明 ルールエンジンがアカウントを取得した後、ルールエンジンは指定されたルールに一致するデータのみをデータベースに書き込みます。追加の操作は実行されません。パスワード
ApsaraDB RDS インスタンスにログインするために使用するパスワードを入力します。テーブル名
データベースに作成されたテーブルの名前を入力します。ルールエンジンはテーブルにデータを書き込みます。ロール
IoT Platform に ApsaraDB RDS へのデータ書き込みを承認します。RAM (Resource Access Management)ロールがない場合は、[RAM ロールの作成] をクリックして RAM コンソールに移動し、RAM ロールを作成して、そのロールに権限を付与します。詳細については、「RAM ロールの作成」をご参照ください。
パーサーを構成して起動する
DataParser という名前のパーサーを作成します。詳細については、「パーサーを作成する」をご参照ください。
[パーサーの詳細] ページで、パーサーを作成済みデータソースに関連付けます。
ウィザードの [データソース] ステップで、[データソースの関連付け] をクリックします。
表示されるダイアログボックスで、データソース[データソース] ドロップダウンリストから [OK] を選択し、 をクリックします。
[パーサーの詳細] ページで、パーサーを作成済みデータ転送先に関連付けます。
ウィザードの [データ転送先] をクリックします。 [データ転送先] セクションで、[データ転送先の関連付け] をクリックします。
表示されるダイアログボックスで、データ目的[データ転送先] ドロップダウンリストから [OK] を選択し、 をクリックします。
[データ転送先] セクションで、[データ転送先 ID] を表示して保存します。この例では、ID は 1000 です。
パーサースクリプトを記述する際は、[データ転送先 ID] を使用する必要があります。
- [パーサーの詳細] ページで、[パーサー] をクリックします。
コードエディタにスクリプトを入力します。スクリプトの変更方法の詳細については、「スクリプト構文」をご参照ください。
関数パラメーターの詳細については、「関数」をご参照ください。
データの書き込み
// payload() 関数を呼び出して、デバイスから送信されたデータを取得し、JSON 形式に変換します。 var data = payload("json"); // 送信された温度と湿度の値をフィルタリングします。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // ApsaraDB RDS テーブルには、id (自動インクリメント プライマリキー)、deviceName、temperature、humidity、time の各列が含まれています。 writeRds() メソッドを呼び出して、column:value 形式で列に値を書き込むことができます。 // 温度値が 38 より大きい場合にトリガーされるルールを構成します。 if (t > 38) { writeRds(1000, {"deviceName":deviceName(), "temperature":t, "time":timestamp(), "humidity":h}); }データの更新
// payload() 関数を呼び出して、デバイスから送信されたデータを取得し、JSON 形式に変換します。 var data = payload("json"); // 送信された温度と湿度の値をフィルタリングします。 var h = data.items.Humidity.value; var t = data.items.Temperature.value; // ApsaraDB RDS テーブルには、id (自動インクリメント プライマリキー)、deviceName、temperature、humidity、time の各列が含まれています。 updateRds() メソッドを呼び出して、column:value 形式で対応する列の値を更新できます。 // deviceName を条件付き列として指定して、データを更新します。 var condition = "deviceName = '" + deviceName() +"'"; // 指定されたデバイスの温度値と湿度値を含むエントリのデータを更新します。条件に一致するデータが複数行ある場合、システムは結果の最初の行からデータを自動的に更新します。 limit パラメーターの値 1 は、システムが最初の行からデータを更新することを示します。 updateRds(1000, {"temperature":t, "time":timestamp(), "humidity":h}, condition, 1);
[デバッグ] をクリックします。表示されるダイアログボックスで、プロダクトとデバイスを選択し、トピックを指定して、ペイロードデータを入力し、スクリプトが想定どおりに実行されるかどうかを確認します。
次の図は、設定例を示しています。

updateRds() メソッドから次の情報が返された場合、スクリプトは想定どおりに実行されています。

[公開] をクリックします。
パーサー[データ転送] ページの データパーサー[開始] タブに移動します。 パーサーを見つけ、[アクション] 列の をクリックしてパーサーを起動します。
- ApsaraDB RDS コンソール にログインします。 [データセキュリティ] ページで、ホワイトリストを作成するか、ホワイトリストを表示します。パラメーターを設定すると、ルールエンジンは次の IP アドレスを ApsaraDB RDS ホワイトリストに追加します。その後、ルールエンジンは ApsaraDB RDS と通信できます。次の IP アドレスのいずれかがホワイトリストに表示されない場合は、手動で IP アドレスを追加する必要があります。詳細については、「ApsaraDB RDS とは」をご参照ください。
- 中国(上海):
100.104.53.192/26, 100.104.148.64/26, 100.104.6.192/26, 100.104.143.128/26, 100.104.76.0/24, 100.104.73.128/26, 100.104.200.64/26, 100.104.40.64/26, 100.104.3.0/26, 100.104.29.128/26, 100.104.121.0/26, and 100.104.84.64/26 - シンガポール(シンガポール): 100.104.106.0/24
- 米国(シリコンバレー):
100.104.8.0/24 - 米国(バージニア北部):
100.104.133.64/26 - ドイツ(フランクフルト):
100.104.160.192/26 - 日本(東京):
100.104.160.192/26

- 中国(上海):