シナリオ: Oracle REST Data Services (ORDS)へのIoTデータの接続

Oracle REST Data Services (ORDS)を使用してInternet of Thingsデータを表示する場合は、次のステップに従って、ORDSを使用するためのアクセスを構成します。

IoTドメイン・データベース・スキーマには、IoTドメインに関連付けられたデジタル・ツイン・リソースのメタデータとデータが含まれます。

ORDSを使用するには、次の2つの方法があります。

  • Internet of ThingsデータAPIを使用して、IoTデータを表示します。詳細は、IoTデータAPIのドキュメントを参照してください。
  • ORDSを使用して、独自のInternet of ThingsデータでカスタムREST APIを構築および公開します。データベース内でロジックを構築し、RESTエンドポイントとしてCRUDを使用してデータベース操作およびオブジェクトを公開して、PL/SQLまたはSQL問合せに接続されたカスタムRESTfulマイクロサービスを作成します。

ORDSへのIoTデータ・アクセス。

IoTドメイン・グループを作成し、IoTドメインを作成したら、次のステップを実行して、ORDSのIoTデータを表示するように認証を構成できます。

ステップ1: アイデンティティ・ドメインの機密アプリケーションの作成

Identity and Access Management (IAM)サービスでは、管理者権限を持つターゲット・アイデンティティ・ドメインのクライアント資格証明を使用して機密アプリケーションを作成する必要があります。

  1. IoTテナンシで、管理者としてOracle Cloud Infrastructure Consoleにサインインします。
  2. ナビゲーション・メニューを開き、「アイデンティティおよびセキュリティ」を選択します。「アイデンティティ」で、「ドメイン」を選択します。
  3. 使用するアイデンティティ・ドメインの名前を選択します。使用するアイデンティティ・ドメインを検索するには、コンパートメントの変更が必要になる場合があります。または、追加のアイデンティティ・ドメインを作成する必要がある場合があります。機密アプリケーションを作成する場合は、デフォルト・ドメインではないアイデンティティ・ドメインを使用する必要があります。追加のアイデンティティ・ドメインを作成して、単一のテナンシ内で様々なユーザー・グループ、セキュリティ要件および環境を管理できます。詳細は、複数のアイデンティティ・ドメインの使用およびアイデンティティ・ドメインの管理を参照してください。

    コンパートメントは、IoTデータベースと同じリージョンにある必要があります。

    既存のドメインを使用する場合、または新しいドメインを作成する場合は、次の設定を使用します。
    • ドメインの種類: 無料
    • 「ドメイン管理者」で、「この電子メール・アドレスをユーザー名として使用」をオフにします。
    • 「ドメインの詳細」ページで、「設定」タブに移動し、「ドメイン設定- ロケール」「ドメイン設定の編集」を選択します。
    • クライアントがアイデンティティ・ドメインにログインせずに、アイデンティティ・ドメインの署名証明書へのクライアントのアクセスを構成するには:

      「署名証明書へのアクセス」で、「クライアント・アクセスの構成」オプションをオンにして、「変更の保存」を選択します。

      「ドメイン設定- アクセス署名証明書」で、「クライアント・アクセスの構成」有効になっていることがわかります。

  4. 「ドメイン」詳細ページで、「統合アプリケーション」タブを選択します。
  5. 「アプリケーションの追加」を選択し、「機密アプリケーション」「ワークフローの起動」の順に選択します。
  6. 「アプリケーションの追加」詳細ページで、アプリケーション名説明を入力します。「発行」を選択します。

    オプションの完全なリストについては、機密アプリケーションの追加を参照してください。

  7. 統合アプリケーションの詳細ページが開き、「アクション」メニューから「アクティブ化」を選択します。「アプリケーションのアクティブ化」を選択します。
  8. 「OAuth構成」タブを選択し、「OAuth構成の編集」を選択します。
  9. 「リソース・サーバー構成」で、「このアプリケーションをリソース・サーバーとして今すぐ構成」を選択します。
  10. 「プライマリ対象者」/<domain-group-short-id>と入力します。「発行」を選択します。

    データ・ホストは、IoTドメイン・グループから取得され、ドメイン・グループの短縮IDが含まれます。

    IoTドメイン・グループのデータ・ホストを検索するには、oci iot domain-group getコマンドを使用して<iot-domain-group-OCID>をIoTドメイン・グループのOCIDに置き換え、IoTドメイン・グループの詳細(ドメイン・グループのデータ・ホストを含む)をドメイン・グループの短縮IDで取得します。

    oci iot domain-group get --iot-domain-group-id <iot-domain-group-OCID>

    レスポンスでは、プライマリ・オーディエンスとして入力する必要があるドメイン・グループ短縮IDを確認できます。

    data-host:<domain-group-short-id>.data.iot.<region>.oci.oraclecloud.com

    詳細は、「IoTドメイン・グループの詳細の取得」を参照してください。

    ノート

    /<domain-group-short-id>は小文字にする必要があります。
  11. スコープを有効にするには、「スコープの追加」を選択します。
  12. 「スコープの追加」ページで、/iot/<domain-short-id>という形式を使用して「スコープ」を入力します。「追加」を選択します。

    デバイス・ホストは、IoTドメインから取得され、ドメイン短縮IDが含まれます。

    IoTドメインのデバイス・ホストを検索するには、次のコマンドを使用し、<iot-domain-OCID>をIoTドメインのOCIDに置き換えて、IoTドメインの詳細(ドメインのデバイス・ホストを含む)をドメイン短縮IDで取得します。

    oci iot domain get --iot-domain-id <iot-domain-OCID>

    レスポンスでは、スコープとして入力する必要があるドメイン短縮IDを確認できます。

    device-host:<domain-short-id>.device.iot.<region>.oci.oraclecloud.com

    詳細は、「IoTドメインの詳細の取得」を参照してください。

  13. 「クライアント構成」で、「このアプリケーションをクライアントとして今すぐの構成します」を選択します。
  14. 「認可」で、次のチェック・ボックスを選択します。
    • リソース所有者
    • クライアント資格証明
    • JWT表明
    • リフレッシュ・トークン
  15. 「許可された操作」で、「イントロスペクト」を選択して、アプリケーションのトークン・イントロスペクション・エンドポイントへのアクセスを許可します。
  16. 「トークン保険契約」で、「すべて」を選択し、「発行」を選択します。
  17. OAuth構成ページの「OAuth保護する必要があるアプリケーションAPIの構成」の下に、/domaingroupshortidおよび「スコープ」の下に/iot/domainshortidが表示されているプライマリ・オーディエンスが表示されます。
  18. 「一般情報」の下に、「クライアントID」が表示されます。
  19. 「クライアント・シークレット」の下に、「シークレットの表示」が表示され、値は非表示になります。
  20. ページ上部で、「ユーザー」タブを選択し、「ユーザーの割当て」を選択します。
  21. この統合アプリケーションに割り当てる「ユーザー名」の横にあるチェック・ボックスを選択します。「割当て」を選択します。
  22. 「統合アプリケーション」を選択して、ドメインの詳細ページに戻ります。
  23. ドメインの詳細ページで、「ユーザー管理」タブを選択します。
  24. 「グループの作成」を選択します。
  25. 「グループの作成」ページで、名前にオプションの説明を入力します。機密情報を入力しないでください。
  26. グループに追加するユーザーの隣にあるチェック・ボックスを選択します。「作成」を選択します。
  27. 「グループ」を選択してドメインの「詳細」ページに戻り、「統合アプリケーション」タブを選択します。
  28. 前のステップで作成した統合アプリケーションを選択します。
  29. 「グループ」タブを選択します。「グループの割当て」を選択します。
  30. この統合アプリケーションへのアクセス権を割り当てるグループの横にあるチェック・ボックスを選択します。「割当て」を選択します。
  31. 「ドメインの詳細」ページで、「ドメインURL」をコピーします。
  32. oci iot domain configure-ords-data-accessコマンドおよび必須パラメータを使用して、Oracle REST Data Services (ORDS)へのIoTドメインのアクセスを構成します。

    <idcs-<unique-id>.identity.oraclecloud.com>を、https://またはポート番号なしで、ドメイン詳細ページの「ドメインURL」に置き換えます。

    oci iot domain configure-ords-data-access --iot-domain-id <iot-domain-OCID> --db-allowed-identity-domain-host <idcs-<unique-id>.identity.oraclecloud.com>

    詳細は、「IoTドメインのデータ・アクセスの構成」を参照してください。

  33. オプション。操作の進行状況を確認する場合は、作業リクエスト・コマンドを使用します。

    oci iot work-request getコマンドおよび必須パラメータを使用して、作業リクエストの詳細を取得します:

    oci iot work-request get --work-request-id <work-request-id>

    詳細は、「作業リクエストの詳細の取得」を参照してください。

  34. オプション。IoTドメインの詳細を確認する場合は、oci iot domain getコマンドおよび必須パラメータを使用して、IoTドメインの詳細を取得します:

    oci iot domain get --iot-domain-id <iot-domain-OCID>
    このレスポンス例では、IoTドメインのデータ・アクセス詳細がアイデンティティ・ドメインURL形式を使用していることを確認できます:

    <idcs-<unique-id>.identity.oraclecloud.com>

    詳細は、「IoTドメインの詳細の取得」を参照してください。
    {
      "compartment-id": "<compartment-OCID>",
      "data-retention-periods-in-days": {
        "historized-data": 30,
        "raw-command-data": 16,
        "raw-data": 16,
        "rejected-data": 16
      },
      "db-allow-listed-identity-group-names": ["<tenancy-OCID>:<identity-domain-name>/<identity-group-name>"],
      "db-allowed-identity-domain-host": "<idcs-<unique-id>.identity.oraclecloud.com>",
      "defined-tags": {
        "Oracle-Tags": {
          "CreatedBy": "default/user",
          "CreatedOn": "2025-08-05T18:02:51.633Z"
        }
      },
      "description": <your-description>,
      "device-host": "<domain-short-id>.device.iot.<region>.oci.oraclecloud.com",
      "display-name": "iot-domain-sample",
      "freeform-tags": {},
      "id": "<iot-domain-OCID>",
      "iot-domain-group-id": "<iot-domain-group-OCID>",
      "lifecycle-state": "ACTIVE",
      "system-tags": {},
      "time-created": "2025-08-05T18:02:53.418000+00:00",
      "time-updated": "2025-08-05T18:04:42.585000+00:00"
    },
    "etag": "<unique-id>"

ステップ2: oAuthアクセス・トークンの取得

次のように定義されたユーザーの資格証明およびスコープを使用して、クライアントIDおよび統合アプリケーションのシークレットを使用してアクセス権を付与するパスワードを含むoAuthアクセス・トークンを取得します。

'scope=/<domain-group-short-id>/iot/<domain-short-id>'

このCURLコマンドを使用して、oAuthアクセス・トークンを生成します。<secret-from-integrated-application>を、前のステップで作成した統合アプリケーションのシークレットに置き換えます。

詳細は、「cURLの使用」を参照してください

たとえば:
curl --request POST 
    --url 'https://idcs-<identity-hostname>.identity.oraclecloud.com:443/oauth2/v1/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --header 'Authorization: Basic <secret-from-integrated-application>' \
    --data 'scope=/<domain-group-short-id>/iot/<domain-short-id>' \
    --data 'grant_type=password' \
    --data 'password=<your-password>' \
    --data username=user@oracle.com
管理者ユーザーで、ユーザーのパスワードをリセットする必要がある場合:
  1. IoTテナンシで、管理者としてOracle Cloud Infrastructure Consoleにサインインします。
  2. ナビゲーション・メニューを開き、「アイデンティティおよびセキュリティ」を選択します。「アイデンティティ」で、「ドメイン」を選択します。
  3. 使用するドメインを検索し、ドメイン名を選択します。
  4. 「ドメインの詳細」ページで、「ユーザー管理」タブを選択します。パスワードをリセットするユーザーを検索し、行の最後に「アクション」メニューを選択し、「パスワードのリセット」を選択します。

詳細は、「ユーザーのパスワードのリセット」を参照してください。

これで、IoT ORDSデータAPIを使用してデータベースからIoTデータを取得でき、ORDSを使用してIoTデータでREST APIを構築できます。

ステップ3: Internet of Things ORDSデータAPIの起動

データベースからInternet of Thingsデータを取得する場合は、このリクエストを使用してInternet of ThingsデータAPIを起動します。

次に、RAWデータを取得する例を示します。
curl -H "Authorization: Bearer <token>" \
     -X GET "https://<domain-group-short-id>.data.iot.<region>.oci.oraclecloud.com/ords/<domain-short-id>/20250531/rawData?q={\"$and\":[{\"digital_twin_instance_id\":\"<iot-digital-twin-OCID>\"}]}"