Gitを使用するためのSnowflakeの設定¶
Gitリポジトリを統合してリポジトリをクローンすると、Snowflakeはリポジトリの場所、認証情報(必要な場合)、およびSnowflakeがGitリポジトリ API とやり取りする方法の詳細を指定するGitリポジトリステージを作成します。
SnowflakeでGitリポジトリを使用するには、次のステップに従います。
シークレットを作成 して、必要に応じてリポジトリで認証するための認証情報を含めます。
API 統合を作成 して、SnowflakeとGitリポジトリ API の相互作用に関する詳細を指定します。
Snowflake 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 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 myco_git_secret TYPE = password USERNAME = 'gladyskravitz' PASSWORD = 'ghp_token';
リポジトリ 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 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 = (myco_git_secret) ENABLED = TRUE;
Gitリポジトリステージを作成し、リポジトリをクローンする¶
SnowflakeをGitリポジトリで動作するように設定するには、リポジトリから取得されたファイルを格納するGitリポジトリステージを作成します。
注釈
このセクションのステップを開始する前に、 まず シークレット (リモートリポジトリに認証が必要な場合)および API 統合 を作成することを検討してください。これら両方が必要になる場合があります。
Gitリポジトリのステージでは、次のように指定します。
リポジトリのオリジン
Gitでは、
origin
はリモートリポジトリの URL の略記です。Gitリポジトリを使用するようにSnowflakeを設定するときは、この 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ドキュメント をご参照ください。
リポジトリで認証するときにSnowflakeが使用する 認証情報(必要な場合)
Snowflakeとリポジトリ API のやり取りの詳細を指定する API 統合
Gitリポジトリステージを作成するには、次の権限が付与されたロールを使用する必要があります。
リポジトリを含むスキーマの CREATE GIT REPOSITORY
詳細については、 CREATE GIT REPOSITORY アクセス制御の要件 をご参照ください。
Gitで認証するための認証情報を含むシークレットの USAGE
Gitリポジトリステージが参照する API 統合の USAGE
Snowsight または SQL のいずれかを使用してGit リポジトリステージを作成できます。
CREATE GIT REPOSITORY コマンドを使用してGitリポジトリステージを作成できます。
次の例のコードは、 snowflake_extensions
というGitリポジトリのステージを作成します。ステージでは、 git_api_integration
API 統合および認証用の認証情報を含む myco_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';
Snowsight を使用して、GitリポジトリとSnowflakeを統合できます。
Snowsight にサインインします。
ナビゲーションメニューで Data » Databases を選択します。
オブジェクトエクスプローラーで、作成するGitリポジトリのステージを含めるデータベースとスキーマを選択します。
Create » Git Repository を選択します。
Create Git Repository ダイアログの Repository Name に、スキーマ内でこのリポジトリを一意に識別する名前を入力します。
命名のガイドラインについては、 識別子の要件 をご参照ください。
Origin には、リモートリポジトリのオリジン URL を入力します。
API Integration ドロップダウンメニューから、リポジトリステージの作成時に参照する API 統合を選択します。
使用する API 統合がない場合は、 Create new API integration in Worksheets を選択し、 SQL を使用して作成してください。詳細については、 リポジトリ API とやり取りするための API 統合を作成する および CREATE API INTEGRATION をご参照ください。
オプション: Comment に、この統合について説明するテキストを入力します。
Authentication の場合、リモートリポジトリに認証が必要な場合は、トグルをオンにします。
トグルをオンにした場合は、 Secret ドロップダウンから、リモートリポジトリで認証するためにGit統合で参照する必要があるシークレットを選択します。
使用するシークレットがない場合は、 Create new secret in Worksheets を選択し、 SQL を使用してシークレットを作成してください。詳細については、 認証用の認証情報を含むシークレットを作成する および CREATE SECRET をご参照ください。
Create を選択します。
統合が正常に作成されると、リポジトリがスキーマの下の Git Repositories ディレクトリに表示されます。リポジトリディレクトリ、ブランチ、タグを一覧表示するページも表示されます。