Gitを使用するためのSnowflakeの設定

リモートの Git リポジトリを統合してリポジトリをクローンすると、Snowflake はリモートリポジトリの場所、認証情報(必要な場合)、Snowflake が Git リポジトリ API とどのようにやり取りするかの詳細を指定した Git リポジトリのクローンを作成します。

リモートの Git リポジトリを Snowflake で使用するには、以下の手順に従います。

  1. リモートリポジトリとの認証コードを保持するために、必要に応じて シークレットを作成します。

  2. API 統合を作成 して、SnowflakeとGitリポジトリ API の相互作用に関する詳細を指定します。

  3. Git リポジトリのクローンを作成 し、リモートリポジトリからファイルを同期できるようにします。

認証用の認証情報を含むシークレットを作成する

リモートの Git リポジトリに認証コードが必要な場合は、Snowflake がリモートリポジトリとの認証に使用できる認証コードが含まれている シークレットを作成する 必要があります。

そのシークレットは、さまざまな方法で使用できます。SnowflakeとGitリポジトリ API の相互作用を指定する API 統合を作成する ユーザーは、このシークレットを ALLOWED_AUTHENTICATION_SECRETS パラメーターの値として指定する必要があります。さらに、 SnowflakeがGitを使用するように設定 するユーザーがシークレットを指定します。

シークレットを作成するには、次の権限が付与されたロールを使用する必要があります。

  • シークレットを保存するスキーマでの CREATE SECRET

    詳細については、 CREATE SECRETアクセス制御の要件 をご参照ください。

  • 統合が含まれるデータベースとスキーマでの USAGE

ベストプラクティスとして、シークレットの PASSWORD 値には個人用アクセストークンを使用します。GitHub で個人用アクセストークンを作成する方法については、 GitHub ドキュメントの 個人用アクセストークンの管理 をご参照ください。

SQL:

CREATE SECRET コマンドを使用して、Gitリポジトリの認証情報を含むシークレットを作成できます。

次の例のコードは、ユーザー名と、認証情報として使用するユーザーの個人アクセストークンを含む myco_git_secret というシークレットを作成します。

USE ROLE ACCOUNTADMIN;
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 myco_git_secret
  TYPE = password
  USERNAME = 'gladyskravitz'
  PASSWORD = 'ghp_token';
Copy

リポジトリ API とやり取りするための API 統合を作成する

SnowflakeがGitリポジトリ API とやり取りする方法の詳細を指定するには、 API 統合を作成する必要があります。

Gitを使用するためにSnowflakeアカウントを設定する ユーザーは、使用する API 統合を指定します。

API 統合を作成するには、次の権限が付与されたロールを使用する必要があります。

  • アカウントに対する CREATE INTEGRATION

    詳細については、 CREATE API INTEGRATION アクセス制御の要件 をご参照ください。

  • シークレットを含むデータベースとスキーマでの USAGE

  • 統合が参照するシークレットでの USAGE

Gitリポジトリ API の API 統合を作成する際には、次を実行する必要があります。

  • API_PROVIDER パラメーターの値として git_https_api を指定します。

  • 認証コードが必要な場合は、 ALLOWED_AUTHENTICATION_SECRETS パラメーターの値として、 リモートリポジトリ認証情報を含むシークレット を指定します。次のいずれかを指定できます。

    • リポジトリで認証するときにSnowflakeが使用できる1つ以上のSnowflakeシークレット(コンマ区切りのリスト内)です。

    • all (大文字と小文字は区別されません) を使うと、どんなシークレットでも使えるようになります。

    • none (大文字と小文字は区別されません) で、シークレットを使用できないように指定します。

SQL:

CREATE API INTEGRATION コマンドを使用して、SnowflakeとGitリポジトリ API とのやり取りの詳細を指定する API 統合を作成できます。

次の例のコードは、 git_api_integration という API 統合を作成します。

USE ROLE ACCOUNTADMIN;
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 = (myco_git_secret)
  ENABLED = TRUE;
Copy

リモートリポジトリからSnowflake Gitリポジトリのクローンを作成します。

リモートの Git リポジトリで動作するように Snowflake をセットアップするには、リモートリポジトリから取得したファイルを含む Git リポジトリのクローンを Snowflake に作成します。

注釈

このセクションのステップを開始する前に、 まず シークレット (リモートリポジトリに認証が必要な場合)および API 統合 を作成することを検討してください。これら両方が必要になる場合があります。

Git リポジトリのクローンでは、以下のように指定します。

  • リモートリポジトリのオリジン

    Gitでは、 origin はリモートリポジトリの URL の略記です。リモートの Git リポジトリを使用するように Snowflake をセットアップする際には、 URL を使用してください。URL には HTTPS を使用する必要があります。オリジンの URL は次の方法で取得できます。

    • GitHub ユーザーインターフェイスで、リポジトリのホームページからオリジンの URL を取得するには、 Code ボタンを選択し、ボタンの下に表示されるボックスから HTTPS URL をコピーします。

    • コマンドラインから、次の例のように、ローカルリポジトリ内から git config コマンドを使用します。

      $ git config --get remote.origin.url
      
      Copy

      コマンドは次のような出力を生成します。

      https://github.com/my-account/snowflake-extensions.git
      

      git config に関する参照情報については、 gitドキュメント をご参照ください。

  • リポジトリで認証するときにSnowflakeが使用する 認証情報(必要な場合)

  • Snowflakeとリポジトリ API のやり取りの詳細を指定する API 統合

SnowflakeでGitリポジトリのクローンを作成するには、以下の権限を付与されたロールを使用する必要があります。

  • Git リポジトリのクローンを含むスキーマ上の CREATE GIT REPOSITORY

    詳細については、 CREATE GIT REPOSITORY アクセス制御の要件 をご参照ください。

  • Gitで認証するための認証情報を含むシークレットの USAGE

  • API 統合で、Git リポジトリのクローンが参照している USAGE

Git リポジトリのクローンを作成するには、 Snowsight または SQL を使います。

注釈

Git リポジトリのクローンを作成する前に、 シークレット (リモートリポジトリが認証を必要とする場合) と API 統合 を作成する必要があります。

次の例のコードは、 snowflake_extensions という Git リポジトリのクローンを作成します。クローンは git_api_integration API 統合と myco_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 = git_api_integration
  GIT_CREDENTIALS = myco_git_secret
  ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
Copy