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 |