メタデータ API は、Paimon が提供する、Data Lake Formation (DLF) のメタデータにアクセスするための標準的なオープンソースのインターフェイスです。メタデータ API の SDK の依存関係には Paimon 関連のクラスのみが含まれているため、アプリケーションの依存関係と競合しません。
アクセスエンドポイントの選択
DLF メタデータ API は、2 つのエンドポイントで利用できます。クライアントが実行される場所に基づいてエンドポイントを選択します。
-
DLF VPC エンドポイント (推奨) — DLF ホワイトリストに含まれる VPC からの低レイテンシーアクセスを提供します。このトピックの例では、DLF VPC エンドポイントを使用します。
-
Alibaba Cloud OpenAPI エンドポイント — パブリックネットワークアクセスを提供します。これは、クロスリージョンアクセスやローカルデバッグなどのシナリオに対応します。OpenAPI エンドポイントの署名サポートには、バージョン 1.4 以降の Paimon クライアントが必要です。このバージョンは、このトピックの Maven 依存関係で使用されている SDK バージョンよりも新しいです。
前提条件
VPC をホワイトリストに追加したり、ロールに権限を付与したり、Maven の依存関係を追加したり、DLF メタデータ API を呼び出したりする前に、次の要件が満たされていることを確認してください。
-
ネットワークアクセス — デフォルトでは、DLF メタデータ API は、ホワイトリストに登録されている VPC からのみアクセスできます。DLF VPC エンドポイント経由で DLF にアクセスする場合、クライアントはホワイトリストに登録された VPC で実行する必要があります。
-
ランタイム環境とロール — Elastic Compute Service (ECS) ロール認証を使用する場合、クライアントは ECS ロールに紐付けられている ECS インスタンスまたは E-MapReduce (EMR) クラスターノード上で実行されます。
-
DLF カタログ — DLF カタログが利用可能で、そのカタログに対する権限が ECS ロールに付与されています。
-
認可資格情報 — ECS ロールに Resource Access Management (RAM) 権限を付与するために必要な Alibaba Cloud アカウントまたは RAM 管理者の資格情報を持っている必要があります。
-
クライアントバージョン — Paimon クライアントは、前のセクションで説明したように、使用するエンドポイントのバージョン要件を満たしています。
VPC ホワイトリストの設定
DLF をアクティブ化すると、システムは現在のリージョンの VPC ID をユーザーレベルのホワイトリストに自動的に同期します。後で VPC を追加するには、DLF コンソールでその VPC ID を追加します。
-
Data Lake Formation (DLF) コンソールにログインします。
-
左側のナビゲーションペインで、System & Security をクリックします。
-
System & Security タブで、Add VPC をクリックします。
-
表示されたダイアログボックスで、DLF メタデータ API にアクセスする VPC の ID を入力し、[OK] をクリックします。
ロールへの DLF 権限の付与
ECS ロールに 2 つの権限セットを付与します:RAM コンソールでの RAM 権限と、DLF コンソールでのカタログ権限です。たとえば、EMR クラスターの場合、ロールは AliyunECSInstanceForEMRRole です。
-
ECS ロールに RAM 権限を付与します。
-
Alibaba Cloud アカウントまたは RAM 管理者として Resource Access Management (RAM) コンソールにログインします。
-
[Identities] > [Roles] の順に選択し、ECS ロールを検索します。
-
[Actions] 列で、[Add Permissions] をクリックします。
-
[Policies] で
AliyunDLFFullAccessを検索して選択し、[OK] をクリックします。
-
-
ECS ロールに DLF 権限を付与します。
-
Data Lake Formation (DLF) コンソールにログインします。
-
Catalogs ページで、対象のカタログの名前をクリックします。
-
Permissions タブで、Grant Permissions をクリックします。
-
認可ページで、次のパラメーターを設定し、[OK] をクリックします。
-
[Principal]:RAM ユーザーまたは RAM ロールを選択します。
-
[Select DLF User]:ドロップダウンリストから [ECS Role] を選択します。
説明ユーザーのドロップダウンリストに [ECS Role] が表示されない場合は、System & Security > Access Control > Users の順に選択し、Sync Users をクリックします。
-
[Predefined Permission Type]:[Data Editor] を選択します。
-
-
REST API クライアントの作成
Java アプリケーションから DLF メタデータ API を呼び出すために、REST API クライアントを作成します。
Maven 依存関係の追加
Java プロジェクトで API SDK を参照するには、次の Maven 依存関係を追加します。
<dependency>
<groupId>org.apache.paimon</groupId>
<artifactId>paimon-api</artifactId>
<version>1.3.0</version>
</dependency>
JAR ファイルを直接ダウンロードすることもできます: paimon-api-1.3.0.jar。
クライアントの初期化と API の呼び出し
ランタイム環境に基づいて、DLF REST サービスの認証方法を選択します。
-
ECS ロール (推奨) — クライアントが実行されている ECS インスタンス経由で一時的なトークンを発行します。次の例では、この方法を使用します。
-
AccessKey ペア —
RESTCatalogOptionsでDLF_ACCESS_KEY_IDとDLF_ACCESS_KEY_SECRETを設定することで、DLF REST サービスに直接接続します。ランタイム環境で ECS ロールが利用できない場合は、この方法を使用します。
次の例では、ECS ロールで認証する RESTApi クライアントを作成し、データベース内のテーブルを一覧表示します。エンドポイント、カタログ名 dlf_test、データベース名 my_database を、それぞれご自身のリージョンエンドポイント、DLF カタログ、データベースの値に置き換えてください。
import org.apache.paimon.options.Options;
import org.apache.paimon.rest.RESTApi;
import static org.apache.paimon.options.CatalogOptions.WAREHOUSE;
import static org.apache.paimon.rest.RESTCatalogOptions.DLF_TOKEN_LOADER;
import static org.apache.paimon.rest.RESTCatalogOptions.TOKEN_PROVIDER;
import static org.apache.paimon.rest.RESTCatalogOptions.URI;
public class RESTApiExample {
public static void main(String[] args) {
Options options = new Options();
options.set(URI, "http://cn-hangzhou-vpc.dlf.aliyuncs.com");
options.set(WAREHOUSE, "dlf_test");
options.set(TOKEN_PROVIDER, "dlf");
options.set(DLF_TOKEN_LOADER, "ecs");
RESTApi api = new RESTApi(options);
System.out.println(api.listTables("my_database"));
}
}
この例では、指定されたデータベースに対して listTables 呼び出しが返す結果を出力します。
次の表にパラメーターを示します。
| パラメーター | 説明 | 必須 | 例 |
| URI | DLF REST カタログサーバーへのアクセスに使用される URI。形式は http://[region-id]-vpc.dlf.aliyuncs.com です。リージョン ID と OpenAPI エンドポイントについては、「エンドポイント」をご参照ください。 |
はい | http://cn-hangzhou-vpc.dlf.aliyuncs.com |
| WAREHOUSE | DLF カタログの名前。 | はい | dlf_test |
| TOKEN_PROVIDER | トークンプロバイダー。値を dlf に設定します。 |
はい | dlf |
| DLF_TOKEN_LOADER | トークンローダー。ECS インスタンス経由で一時的なトークンを発行するには、値を ecs に設定します。ECS ロールで認証する場合に、このパラメーターを設定します。 |
いいえ | ecs |
| DLF_ACCESS_KEY_ID | ECS ベースの認証を使用する代わりに、DLF REST サービスに直接接続するために使用される AccessKey ID。このパラメーターは RESTCatalogOptions で設定します。 |
いいえ | - |
| DLF_ACCESS_KEY_SECRET | ECS ベースの認証を使用する代わりに、DLF REST サービスに直接接続するために使用される AccessKey Secret。このパラメーターは RESTCatalogOptions で設定します。 |
いいえ | - |