注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

オントロジー SDK の統合

オントロジー SDK は、Compute Module 内で Foundry のオントロジーオブジェクトを操作するために使用できます。このページでは、必要な権限の付与、Compute Module の設定、およびローカルの Docker ビルドと Code Repositories の両方でオントロジー SDK を使用する方法を説明します。

前提条件

Compute Module でオントロジー SDK を使用する前に、アプリケーションのサービスユーザーに必要なオントロジーリソースへのアクセス権を付与し、適切な資格情報を使用して Compute Module を設定する必要があります。

アプリケーションのサービスユーザーにアクセス権を付与する

Developer Console のクライアントIDには、Compute Module が使用するオントロジーリソースへのアクセス権が必要です。

  1. Developer Console の[OAuth と制限]タブに移動し、リソースと操作の制限セクションでアクセスのトラブルシューティングを選択します。
  2. アクセスするリソースのセキュリティタブで、クライアントIDを検索してユーザーを追加します。
  3. データセットを元にしているオントロジーオブジェクトの場合、オブジェクトセットとその元になるデータセットの両方にアクセス権を付与する必要がある場合があります。アクセス設定に関する最新のガイダンスについては、サードパーティアプリケーションのドキュメントを参照してください。

Compute Module を設定する

オントロジー SDK を使用するには、Compute Module にネットワークエグレスとアプリケーションの資格情報が必要です。

  1. エグレスはデフォルトで無効になっているため、Foundry のホスト名に対応するソースを追加します。
  2. Compute Module の設定タブから、アプリケーションの権限を選択します。実行モードの詳細については、実行モードのドキュメントを参照してください。
  3. ほかのアプリの資格情報を使用を選択します。
  4. Developer Console のクライアントIDとクライアントシークレットを入力し、適用を選択して、設定を保存します。

クライアントIDとクライアントシークレットの項目があるアプリケーション資格情報の設定パネル。

予約済みの環境変数である CLIENT_ID と CLIENT_SECRET を使用して、Compute Module のコードから資格情報にアクセスできます。

Copied!
1 2 3 from compute_modules.auth import retrieve_third_party_id_and_creds client_id, client_secret = retrieve_third_party_id_and_creds()
Copied!
1 2 String clientId = System.getenv("CLIENT_ID"); String clientSecret = System.getenv("CLIENT_SECRET");

ローカルの Docker ビルドでオントロジー SDK を使用する(Python)

このセクションでは、Python を使用したローカルの Docker ビルドで、オントロジー SDK を利用する Compute Module を作成する手順を説明します。

オントロジー SDK をセットアップする

  1. Developer Console でアプリケーションを作成し、オントロジー SDK を生成します。言語として Python、アプリケーションの種類としてバックエンドサービス、権限モデルとしてアプリケーションの権限を選択します。
  2. Developer Console に表示されるコマンドを使用して、pip でオントロジー SDK ライブラリをインストールします。

Compute Module のコードを記述する

次の例は、Compute Module の関数内でオントロジー SDK を使用して認証し、オントロジーオブジェクトにクエリを実行する方法を示しています。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 from demo_python_sdk import FoundryClient, ConfidentialClientAuth import logging import os from compute_modules.logging import get_logger, set_internal_log_level from compute_modules.auth import retrieve_third_party_id_and_creds from compute_modules.annotations import function CLIENT_ID, CLIENT_CREDS = retrieve_third_party_id_and_creds() set_internal_log_level(logging.INFO) logger = get_logger(__name__) logger.setLevel(logging.INFO) foundry_url = os.environ["FOUNDRY_URL"] @function def get_object(context, event): auth = ConfidentialClientAuth( client_id=CLIENT_ID, client_secret=CLIENT_CREDS, hostname=foundry_url, should_refresh=True, ) client = FoundryClient(auth=auth, hostname=foundry_url) EmployeeObject = client.ontology.objects.Employee logger.info(EmployeeObject.take(1)) return "Success"

Dockerfile を作成する

ローカルでビルドする場合、オントロジー SDK ライブラリは Foundry のプライベートなアーティファクトリポジトリでホストされています。リポジトリで認証するには、Docker ビルド中に FOUNDRY_TOKEN シークレットを使用する必要があります。

Copied!
1 2 3 4 5 6 7 8 9 FROM --platform=linux/amd64 python:3.12 COPY requirements.txt . RUN --mount=type=secret,id=FOUNDRY_TOKEN,env=FOUNDRY_TOKEN \ pip install -r requirements.txt --upgrade \ --extra-index-url "https://user:$FOUNDRY_TOKEN@yourenrollment.palantirfoundry.com/artifacts/api/repositories/ri.artifacts.main.repository.REDACTED/contents/release/pypi/simple" \ --extra-index-url "https://user:$FOUNDRY_TOKEN@yourenrollment.palantirfoundry.com/artifacts/api/repositories/ri.foundry-sdk-asset-bundle.main.artifacts.repository/contents/release/pypi/simple" COPY src . USER 5000 ENTRYPOINT ["python", "app.py"]

yourenrollment.palantirfoundry.com を実際の Foundry エンロールメント URL に置き換え、リポジトリの RID を Developer Console に表示される値に置き換えてください。

イメージをビルドしてプッシュする

次のコマンドを使用し、FOUNDRY_TOKEN をビルドシークレットとして渡して Docker イメージをビルドします。

Copied!
1 2 3 docker buildx build --platform=linux/amd64 \ --secret id=FOUNDRY_TOKEN,env=FOUNDRY_TOKEN \ -t yourenrollment-container-registry.palantirfoundry.com/hello-world:0.0.1 .

Docker イメージのビルドと公開の詳細については、コンテナのドキュメントを参照してください。

Code Repositories でオントロジー SDK を使用する

Code Repositories で Compute Module を開発している場合、オントロジー SDK をローカルにインストールする代わりに、ライブラリの依存関係として追加できます。

Python

  1. Developer Console でアプリケーションを作成し、オントロジー SDK を生成します。言語として Python、アプリケーションの種類としてバックエンドサービス、権限モデルとしてアプリケーションの権限を選択します。Conda SDK が作成されます。

Python の Compute Module 用に Developer Console で生成された Conda SDK。

  1. Python のコードリポジトリでライブラリパネルを開き、前のステップで生成した Conda SDK を検索して追加します。

Conda SDK の検索結果を表示する Python のコードリポジトリのライブラリパネル。

  1. Compute Module のコードでオントロジー SDK を使用します。
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import os from osdk_compute_module_demo_sdk import ConfidentialClientAuth, FoundryClient from compute_modules.auth import retrieve_third_party_id_and_creds from compute_modules.annotations import function foundry_url = os.environ["FOUNDRY_URL"] CLIENT_ID, CLIENT_CREDS = retrieve_third_party_id_and_creds() @function def print_object(context, event): auth = ConfidentialClientAuth( client_id=CLIENT_ID, client_secret=CLIENT_CREDS, hostname=foundry_url, should_refresh=True, scopes=[ "api:ontologies-read", "api:ontologies-write", "api:mediasets-read", "api:mediasets-write", ], ) client = FoundryClient(auth=auth, hostname=foundry_url) EmployeeObject = client.ontology.objects.Employee return str(EmployeeObject.take(1))

Java

  1. Developer Console でアプリケーションを作成し、オントロジー SDK を生成します。言語として Java、アプリケーションの種類としてバックエンドサービス、権限モデルとしてアプリケーションの権限を選択します。com.palantir.foundry:osdk-compute-module-demo-sdk などの Maven ロケーターが表示されます。

Java の Compute Module 用に Developer Console で生成された Maven SDK ロケーター。

  1. Java のコードリポジトリでライブラリパネルを開き、前のステップで生成した Maven SDK を検索して追加します。

Maven SDK の検索結果を表示する Java のコードリポジトリのライブラリパネル。

  1. 非表示ファイルの表示を切り替え、デプロイ済みアプリケーションの定義ディレクトリにある build.gradle ファイルを見つけます。Maven ロケーターを依存関係として追加します。

build.gradle ファイルにアクセスするための、Java のコードリポジトリの非表示ファイル表示切り替え。

オントロジー SDK の Maven 依存関係を追加した build.gradle ファイル。

  1. Compute Module のコードでオントロジー SDK を使用します。
Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 import com.palantir.foundry.osdk_compute_module_demo_sdk.FoundryClient; import com.palantir.foundry.osdk_compute_module_demo_sdk.objects.Employee; import com.palantir.osdk.api.Auth; import com.palantir.osdk.api.auth.ConfidentialClientAuth; import com.palantir.osdk.internal.api.FoundryConnectionConfig; import java.util.List; static String return_object() { Auth auth = ConfidentialClientAuth.builder() .clientId(System.getenv("CLIENT_ID")) .clientSecret(System.getenv("CLIENT_SECRET")) .build(); FoundryClient client = FoundryClient.builder() .auth(auth) .connectionConfig(FoundryConnectionConfig.builder() .foundryUri("https://yourenrollment.palantirfoundry.com") .build()) .build(); List<Employee> objects = client.ontology().objects().Employee() .fetchStream().toList(); return objects.get(0).toString(); }

Marketplace からインストールした Compute Module

Marketplace 経由でインストールした Compute Module がオントロジー SDK を使用する場合、Marketplace のインストール先プロジェクトのオントロジー RID が、FOUNDRY_ONTOLOGY_RID 環境変数を通じて Compute Module にリンクされます。これはインストール先プロジェクトのオントロジー RID であり、元のソースプロジェクトのものではありません。

すべてのオントロジーリソースのAPI名は、ソースと対象のオントロジー間で一致している必要があります。API名が一致していない場合、オントロジー SDK は対象のオントロジー内のリソースを解決できません。

Compute Module が正しいオントロジーを参照するように、オントロジー SDK クライアントの初期化時に FOUNDRY_ONTOLOGY_RID 環境変数を使用します。

Copied!
1 2 3 4 import os FOUNDRY_ONTOLOGY_RID = os.environ.get("FOUNDRY_ONTOLOGY_RID") CLIENT = FoundryClient(auth=AUTH, hostname=HOSTNAME, rid=FOUNDRY_ONTOLOGY_RID)
Copied!
1 2 3 const originalOntologyRid: string = "{YOUR_ORIGINAL_ONTOLOGY_RID}"; const ontologyRid: string = process.env.FOUNDRY_ONTOLOGY_RID ?? originalOntologyRid; const client: Client = createClient(url, ontologyRid, auth);