设置 Snowflake 以使用 Git

当您集成 Git 存储库并克隆存储库时,Snowflake 会创建一个 Git 存储库暂存区,该暂存区会指定存储库的位置、证书(如果需要)以及有关 Snowflake 应如何与 Git 存储库 API 交互的详细信息。

要将 Git 存储库与 Snowflake 一起使用,请按照以下步骤操作:

  1. 如果有需要,创建密钥 以包含用于对存储库进行身份验证的凭据。

  2. 创建 API 集成 以指定有关 Snowflake 与 Git 存储库交互的详细信息。API

  3. 创建可以将存储库中的文件同步到的 Snowflake Git 存储库暂存区

创建包含用于身份验证的凭据的密钥

如果您的 Git 存储库需要身份验证,则需要 创建密钥 并在其中包含 Snowflake 可以用来对存储库进行身份验证的凭据。

您将以多种方式使用该密钥。创建 API 集成 用于指定 Snowflake 与 Git 存储库 API 的交互的人员必须将此密钥指定为 ALLOWED_AUTHENTICATION_SECRETS 参数的值。此外,有人 通过设置 Snowflake 来使用 Git 指定了此密钥。

要创建密钥,必须使用已被授予以下权限的角色:

  • 对存储密钥的架构的 CREATE SECRET 权限

    有关更多信息,请参阅 CREATE SECRET 访问控制要求

  • 对包含集成的数据库和架构的 USAGE 权限

作为最佳实践,对密钥的 PASSWORD 值使用个人访问令牌。有关在 GitHub 中创建个人访问令牌的信息,请参阅 GitHub 文档中的 管理个人访问令牌 (https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)。

SQL:

您可以使用 CREATE SECRET 命令创建包含 Git 存储库凭据的密钥。

以下示例中的代码使用用户名和用户的个人访问令牌创建了名为 git_secret 的密钥,用作凭据:

USE ROLE securityadmin;
CREATE ROLE myco_secrets_admin;
GRANT CREATE SECRET ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_secrets_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_secrets_admin;

USE ROLE myco_secrets_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE SECRET git_secret
  TYPE = password
  USERNAME = 'gladyskravitz'
  PASSWORD = 'ghp_token';
Copy

创建用于与存储库 API 进行交互的 API 集成

要指定有关 Snowflake 如何与 Git 存储库 API 交互的详细信息,您需要创建 API 集成。

设置 Snowflake 账户以使用 Git 的人员将指定要使用的 API 集成。

要创建 API 集成,必须使用已被授予以下权限的角色:

  • 账户的 CREATE INTEGRATION 权限

    有关更多信息,请参阅 CREATE API INTEGRATION 访问控制要求

  • 对包含集成的数据库和架构的 USAGE 权限

  • 对集成所引用密钥的 USAGE 权限

为 Git 存储库 API 创建 API 集成时,您必须执行以下操作:

  • 指定 git_https_api 为 API_PROVIDER 参数的值。

  • 如果需要身份验证,则指定 包含存储库凭据的密钥 作为 ALLOWED_AUTHENTICATION_SECRETS 参数的值。您可以指定以下选项之一:

    • Snowflake 在使用存储库进行身份验证时可以使用的一个或多个 Snowflake 密钥(以逗号分隔的列表中)

    • 字符串 'all' (不区分大小写),用于指定可能使用任何密钥

    • 字符串 'none' (不区分大小写),用于指定不使用任何密钥

SQL:

您可以使用该 CREATE API INTEGRATION 命令创建 API 集成,以指定 Snowflake 与 Git 存储库 API 交互的详细信息。

以下示例中的代码会创建名为 git_api_integration 的 API 集成:

USE ROLE securityadmin;
CREATE ROLE myco_git_admin;
GRANT CREATE INTEGRATION ON ACCOUNT TO ROLE myco_git_admin;

USE ROLE myco_db_owner;
GRANT USAGE ON DATABASE myco_db TO ROLE myco_git_admin;
GRANT USAGE ON SCHEMA myco_db.integrations TO ROLE myco_git_admin;

USE ROLE myco_secrets_admin;
GRANT USAGE ON SECRET myco_git_secret TO ROLE myco_git_admin;

USE ROLE myco_git_admin;
USE DATABASE myco_db;
USE SCHEMA myco_db.integrations;

CREATE OR REPLACE API INTEGRATION git_api_integration
  API_PROVIDER = git_https_api
  API_ALLOWED_PREFIXES = ('https://github.com/my-account')
  ALLOWED_AUTHENTICATION_SECRETS = (git_secret)
  ENABLED = TRUE;
Copy

创建 Git 存储库暂存区并克隆存储库

要设置 Snowflake 以便与 Git 存储库配合使用,请创建 Git 存储库暂存区,以包含从存储库提取的文件。

备注

在开始本节中的步骤之前,请考虑 首先 创建 密钥。您可能需要这两项要素。

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
      
      Copy

      有关 git config 的参考信息,请参阅 Git 文档 (https://git-scm.com/docs/git-config)。

  • 凭据(如果需要),以供 Snowflake 在对存储库进行身份验证时使用

  • API 集成,用于指定 Snowflake 与存储库 API 交互的详细信息

要创建 Git 存储库暂存区,必须使用已被授予以下权限的角色:

  • 对包含存储库的架构具有 CREATE GIT REPOSITORY 权限

    有关更多信息,请参阅 CREATE GIT REPOSITORY 访问控制要求

  • 对包含使用 Git 进行身份验证的凭据的密钥的 USAGE 权限

  • Git 存储库暂存区所引用 API 集成的 USAGE 权限

SQL:

您可以使用该 CREATE GIT REPOSITORY 命令创建 Git 存储库暂存区。

备注

在创建本地存储库之前,您需要创建 密钥

以下示例中的代码创建了一个名为 snowflake_extensions 的 Git 存储库暂存区。该暂存区指定 git_api_integration API 集成和带有身份验证凭据的 git_secret 密钥。

USE ROLE securityadmin;
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 = git_api_integration
  GIT_CREDENTIALS = myco_git_secret
  ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
Copy
语言: 中文