配置具有出站私有连接功能的 Apache Iceberg™ REST 目录集成

本主题介绍如何为符合开源 Apache Iceberg™ REST OpenAPI 规范 (https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) 的远程目录中托管的 Apache Iceberg™ 表 配置 目录集成

通过此配置,您可使用目录集成通过私有 IP 地址(而非公共互联网)连接到远程 Iceberg REST 目录。

下图显示了 Iceberg 表如何使用与外部 Iceberg 目录的目录集成。

使用目录集成的 Iceberg 表的工作原理

有关 Snowflake 中出站专用连接的一般信息,包括 出站专用连接成本,请参阅 出站网络流量的专用连接

本主题介绍以下目录类型的配置步骤:

  • 通用 Iceberg REST 目录

  • AWS Glue Data Catalog

  • Databricks Unity 目录

备注

  • 专用连接仅适用于使用 AWS PrivateLink 的 AWS 目录集成,以及使用 Azure 专用链接的 Azure 目录集成。

  • 专用连接仅在相同云提供商内部可用;目录与 Snowflake 部署必须运行于同一云提供商环境中。

  • 配置具有出站专用连接的目录集成时,不支持目录提供的凭证。

第 1 步:收集目录的专用连接信息

您需先收集专用连接信息,以便后续 在 Snowflake VPC 或 VNet 中配置相应专用连接端点时进行指定。配置相应私有连接端点时,若您的 Snowflake 账户托管在 AWS 上,需在 Snowflake 中创建 AWS PrivateLink 端点;若托管在 Azure 上,则需创建 Azure 专用端点。

  • 要收集目录的专用连接信息,请参阅远程 REST Iceberg 目录的文档。

    以下示例是 AWS 中的 AWS VPC 端点服务 ID:com.amazonaws.vpce.us-west-2.vpce-svc-0123456789abcdef

第 2 步:提供专用连接端点

在此步骤中,您需要在 Snowflake VPC 或 VNet 中配置私有连接端点,使 Snowflake 能够通过私有连接访问远程 Iceberg REST 目录。

  • 要预置专用连接端点,请调用 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 系统函数。

    关于该系统函数实参的设置说明,请参阅您要通过私有连接访问的远程 REST Iceberg 目录的相关文档。

    以下代码块展示了配置 AWS PrivateLink 端点的示例:

    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
      'com.amazonaws.vpce.us-west-2.vpce-svc-0123456789abcdef',
      'my.catalog.com'
      );
    
    Copy

第 3 步:验证端点状态

在此步骤中,您需验证上一步在 Snowflake VPC 或 VNet 中配置的专用连接端点的状态。

  • 要验证端点状态,请调用 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 系统函数:

    SELECT SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO();
    
    Copy

    statuspending 变为 available 时,表示该端点已准备就绪可供使用。

第 4 步:其他特定于目录的配置

完成目录类型的其他配置步骤。

备注

对于某些目录或特定类型的专用连接端点,您还需在目录服务器端批准连接或将专用连接端点加入允许列表。

  • 要完成额外的配置步骤,请参阅远程 REST Iceberg 目录的文档,然后继续 下一步

第 5 步:创建目录集成

在此步骤中,要启用专用连接,请为目录 REST 端点配置目录集成。

  • 要配置此目录集成,请运行 CREATE CATALOG INTEGRATION 命令。

    例如:

    CREATE OR REPLACE CATALOG INTEGRATION iceberg_rest_catalog_cat_int_private
      CATALOG_SOURCE = ICEBERG_REST
      TABLE_FORMAT = ICEBERG
      REST_CONFIG = (
        CATALOG_URI = '<rest_api_endpoint_url>'
        CATALOG_API_TYPE = PRIVATE
        CATALOG_NAME = '<catalog_name>'
      )
      REST_AUTHENTICATION = (
        TYPE = OAUTH
        OAUTH_TOKEN_URI = '<token_server_uri>'
        OAUTH_CLIENT_ID = '<oauth_client_id>'
        OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
        OAUTH_ALLOWED_SCOPES = ('all-apis', 'sql')
    )
    ENABLED = true;
    
    Copy

    重要

    要使用出站专用连接,您必须在创建集成时指定 CATALOG_API_TYPE=PRIVATE

    有关更多信息,包括支持的身份验证方法,请参阅 CREATE CATALOG INTEGRATION (Apache Iceberg™ REST)

第 6 步:验证目录集成

(可选)第 7 步:更新目录配置

我们建议您更新远程目录的配置,以便只能通过专用连接访问。

  • 要禁用目录的公共访问权限,请参阅您要通过专用连接访问的远程目录的相关文档。

后续步骤

本部分含配置目录集成后可以执行的一些任务:

监控您的专用连接端点

配置具有出站专用连接的外部卷

  • 要在 Snowflake 和存储桶之间启用专用连接,请配置具有出站专用连接 外部卷

    有关外部卷的更多信息,请参阅 配置外部卷

    备注

    配置具有出站专用连接的目录集成时,不支持目录提供的凭证。

创建目录链接数据库

  • 要创建连接到外部 Iceberg REST 目录的 Snowflake 数据库,请创建一个目录链接数据库。

    有关更多信息,请参阅 创建目录链接数据库

    备注

    创建目录链接数据库时,请指定配置了出站专用连接的目录集成。

写入远程目录

为 Apache Iceberg™ REST 配置目录集成并创建目录链接数据库后,您即可向远程目录写入数据。

语言: 中文