デフォルトでは、DLF は VPC 内からのみアクセス可能です。ローカルの開発環境やリージョン間のネットワークなど、インターネット経由で DLF データカタログに接続するには、DLF 管理者がパブリックネットワークアクセスを有効にし、クライアントを適宜設定する必要があります。このトピックでは、パブリックネットワークアクセスを有効にし、Paimon と Iceberg 両方の接続を設定する方法について説明します。
制限事項
パブリックネットワークアクセスは現在パブリックベータであり、すべてのユーザーが利用できます。
パブリックベータの SLA とパフォーマンス:パブリックベータ期間中は SLA は提供されません。コアサービスの機能は、引き続きすべて利用可能です。パブリックネットワークアクセスは、インターネットリンクの変動性の影響を受け、VPC アクセスと比較してレイテンシーが高く、スループットが低くなります。このモードは、大規模で同時実行数の多い本番ワークロードを対象としていません。
Paimon:Paimon クライアント (Java または Python) のバージョン 1.4.1 以降を使用してください。
Iceberg:
dlf-iceberg-pluginが必要です。バージョン要件は次のとおりです。Apache Iceberg:1.10.1
dlf-iceberg-plugin:1.2.0 以降
命名規則:データベース名およびテーブル名には、文字、数字、および特定の記号のみがサポートされます。
パラメーター要件:パブリックネットワーク経由で DLF にアクセスする場合、OSS パブリック エンドポイントを設定する必要があります。
料金
パブリックネットワークアクセスは、パブリックベータ期間中は無料です。ベータ期間の終了後、有料になります。料金の詳細は別途発表されます。
パブリックネットワークアクセスの有効化
セキュリティ上の理由から、DLF へのパブリックネットワークアクセスはデフォルトで無効になっています。有効にするには、DLF 管理者が次の手順を実行します。
DLF コンソールにログインします
左側メニューで、Catalogs を選択します。
ターゲットのデータカタログをクリックし、Catalog Configuration タブをクリックします。
Advanced Settings セクションで、
enable.openapiをtrueに設定します。
パブリックネットワークアクセスの設定
パブリックネットワーク経由での Paimon テーブルへのアクセス
次の例は、パブリックネットワーク経由で DLF Paimon カタログに接続する方法を示しています。
エンドポイントの形式:https://dlfnext.${region-id}.aliyuncs.com。各リージョンのエンドポイントについては、「リージョンとエンドポイント」をご参照ください。
Java
Options options = new Options();
// DLF パブリックネットワーク エンドポイントを設定します
options.set("uri", "https://dlfnext.cn-hangzhou.aliyuncs.com");
options.set("warehouse", "paimon_test");
options.set("dlf.region", "cn-hangzhou");
options.set("dlf.access-key-id", "<お使いの AccessKey ID>");
options.set("dlf.access-key-secret", "<お使いの AccessKey Secret>");
// OSS パブリックネットワーク エンドポイントを設定する必要があります
options.set("dlf.oss-endpoint", "oss-cn-hangzhou.aliyuncs.com");
options.set("token.provider", "dlf");
Catalog restCatalog = new RESTCatalog(CatalogContext.create(options));次の表に、Java の設定パラメーターを示します。
パラメーター | 説明 | 例 |
uri | DLF OpenAPI のパブリックネットワーク エンドポイント。各リージョンの値については、「リージョンとエンドポイント」をご参照ください。 | https://dlfnext.cn-hangzhou.aliyuncs.com |
warehouse | DLF データカタログの名前。 | paimon_test |
dlf.region | DLF サービスのリージョン ID。 | cn-hangzhou |
dlf.access-key-id | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。 | - |
dlf.access-key-secret | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。 | - |
dlf.oss-endpoint | OSS パブリックネットワーク エンドポイント。詳細については、OSS ドキュメントの「リージョンとエンドポイント」をご参照ください。 | oss-cn-hangzhou.aliyuncs.com |
token.provider | 認証プロバイダー。 | dlf |
Python
from pypaimon import CatalogFactory
options = {
# Python クライアントはメタストア タイプとして rest を指定する必要があります
'metastore': 'rest',
'uri': 'https://dlfnext.cn-hangzhou.aliyuncs.com',
'warehouse': 'paimon_test',
'dlf.region': 'cn-hangzhou',
'dlf.access-key-id': '<お使いの AccessKey ID>',
'dlf.access-key-secret': '<お使いの AccessKey Secret>',
# STS 一時的な認証情報を使用する場合は、このパラメーターを設定します
'dlf.security-token': '<お使いのセキュリティトークン>',
'dlf.oss-endpoint': 'oss-cn-hangzhou.aliyuncs.com',
'token.provider': 'dlf',
}
rest_catalog = CatalogFactory.create(options)次の表に、Python の設定パラメーターを示します。
パラメーター | 説明 | 例 |
metastore | メタストアのタイプ。固定値: | rest |
uri | DLF OpenAPI のパブリックネットワーク エンドポイント。各リージョンの値については、「リージョンとエンドポイント」をご参照ください。 | https://dlfnext.cn-hangzhou.aliyuncs.com |
warehouse | DLF データカタログの名前。 | paimon_test |
dlf.region | DLF サービスのリージョン ID。 | cn-hangzhou |
dlf.access-key-id | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。 | - |
dlf.access-key-secret | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。 | - |
dlf.security-token | STS セキュリティトークン。長期的な AccessKey ペアを使用する場合は不要です。 | - |
dlf.oss-endpoint | OSS のパブリックネットワーク エンドポイント。詳細については、OSS ドキュメントの「リージョンとエンドポイント」をご参照ください。 | oss-cn-hangzhou.aliyuncs.com |
token.provider | 認証プロバイダー。 | dlf |
パブリックネットワーク経由での Iceberg テーブルへのアクセス
次の例は、パブリックネットワーク経由で DLF Iceberg カタログに接続する方法を示しています。
エンドポイントの形式:https://dlfnext.${region-id}.aliyuncs.com/iceberg (Paimon REST パブリック エンドポイントに /iceberg パスを追加したもの)。各リージョンのエンドポイントについては、「リージョンとエンドポイント」をご参照ください。
Maven 依存関係
パブリックネットワーク認証とファイル IO は、DLF Maven リポジトリから入手できる dlf-iceberg-plugin によって処理されます。OSS データの読み書きには JindoSDK が必要です。プロジェクトに次の依存関係を追加します。
<properties>
<iceberg.version>1.10.1</iceberg.version>
<dlf-iceberg-plugin.version>1.2.0</dlf-iceberg-plugin.version>
<jindo.version>6.7.8</jindo.version>
</properties>
<repositories>
<!-- dlf-iceberg-plugin のリポジトリ -->
<repository>
<id>dlf-mvn-repo</id>
<url>https://dlf-mvn-repo.oss-cn-shanghai.aliyuncs.com/mvn-repo/release/</url>
</repository>
<!-- JindoSDK リポジトリ -->
<repository>
<id>jindodata</id>
<url>https://jindodata-binary.oss-cn-shanghai.aliyuncs.com/mvn-repo/</url>
</repository>
</repositories>
<dependencies>
<!-- DLF Iceberg プラグイン:DlfRESTCatalog + RESTDLFAuthManager パブリックネットワーク認証 + DlfFileIO -->
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>dlf-iceberg-plugin-1.10.1</artifactId>
<version>${dlf-iceberg-plugin.version}</version>
</dependency>
<!-- Apache Iceberg -->
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-core</artifactId>
<version>${iceberg.version}</version>
</dependency>
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-data</artifactId>
<version>${iceberg.version}</version>
</dependency>
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-parquet</artifactId>
<version>${iceberg.version}</version>
</dependency>
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-aws-bundle</artifactId>
<version>${iceberg.version}</version>
</dependency>
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-aws</artifactId>
<version>${iceberg.version}</version>
</dependency>
<!-- OSS データの読み書き (JindoSDK) -->
<dependency>
<groupId>com.aliyun.jindodata</groupId>
<artifactId>jindo-sdk</artifactId>
<version>${jindo.version}</version>
</dependency>
<dependency>
<groupId>com.aliyun.jindodata</groupId>
<artifactId>jindo-core</artifactId>
<version>${jindo.version}</version>
</dependency>
</dependencies>Java
Map<String, String> options = new HashMap<>();
options.put("uri", "https://dlfnext.cn-hangzhou.aliyuncs.com/iceberg");
options.put("warehouse", "iceberg_test");
// パブリックネットワーク認証:RESTDLFAuthManager
options.put("rest.auth.type", "org.apache.iceberg.rest.auth.RESTDLFAuthManager");
options.put("rest.signing-region", "cn-hangzhou");
options.put("rest.access-key-id", "<お使いの AccessKey ID>");
options.put("rest.secret-access-key", "<お使いの AccessKey Secret>");
// options.put("rest.session-token", "<お使いのセキュリティトークン>"); // STS 一時的な認証情報を使用する場合に設定します
options.put("io-impl", "org.apache.iceberg.rest.DlfFileIO");
options.put("dlf.oss-endpoint", "oss-cn-hangzhou.aliyuncs.com");
// dlf-iceberg-plugin によって提供される DlfRESTCatalog を使用します
RESTCatalog catalog = new org.apache.iceberg.rest.DlfRESTCatalog();
catalog.initialize("dlf", options);次の表に、設定パラメーターを示します。
パラメーター | 説明 | 例 |
uri | DLF Iceberg のパブリックネットワーク エンドポイント。形式: | https://dlfnext.cn-hangzhou.aliyuncs.com/iceberg |
warehouse | DLF データカタログの名前。 | iceberg_test |
rest.auth.type | パブリックネットワークの認証方式。固定値: | org.apache.iceberg.rest.auth.RESTDLFAuthManager |
rest.signing-region | DLF サービスのリージョン ID。 | cn-hangzhou |
rest.access-key-id | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。 | - |
rest.secret-access-key | Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey Secret。 | - |
rest.session-token | STS セキュリティトークン。長期的な AccessKey ペアを使用する場合は不要です。 | - |
io-impl | ファイル IO の実装。固定値: | org.apache.iceberg.rest.DlfFileIO |
dlf.oss-endpoint | OSS のパブリックネットワーク エンドポイント。詳細については、OSS ドキュメントの「リージョンとエンドポイント」をご参照ください。 | oss-cn-hangzhou.aliyuncs.com |