DLF 服務預設僅支援 VPC 內網訪問。如需從公網(本地開發環境、跨地區網路等)串連 DLF 的 REST Catalog,需要由 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 公網 Endpoint。
計費說明
暫不收費。公測結束後將涉及相關功能的收費,屆時另行通知。
開啟公網訪問
基於安全考慮,DLF 服務的公網訪問入口預設關閉。DLF 管理員必須手動啟用該功能:
登入資料湖構建控制台。
在左側導覽列,選擇数据目录。
選擇目標資料目錄,切換到目录配置頁簽。
在高级配置部分,添加或修改參數:
enable.openapi設定為true。
配置公網訪問
公網訪問Paimon表
以下樣本展示如何通過公網串連 DLF 的 Paimon REST Catalog。
服務存取點格式為 https://dlfnext.${region-id}.aliyuncs.com。各地區的公網 Endpoint 請參見地區與服務存取點。
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", "your-access-key-id");
options.set("dlf.access-key-secret", "your-access-key-secret");
// 必須配置 OSS 公網 Endpoint
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 公網服務地址。各地區 Endpoint 請參見地區與服務存取點。 | https://dlfnext.cn-hangzhou.aliyuncs.com |
warehouse | DLF 資料目錄名稱。 | paimon_test |
dlf.region | DLF 服務所在的地區 ID(Region ID)。 | cn-hangzhou |
dlf.access-key-id | 阿里雲帳號或 RAM 使用者的 AccessKey ID。 | - |
dlf.access-key-secret | 阿里雲帳號或 RAM 使用者的 AccessKey Secret。 | - |
dlf.oss-endpoint | OSS 公網訪問地址。詳情請參見 OSS 的地區和Endpoint文檔。 | oss-cn-hangzhou.aliyuncs.com |
token.provider | 鑒權提供方,固定設定為 | dlf |
Python
from pypaimon import CatalogFactory
options = {
# Python 用戶端必須指定 metastore 類型為 rest
'metastore': 'rest',
'uri': 'https://dlfnext.cn-hangzhou.aliyuncs.com',
'warehouse': 'paimon_test',
'dlf.region': 'cn-hangzhou',
'dlf.access-key-id': 'your-access-key-id',
'dlf.access-key-secret': 'your-access-key-secret',
# 若使用 STS 臨時憑證,請配置此項
'dlf.security-token': 'your-security-token',
'dlf.oss-endpoint': 'oss-cn-hangzhou.aliyuncs.com',
'token.provider': 'dlf',
}
rest_catalog = CatalogFactory.create(options)Python 配置參數說明如下。
配置項 | 說明 | 樣本值 |
metastore | 中繼資料存放區類型。固定值 | rest |
uri | DLF OpenAPI 公網服務地址。各地區 Endpoint 請參見地區與服務存取點中 Paimon REST 表格的"OpenAPI 公網 Endpoint"列。 | https://dlfnext.cn-hangzhou.aliyuncs.com |
warehouse | DLF 資料目錄名稱。 | paimon_test |
dlf.region | DLF 服務所在的地區 ID(Region ID)。 | cn-hangzhou |
dlf.access-key-id | 阿里雲帳號或 RAM 使用者的 AccessKey ID。 | - |
dlf.access-key-secret | 阿里雲帳號或 RAM 使用者的 AccessKey Secret。 | - |
dlf.security-token | STS 安全性權杖。使用長期有效 AccessKey 時無需配置。 | - |
dlf.oss-endpoint | OSS 公網訪問地址。詳情請參見 OSS 的地區和Endpoint文檔。 | oss-cn-hangzhou.aliyuncs.com |
token.provider | 鑒權提供方,固定設定為 | dlf |
公網訪問Iceberg表
以下樣本展示如何通過公網串連 DLF 的 Iceberg REST Catalog。
服務存取點格式為 https://dlfnext.${region-id}.aliyuncs.com/iceberg。各地區的公網 Endpoint 請參見地區與服務存取點。
Maven 依賴
DLF 公網認證與 IO 由 dlf-iceberg-plugin 提供,需從 DLF Maven 倉庫拉取;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", "your-access-key-id");
options.put("rest.secret-access-key", "your-access-key-secret");
// options.put("rest.session-token", "your-security-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(Region ID)。 | cn-hangzhou |
rest.access-key-id | 阿里雲帳號或 RAM 使用者的 AccessKey ID。 | - |
rest.secret-access-key | 阿里雲帳號或 RAM 使用者的 AccessKey Secret。 | - |
rest.session-token | STS 安全性權杖。使用長期有效 AccessKey 時無需配置。 | - |
io-impl | 資料檔案 IO 實現,固定值: | org.apache.iceberg.rest.DlfFileIO |
dlf.oss-endpoint | OSS 公網訪問地址。詳情請參見 OSS 的地區和Endpoint文檔。 | oss-cn-hangzhou.aliyuncs.com |