注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
オントロジー SDK は、Compute Module 内で Foundry のオントロジーオブジェクトを操作するために使用できます。このページでは、必要な権限の付与、Compute Module の設定、およびローカルの Docker ビルドと Code Repositories の両方でオントロジー SDK を使用する方法を説明します。
Compute Module でオントロジー SDK を使用する前に、アプリケーションのサービスユーザーに必要なオントロジーリソースへのアクセス権を付与し、適切な資格情報を使用して Compute Module を設定する必要があります。
Developer Console のクライアントIDには、Compute Module が使用するオントロジーリソースへのアクセス権が必要です。
オントロジー SDK を使用するには、Compute Module にネットワークエグレスとアプリケーションの資格情報が必要です。

予約済みの環境変数である CLIENT_ID と CLIENT_SECRET を使用して、Compute Module のコードから資格情報にアクセスできます。
Copied!1 2 3from compute_modules.auth import retrieve_third_party_id_and_creds client_id, client_secret = retrieve_third_party_id_and_creds()
Copied!1 2String clientId = System.getenv("CLIENT_ID"); String clientSecret = System.getenv("CLIENT_SECRET");
このセクションでは、Python を使用したローカルの Docker ビルドで、オントロジー 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 27from 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"
ローカルでビルドする場合、オントロジー SDK ライブラリは Foundry のプライベートなアーティファクトリポジトリでホストされています。リポジトリで認証するには、Docker ビルド中に FOUNDRY_TOKEN シークレットを使用する必要があります。
Copied!1 2 3 4 5 6 7 8 9FROM --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 3docker 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 で 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 25import 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))
com.palantir.foundry:osdk-compute-module-demo-sdk などの Maven ロケーターが表示されます。

build.gradle ファイルを見つけます。Maven ロケーターを依存関係として追加します。

Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24import 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 がオントロジー SDK を使用する場合、Marketplace のインストール先プロジェクトのオントロジー RID が、FOUNDRY_ONTOLOGY_RID 環境変数を通じて Compute Module にリンクされます。これはインストール先プロジェクトのオントロジー RID であり、元のソースプロジェクトのものではありません。
すべてのオントロジーリソースのAPI名は、ソースと対象のオントロジー間で一致している必要があります。API名が一致していない場合、オントロジー SDK は対象のオントロジー内のリソースを解決できません。
Compute Module が正しいオントロジーを参照するように、オントロジー SDK クライアントの初期化時に FOUNDRY_ONTOLOGY_RID 環境変数を使用します。
Copied!1 2 3 4import os FOUNDRY_ONTOLOGY_RID = os.environ.get("FOUNDRY_ONTOLOGY_RID") CLIENT = FoundryClient(auth=AUTH, hostname=HOSTNAME, rid=FOUNDRY_ONTOLOGY_RID)
Copied!1 2 3const originalOntologyRid: string = "{YOUR_ORIGINAL_ONTOLOGY_RID}"; const ontologyRid: string = process.env.FOUNDRY_ONTOLOGY_RID ?? originalOntologyRid; const client: Client = createClient(url, ontologyRid, auth);