设置 Snowflake 以使用 Git¶
当您将 Snowflake 账户连接到远程 Git 存储库时,Snowflake 会创建 Git 存储库克隆,复制存储库中所有文件的最新版本(浅层克隆),并存储有关远程存储库位置的元数据、证书(如果需要)以及有关 Snowflake 应如何与 Git 存储库 API 交互的配置详细信息。
根据您的要求,通过配置组件(用于身份验证、与 Git API 的交互以及 Snowflake 与云服务提供商之间通过专用链接进行的通信),您可以设置 Snowflake,使远程 Git 存储库成为 Snowflake 工作流程不可分割的一部分。
选择配置模型¶
根据您的网络和工作流程要求,您可以配置 Snowflake,以多种方式访问远程 Git 存储库。以下列出了示例用例,以及您可能用来支持这些用例的存储库访问策略。
通过包括提取、推送和创建文件在内的工作流程处理 Git 存储库中的文件。
考虑使用 Snowflake 工作区。如果您在 github.com 上使用存储库,则可以 使用 OAuth 进行身份验证。
作为数据管道或 ML 项目的一部分引用 Git 存储库中的文件。
如果脚本化进程将访问存储库,请考虑 使用令牌进行身份验证。
首先,克隆公共存储库(包括 Snowflake Labs)来运行脚本或笔记本文件。
您可以使用工作区处理
.sql
文件,使用 Snowflake 笔记本 处理.ipynb
文件,或使用 Snowflake 工作区 处理.py
文件。
以下内容描述了您通过公共网络或专用网络进行访问时的选项:
通过公共网络访问 |
通过专用网络访问 |
---|---|
通过公共网络访问 允许您使用 Snowflake 云提供商部署的整个 IP 范围向远程 Git 存储库服务器进行身份验证(因为 Snowflake 不提供静态 。IP 范围)
|
通过专用网络进行访问 可以避免允许在 Snowflake 云提供商部署的整个 IP 范围内访问 Git 服务器。 您可以将 Snowflake 配置为通过 Snowflake 和您的云基础架构之间的出站专用链接连接建立出站连接。Snowflake 通过此连接将 Git 流量路由到 Git 存储库服务器。
|
配置 Snowflake 以通过公共网络进行访问¶
您可以设置 Snowflake 以通过公共网络访问 Git 存储库。您可以使用以下任一策略让 Snowflake 进行身份验证:
-
使用与 Git 存储库服务器有关的详细信息配置 API 集成。
使用令牌进行身份验证,例如个人访问令牌。
配置包含要使用的用户名和令牌的密钥,然后配置 API 集成,允许 Snowflake 在进行身份验证时使用该密钥。
-
将 API 集成配置为允许以下任何一种身份验证:OAuth2、个人访问令牌或不进行身份验证。
备注
仅当存储库托管在 github.com 上时,才能在工作区中将 OAuth 用于 Git 存储库。有关更多信息,请参阅 创建 Git 工作区。
配置为不进行身份验证¶

要设置 Snowflake 以在不进行身份验证的情况下使用 Git 存储库,请按照以下步骤操作:
创建支持无需身份验证即可访问的 API 集成,并指定以下详细信息:
将
git_https_api
指定为 API_PROVIDER 参数的值将请求必须限制到的 HTTPS 端点指定为 API_ALLOWED_PREFIXES 参数的值
有关更多信息,请参阅 CREATE API INTEGRATION。
CREATE OR REPLACE API INTEGRATION my_git_api_integration API_PROVIDER = git_https_api API_ALLOWED_PREFIXES = ('https://example.com/my-account') ENABLED = TRUE;
按照 创建 Snowflake Git 存储库克隆 中所述创建 Git 存储库克隆。
配置为使用令牌进行身份验证¶

要让 Snowflake 使用用户名和个人访问令牌 (PAT) 等令牌向 Git 存储库进行身份验证,请按照以下步骤操作:
在 基本身份验证密钥 中提供凭据。
要提供 Snowflake 用于向存储库进行身份验证的凭据,请创建包含以下内容的密钥:
TYPE 值为
password
用户名和令牌,例如个人访问令牌 (PAT)
如果您的 Git 存储库托管在 Bitbucket 上,请指定
x-token-auth
作为用户名值。备注
有关在 GitHub 中创建个人访问令牌的信息,请参阅 ` 文档中的 <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)>管理个人访问令牌 `_GitHub。
有关创建密钥所用的 SQL 命令的更多信息,请参阅 CREATE SECRET。
以下示例中的代码使用用户名和用户的个人访问令牌创建了名为
my_git_secret
的密钥,用作凭据:CREATE OR REPLACE SECRET my_git_secret TYPE = password USERNAME = 'gladyskravitz' PASSWORD = 'ghp_token';
创建支持使用令牌进行身份验证的 API 集成。
要创建 API 集成,以在不进行身份验证的情况下访问 Git 存储库,请指定以下详细信息:
将
git_https_api
指定为 API_PROVIDER 参数的值将请求必须限制到的 HTTPS 端点指定为 API_ALLOWED_PREFIXES 参数的值
有关更多信息,请参阅 CREATE API INTEGRATION。
CREATE OR REPLACE API INTEGRATION my_git_api_integration API_PROVIDER = git_https_api API_ALLOWED_PREFIXES = ('https://github.com/my-account') ALLOWED_AUTHENTICATION_SECRETS = (my_git_secret) ENABLED = TRUE;
按照 创建 Snowflake Git 存储库克隆 中所述创建 Git 存储库克隆。
配置为使用 OAuth 进行身份验证¶
备注
仅当存储库托管在 github.com 上时,才能在工作区中将 OAuth 用于 Git 存储库。有关更多信息,请参阅 创建 Git 工作区。

要设置 Snowflake 以使其使用 OAuth 流程对远程 Git 存储库进行身份验证,请按照以下步骤操作:
创建支持通过 OAuth 进行身份验证的 API 集成。
使用 OAuth2 流程指定身份验证方式时,请创建一个指定以下内容的 API 集成:
将
git_https_api
指定为 API_PROVIDER 参数的值将请求必须限制到的 HTTPS 端点指定为 API_ALLOWED_PREFIXES 参数的值
这必须是在
https://github.com
的前缀。仅在 github.com 托管的存储库支持使用 OAuth 进行身份验证。API_USER_AUTHENTICATION,其值为
(TYPE = SNOWFLAKE_GITHUB_APP)
有关更多信息,请参阅 CREATE API INTEGRATION。
以下示例中的代码会创建名为 API 的
my_git_api_integration
集成:CREATE OR REPLACE API INTEGRATION my_git_api_integration API_PROVIDER = git_https_api API_ALLOWED_PREFIXES = ('https://github.com') API_USER_AUTHENTICATION = (TYPE = SNOWFLAKE_GITHUB_APP) ENABLED = TRUE;
如 创建 Git 工作区 中所述,创建连接到 Git 存储库的工作区。
配置 Snowflake 以通过专用网络进行访问¶
您可以将 Snowflake 配置为通过 Snowflake 和您的云基础架构之间的出站专用链接连接建立出站连接。Snowflake 通过此连接将 Git 流量路由到 Git 存储库服务器。
使用专用链接连接,可以避免允许在 Snowflake 云提供商部署的整个 IP 范围内访问 Git 服务器。本节概述了这些步骤。
-
您将对 Snowflake 和云服务基础架构应用配置更改。本主题介绍了 Snowflake 端的步骤。有关所有步骤的详细信息,包括有关配置云服务提供商的详细信息,请参阅知识库文章 通过专用链接配置 Git 与 Snowflake 的集成 (https://community.snowflake.com/s/article/Configuring-Git-Integration-with-Snowflake-over-Private-Link)。
备注
Snowflake 仅支持相同云和区域内的连接。例如,如果您的 Snowflake 部署位于 us-west-2 区域中的 AWS 上,则您的其他组件也必须位于该区域。
配置专用链接连接¶
在配置 Snowflake 以访问远程 Git 存储库之前,必须在 Snowflake 和云服务提供商之间设置专用链接。
要将配置更改应用于 Snowflake 和您的基础架构,请按照以下步骤操作:
在您的云服务提供商中,创建专用链接服务以接收来自 Snowflake 专用端点服务的请求。
有关详细信息,请参阅知识库文章 通过专用链接配置 Git 与 Snowflake 的集成 (https://community.snowflake.com/s/article/Configuring-Git-Integration-with-Snowflake-over-Private-Link)。
在 Snowflake 中,配置一个专用端点,该端点将通过专用 IP 访问您的基础架构。
要配置端点,请使用包含以下两个实参的 SYSTEM$PROVISION_PRIVATELINK_ENDPOINT 函数:
云提供商的专用链接服务 ID
Git 服务器的域名
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'com.amazonaws.vpce.us-west-2.vpce-svc-xxx', // VPC Endpoint Service Name 'git_address.com' // Git server domain );
SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( '/subscriptions/9217bbdd-434e-4dbb-97c2-0825c627a277/resourceGroups/git-server_group/providers/Microsoft.Network/privateLinkServices/git-server-pl-service', // Private Service ID 'git_address.com' // Git server domain );
在您的云服务提供商中,接受 Snowflake 专用端点设置以完成专用链接连接设置。
要检查配置状态,请调用 SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO 系统函数。
配置 Snowflake 对远程 Git 存储库的访问权限¶
在 Snowflake 和云服务提供商之间设置专用链接后,您可以配置 Snowflake 对远程 Git 存储库的访问权限。
创建支持使用证书进行身份验证的 API 集成。
由于 Snowflake 将使用 HTTPS 协议访问您的 Git 服务器,因此域名需要具有有效的证书。根据您使用的是自签名证书还是由证书颁发机构签名的证书,您使用的配置会有所不同。
使用自签名证书:
在 通用字符串密钥 中提供凭据。
这应该是用于建立 HTTPS 连接的自签名域名的公钥。要向 Snowflake 提供用于向服务器进行身份验证的凭据,请创建包含以下详细信息的密钥:
GENERIC_STRING
的 TYPE 参数值作为 SECRET_STRING 参数值的公共证书字符串
对于参数的值,请指定密钥字符串,例如公共证书正文。
CREATE OR REPLACE SECRET my_public_certificate TYPE = GENERIC_STRING SECRET_STRING = '-----BEGIN CERTIFICATE----- <certificate_body> -----END CERTIFICATE-----';
创建用于与 Git API 集成的 API 集成,并指定以下详细信息:
API_PROVIDER 参数设置为
git_https_api
API_ALLOWED_PREFIXES 设置为允许访问的基础 URL
USE_PRIVATELINK_ENDPOINT 参数设置为
TRUE
TLS_TRUSTED_CERTIFICATES 参数设置为您创建的密钥的名称,其中包含证书
有关更多信息,请参阅 CREATE API INTEGRATION。
CREATE OR REPLACE API INTEGRATION my_git_api_integration API_PROVIDER = git_https_api API_ALLOWED_PREFIXES = ('https://example.com/my-account') ALLOWED_AUTHENTICATION_SECRETS = ALL USE_PRIVATELINK_ENDPOINT = TRUE TLS_TRUSTED_CERTIFICATES = (my_public_certificate) ENABLED = TRUE;
使用由证书颁发机构签名的证书:
创建用于与 Git API 集成的 API 集成,并指定以下详细信息:
API_PROVIDER 参数设置为
git_https_api
API_ALLOWED_PREFIXES 设置为允许访问的基础 URL
USE_PRIVATELINK_ENDPOINT 参数设置为
TRUE
TLS_TRUSTED_CERTIFICATES 参数设置为您创建的密钥的名称,其中包含证书
有关更多信息,请参阅 CREATE API INTEGRATION。
CREATE OR REPLACE API INTEGRATION my_git_api_integration API_PROVIDER = git_https_api API_ALLOWED_PREFIXES = ('https://example.com/my-account') ALLOWED_AUTHENTICATION_SECRETS = ALL USE_PRIVATELINK_ENDPOINT = TRUE ENABLED = TRUE;
在 基本身份验证密钥 中提供凭据。
通过专用链接成功连接到 Git 服务器后,您仍必须通过创建另一个为存储库提供凭据的密钥来对存储库进行身份验证。
要提供 Snowflake 用于向存储库进行身份验证的凭据,请创建包含以下内容的密钥:
TYPE 值为
password
用户名和令牌,例如个人访问令牌 (PAT)
备注
有关在 GitHub 中创建个人访问令牌的信息,请参阅 ` 文档中的 <https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)>管理个人访问令牌 `_GitHub。
有关创建密钥所用的 SQL 命令的更多信息,请参阅 CREATE SECRET。
按照 创建 Snowflake Git 存储库克隆 中所述创建 Git 存储库克隆。
创建 Snowflake Git 存储库克隆¶
要将 Snowflake 设置为使用远程 Git 存储库,请在 Snowflake 中创建 Git 存储库克隆,以包含从远程存储库提取的文件。
备注
在开始本节中的步骤之前,请考虑 首先 配置可能需要的组件,包括密钥(如果远程存储库需要身份验证)、API 集成以及 Snowflake 与云服务提供商之间的专用链接连接。
备注
有关在 Snowsight 中创建 Git 工作区的信息,请参阅 创建 Git 工作区。
Snowflake 中的 Git 存储库克隆会指定以下详细信息:
远程存储库的来源
在 Git 中,
origin
是远程存储库的 URL。设置 Snowflake 以使用远程 Git 存储库时使用此 URL。URL 必须使用 HTTPS。例如,您可以通过以下方式检索来源 URL:在 GitHub 用户界面中,您可以从存储库主页获取来源 URL。选择 Code 按钮,然后从按钮下方显示的框中复制 HTTPS URL。
在命令行中,使用本地存储库中的
git config
命令,如以下示例所示:$ git config --get remote.origin.url
该命令生成的输出如以下内容所示:
https://github.com/my-account/snowflake-extensions.git
有关
git config
的参考信息,请参阅 Git 文档 (https://git-scm.com/docs/git-config)。
凭据(如果需要),以供 Snowflake 在对存储库进行身份验证时使用
对于 GIT_CREDENTIALS 参数,请指定您创建的 Snowflake 密钥。
API 集成,用于指定 Snowflake 与存储库 API 交互的详细信息
您可以使用 Snowsight 或 SQL 创建 Git 存储库克隆。
备注
在创建 Git 存储库克隆之前,您需要创建 密钥。
以下示例中的代码创建了一个名为 snowflake_extensions
的 Git 存储库克隆。该克隆指定 my_git_api_integration
API 集成和带有身份验证凭据的 my_git_secret
密钥。
USE ROLE ACCOUNTADMIN;
GRANT CREATE GIT REPOSITORY ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;
USE ROLE myco_git_admin;
CREATE OR REPLACE GIT REPOSITORY snowflake_extensions
API_INTEGRATION = my_git_api_integration
GIT_CREDENTIALS = my_git_secret
ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
备注
有关在 Snowsight 中创建 Git 工作区的信息,请参阅 创建 Git 工作区。
登录 Snowsight。
在导航菜单中,选择 Data » Databases。
在对象资源管理器中,选择包含要创建的 Git 存储库克隆的数据库和架构。
选择 Create » Git Repository。
在 Create Git Repository 对话框的 Repository Name 中,输入一个名称,该名称将在架构中唯一标识此存储库克隆。
有关命名指南,请参阅 标识符要求。
对于 Origin,输入远程存储库的源 URL。
从 API Integration 下拉菜单中,选择在创建 Git 存储库克隆时要引用的 API 集成。
如果您没有可使用的 API 集成,请选择 Create new API integration in Worksheets 以使用 SQL 来创建集成。有关更多信息,请参阅 CREATE API INTEGRATION。
可选:对于 Comment,输入向其他人描述此集成的文本。
可选:如果远程存储库需要身份验证,请将 Authentication 开关设置到 _on_ 位置。
如果您已打开开关,请从 Secret 菜单中选择 Git 集成应引用的密钥,以便使用远程存储库进行身份验证。
如果您没有可使用的密钥,请选择 Create new secret in Worksheets 以使用 SQL 来创建密钥。有关更多信息,请参阅 CREATE SECRET。
选择 Create。
成功创建集成后,Git 存储库克隆将显示在架构下方的 Git Repositories 目录中。您还将看到一个页面,列出了存储库目录、分支和标签。