与 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 }
以下示例显示如何修改存储集成和设置 USE_PRIVATELINK_ENDPOINT 属性:
ALTER STORAGE INTEGRATION my_int SET USE_PRIVATELINK_ENDPOINT = { TRUE | FALSE }
- 外部暂存区
创建或修改暂存区时不支持 USE_PRIVATELINK_ENDPOINT 语法更新。以下示例展示了如何修改存储集成以使用新的或修改后的暂存区的 URL:
CREATE OR REPLACE STAGE my_gcs_stage URL = 'gcs://<bucket>/<prefix>/' STORAGE_INTEGRATION=my_int
配置外部暂存区访问¶
以下是使用出站专用连接与存储集成将数据卸载到 Google Cloud 上的外部暂存区所独有的步骤。
在 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');
备注
Snowflake 仅支持 Google Cloud 区域存储 API 端点。不支持 Google Cloud 多区域桶。
使用 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 在 Snowflake VNet 中配置专用端点会将专用端点绑定到主机名。这使存储集成能够使用专用连接连接到您的外部 Google Cloud 暂存区。
在 Snowflake 中,调用 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 函数。
当 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 的输出包括
"status": "APPROVED"时,您从 Snowflake 到存储账户的连接将可以使用专用连接(在为出站专用连接启用其他必需的 Snowflake 对象之后)。在等待
"APPROVED"状态时,您可以继续执行后续步骤。创建存储集成时,请确保将 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;
有关为存储集成创建角色的信息,请参阅 配置 Google Cloud Storage 集成。
创建引用存储集成的外部暂存区。例如:
CREATE OR REPLACE STAGE my_gcs_stage URL = 'gcs://mybucket1/path1/' STORAGE_INTEGRATION = outbound_private_link_int;
专用端点具有“APPROVED”状态后,测试将数据从 Snowflake 卸载到外部暂存区。例如:
COPY INTO @my_gcs_stage FROM mytable FILE_FORMAT = (FORMAT_NAME = my_csv_format);
查看 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');