与 Google Cloud 外部暂存区的专用连接

本主题介绍如何配置到 Google Cloud 上外部暂存区的出站专用连接。出站公共连接和出站专用连接的主要区别在于如何配置存储集成。例如,您可以指定存储集成的 USE_PRIVATELINK_ENDPOINT 属性,然后在外部暂存区引用此存储集成。外部暂存区从存储集成继承专用端点配置。随后,您与 Google Cloud 暂存区的连接将通过 Google Cloud 内部网络进行。通过将存储集成和暂存区配置为使用出站专用连接,可以阻止对存储账户的公共访问,从而为数据卸载操作增加额外的安全性。

出站专用连接成本

您为每个专用连接端点以及处理的总数据量付费。有关这些项目的定价,请参阅 Snowflake 服务使用量表

在 ACCOUNT_USAGE 和 ORGANIZATION_USAGE 架构中查询计费视图时,可以通过筛选以下服务类型来查看这些项目的成本:

  • OUTBOUND_PRIVATELINK_ENDPOINT

  • OUTBOUND_PRIVATELINK_DATA_PROCESSED

例如,您可以查询 USAGE_IN_CURRENCY_DAILY 视图并筛选这些服务类型。

注意事项

您可以为同一个存储账户配置出站公共连接和出站专用连接。如果要这样做,请为出站公共连接创建专用存储集成,并指定 USE_PRIVATELINK_ENDPOINT = FALSE

限制

与 Google Cloud 暂存区的出站专用连接不支持多区域存储分区。

为存储集成指定专用连接

要在创建、替换或修改存储集成时指定专用连接,请添加 USE_PRIVATELINK_ENDPOINT 属性,如以下示例所示。要使用专用连接,请为集成设置 USE_PRIVATELINK_ENDPOINT = TRUE

存储集成

以下示例显示了在创建具有一个或多个位置的存储集成时如何指定 USE_PRIVATELINK_ENDPOINT 属性:

CREATE OR REPLACE STORAGE INTEGRATION my_int
  TYPE=EXTERNAL_STAGE
  STORAGE_PROVIDER='gcs'
  STORAGE_ALLOWED_LOCATIONS=('gcs://<bucket>/<prefix>/')
  USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy

以下示例显示如何修改存储集成和设置 USE_PRIVATELINK_ENDPOINT 属性:

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
Copy
外部暂存区

创建或修改暂存区时不支持 USE_PRIVATELINK_ENDPOINT 语法更新。以下示例展示了如何修改存储集成以使用新的或修改后的暂存区的 URL:

CREATE OR REPLACE STAGE my_gcs_stage
  URL = 'gcs://<bucket>/<prefix>/'
  STORAGE_INTEGRATION=my_int
Copy

配置外部暂存区访问

以下是使用出站专用连接与存储集成将数据卸载到 Google Cloud 上的外部暂存区所独有的步骤。

  1. 在 Snowflake 中,调用 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 系统函数。提供区域存储 API 端点和主机名作为实参。例如:

    USE ROLE ACCOUNTADMIN;
    
    SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT(
      'storage.us-east4.rep.googleapis.com',
      'storage.us-east4.rep.googleapis.com');
    
    Copy

    备注

    Snowflake 仅支持 Google Cloud 区域存储 API 端点。不支持 Google Cloud 多区域桶。

    使用 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 在 Snowflake VNet 中配置专用端点会将专用端点绑定到主机名。这使存储集成能够使用专用连接连接到您的外部 Google Cloud 暂存区。

  2. 在 Snowflake 中,调用 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 函数。

    当 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 的输出包括 "status": "APPROVED" 时,您从 Snowflake 到存储账户的连接将可以使用专用连接(在为出站专用连接启用其他必需的 Snowflake 对象之后)。

    在等待 "APPROVED" 状态时,您可以继续执行后续步骤。

  3. 创建存储集成时,请确保将 TRUE 指定为 USE_PRIVATELINK_ENDPOINT 属性的值。例如:

    CREATE OR REPLACE STORAGE INTEGRATION outbound_private_link_int
      TYPE = EXTERNAL_STAGE
      STORAGE_PROVIDER = 'gcs'
      STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/'')
      USE_PRIVATELINK_ENDPOINT = true
      ENABLED = true;
    
    Copy

    有关为存储集成创建角色的信息,请参阅 配置 Google Cloud Storage 集成

  4. 创建引用存储集成的外部暂存区。例如:

    CREATE OR REPLACE STAGE my_gcs_stage
      URL = 'gcs://mybucket1/path1/'
      STORAGE_INTEGRATION = outbound_private_link_int;
    
    Copy
  5. 专用端点具有“APPROVED”状态后,测试将数据从 Snowflake 卸载到外部暂存区。例如:

    COPY INTO @my_gcs_stage
      FROM mytable
      FILE_FORMAT = (FORMAT_NAME = my_csv_format);
    
    Copy
  6. 查看 Google Cloud 暂存区中的结果。

禁用专用连接

如果您不再需要外部暂存区的专用连接,可以将存储集成的 USE_PRIVATELINK_ENDPOINT 属性设置为 FALSE,然后调用 SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT 系统函数以取消配置端点。例如:

USE ROLE ACCOUNTADMIN;

ALTER STORAGE INTEGRATION my_int
  SET USE_PRIVATELINK_ENDPOINT = false;

SELECT SYSTEM$DEPROVISION_PRIVATELINK_ENDPOINT('storage.us-east4.rep.googleapis.com');
Copy
语言: 中文