Gitを使用するためのSnowflakeの設定¶
SnowflakeアカウントをリモートGitリポジトリに接続すると、SnowflakeはGitリポジトリクローンを作成し、リポジトリ内のすべてのファイルの最新バージョンをコピー(シャロークローン)して、リモートリポジトリの場所に関するメタデータと、認証情報(必要な場合)、およびSnowflakeがGitリポジトリ API とやり取りする構成の詳細を保存します。
要件に応じて、認証用のコンポーネントを構成することで、Git API との相互作用と、Snowflakeとクラウドサービスプロバイダー間のプライベートリンクを介した通信により、リモートGitリポジトリがSnowflake内のワークフローの不可欠な部分になるようにSnowflakeを設定できます。
構成モデルを選択する¶
ネットワークとワークフローの要件に応じて、いくつかの方法でリモートのGitリポジトリにアクセスできるようにSnowflakeを構成できます。以下は、ユースケースの例と、それらをサポートするために使用するリポジトリアクセス戦略の一覧です。
- ファイルのプル、プッシュ、作成を含むワークフローを通じて、Gitリポジトリ上のファイルを操作します。 - Snowflakeワークスペース の使用を検討してください。github.comでリポジトリを使用している場合は、:ref:` OAuth <label-git_setup_oauth> で認証できます`。 
- データパイプラインまたは ML プロジェクトの一部として、Gitリポジトリ上のファイルを参照します。 - スクリプトプロセスがリポジトリにアクセスする場合は、トークンを使用した認証 を検討してください。 
- スクリプトまたはノートブックファイルを実行するために、パブリックリポジトリ(Snowflakeラボを含む)をクローンすることから始めましょう。 - .sqlファイル、 Snowflakeノートブック の- .ipynbファイル、または Snowflakeワークスペース の- .pyファイルのワークスペースを使用できます。
以下では、パブリックネットワークまたはプライベートネットワークでアクセスするかどうかのオプションについて説明します。
| パブリックネットワーク経由でのアクセス | プライベートネットワーク経由でのアクセス | 
|---|---|
| パブリックネットワーク経由でのアクセス により、Snowflakeクラウドプロバイダーデプロイメントの IP 範囲全体を使って、リモートのGitリポジトリサーバーを認証できます(Snowflakeは静的 IP 範囲を提供しないため)。 
 | プライベートネットワーク経由でのアクセス では、Snowflakeクラウドプロバイダーデプロイメントの IP 範囲全体にGitサーバーへのアクセスを許可する必要がなくなります。 Snowflakeとクラウドインフラストラクチャ間のアウトバウンドプライベートリンクを介して、アウトバウンド接続を確立するようにSnowflakeを構成できます。Snowflakeは、この接続を介してGitリポジトリサーバーにGitトラフィックをルーティングします。 
 | 
パブリックネットワークを介してアクセスするためにSnowflakeを構成する¶
パブリックネットワークを介してGitリポジトリにアクセスするようSnowflakeを設定できます。次の戦略のいずれかを使用して、Snowflakeを認証させることができます。
- 認証なし。 - Gitリポジトリサーバーの詳細を含む API 統合を構成します。 
- 個人用アクセストークンなど トークンで認証する。 - ユーザー名とトークンを含むシークレットを構成したら、認証時にSnowflakeがシークレットを使用できるよう API 統合を構成します。 
- OAuth フロー で認証する。 - 以下の認証タイプのいずれかを許可する API 統合を構成します。OAuth2、個人用アクセストークン、または認証なし。 - 注釈 - OAuth を使用してGitリポジトリを操作できるのは、リポジトリが`github.com <https://github.com/>`_でホストされている場合のみに限られます。 
認証なし用に構成する¶
 
認証なしでGitリポジトリを使用するためにSnowflakeを設定するには、次のステップに従います。
- 認証なしでアクセスをサポートする API 統合を作成し、次の詳細を指定します。 - API_PROVIDER パラメーターの値としての - git_https_api
- API_ALLOWED_PREFIXES パラメーターの値として、リクエストを制限する必要がある HTTPS エンドポイント 
 - 詳細については、 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リポジトリのクローンを作成します。 
トークンによる認証用に構成する¶
 
ユーザー名と個人アクセストークン(PAT)などのトークンを使用して、SnowflakeにGitリポジトリで認証させるには、次のステップに従います。
- 基本認証シークレット に認証情報を提供します。 - Snowflakeがリポジトリでの認証に使用する認証情報を提供するには、以下を含むシークレットを作成します。 - passwordの TYPE 値
- ユーザー名と、個人アクセストークン(PAT)などのトークン - GitリポジトリがBitbucketでホストされている場合は、ユーザー名の値として - x-token-authを指定します。- 注釈 - GitHub で個人用アクセストークンを作成する方法については、 ` ドキュメントの <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 統合を作成します。 - 認証なしでGitリポジトリにアクセスできる API 統合を作成するには、次の詳細を指定します。 - API_PROVIDER パラメーターの値としての - git_https_api
- API_ALLOWED_PREFIXES パラメーターの値として、リクエストを制限する必要がある HTTPS エンドポイント 
 - 詳細については、 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 で認証するために構成する¶
注釈
OAuth を使用してGitリポジトリを操作できるのは、リポジトリが`github.com <https://github.com/>`_でホストされている場合のみに限られます。
 
OAuth フローを使用してリモートGitリポジトリで認証するようにSnowflakeを設定するには、以下のステップに従います。
- OAuth による認証をサポートする API 統合を作成します。 - OAuth2 フローで認証コードを指定する場合、次を指定する API 統合を作成します。 - API_PROVIDER パラメーターの値としての - git_https_api
- API_ALLOWED_PREFIXES パラメーターの値として、リクエストを制限する必要がある HTTPS エンドポイント - これは - https://github.comのプレフィックスである必要があります。OAuth を使用した認証は、github.comでホストされているリポジトリでのみサポートされます。
- 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トラフィックをルーティングします。
プライベートリンク接続を使用すると、GitサーバーへのアクセスをSnowflakeクラウドプロバイダーデプロイメントの IP 範囲全体に許可する必要がなくなります。このセクションでは、高レベルのステップについて説明します。
- 
Snowflakeとクラウドサービスインフラストラクチャの両方に構成の変更を適用します。このトピックでは、Snowflake側の手順について説明します。クラウドサービスプロバイダーの構成など、すべての手順の詳細については、ナレッジベース記事 プライベートリンクを介してSnowflakeとのGit統合を構成する をご参照ください。 
注釈
Snowflakeは、同じクラウドおよびリージョン内の接続のみをサポートします。たとえば、Snowflakeのデプロイメントがus-west-2リージョンの AWS にある場合、他のコンポーネントもそのリージョンにある必要があります。
プライベートリンクの接続を構成する¶
リモートGitリポジトリにアクセスできるようSnowflakeを構成する前に、Snowflakeとクラウドサービスプロバイダーの間にプライベートリンクを設定する必要があります。
Snowflakeとインフラストラクチャの両方に構成の変更を適用するには、次のステップに従います。
- クラウドサービスプロバイダーで、Snowflakeプライベートエンドポイントサービスからリクエストを受信するプライベートリンクサービスを作成します。 - 詳細については、ナレッジベース記事 プライベートリンクを介してSnowflakeとのGit統合を構成する をご参照ください。 
- Snowflakeで、プライベート IP を介してインフラストラクチャにアクセスする、プライベートエンドポイントをプロビジョニングします。 - エンドポイントをプロビジョニングするには、次の2つの引数を持つ 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 ); - SELECT SYSTEM$PROVISION_PRIVATELINK_ENDPOINT( 'projects/my-google-project/regions/us-east4/serviceAttachments/gitservice', // Service attachement field 'git_address.com' // Git server domain ); 
- クラウドサービスプロバイダーで、Snowflakeプライベートエンドポイント設定を受け入れて、プライベートリンク接続の設定を完了します。 
- プロビジョニングのステータスを確認するには、SYSTEM$GET_PRIVATELINK_ENDPOINTS_INFO システム関数を呼び出します。 
リモートGitリポジトリへのSnowflakeアクセスを構成する¶
Snowflakeとクラウドサービスプロバイダーの間にプライベートリンクを設定したら、リモートGitリポジトリへのSnowflakeアクセスを構成できます。
- トークンでの認証をサポートする 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 統合を作成し、次の詳細を指定します。 - git_https_apiに設定された API_PROVIDERパラメーター
- ベースの URLに API_ALLOWED_PREFIXES を設定すると、その下でアクセスが許可されます 
- TRUEに設定されたUSE_PRIVATELINK_ENDPOINTパラメーター
- 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 統合を作成し、次の詳細を指定します。 - git_https_apiに設定された API_PROVIDERパラメーター
- ベースの URLに API_ALLOWED_PREFIXES を設定すると、その下でアクセスが許可されます 
- TRUEに設定されたUSE_PRIVATELINK_ENDPOINTパラメーター
- 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がリポジトリでの認証に使用する認証情報を提供するには、以下を含むシークレットを作成します。 - passwordの TYPE 値
- ユーザー名と、個人アクセストークン(PAT)などのトークン - 注釈 - GitHub で個人用アクセストークンを作成する方法については、 ` ドキュメントの <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リポジトリクローンを作成する¶
リモートの Git リポジトリで動作するように Snowflake をセットアップするには、リモートリポジトリから取得したファイルを含む Git リポジトリのクローンを Snowflake に作成します。
注釈
このセクションのステップを開始する前に、次のことを考慮してください。まず シークレット(リモートリポジトリに認証が必要な場合)、API 統合、およびSnowflakeとクラウドサービスプロバイダー間のプライベートリンク接続など、必要な可能性のあるコンポーネントを構成します。
注釈
Snowsight でのGitワークスペースの作成に関する情報は、Gitワークスペースの作成 をご参照ください。
Snowflakeの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が使用する認証情報(必要な場合) - GIT_CREDENTIALS パラメーターは、作成したSnowflakeの シークレット を指定します。 
- Snowflakeとリポジトリ :doc:` のやり取りの詳細を指定する API </sql-reference/sql/create-api-integration> 統合 `API 
Git リポジトリのクローンを作成するには、 Snowsight または SQL を使います。
注釈
Gitリポジトリクローンを作成する前に、シークレット </sql-reference/sql/create-secret>`(リモートリポジトリに認証が必要な場合)および :doc: API 統合 </sql-reference/sql/create-api-integration>` を作成する必要があります。
次の例のコードは、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 にサインインします。 
- ナビゲーションメニューで Catalog » Database Explorer を選択します。 
- オブジェクトエクスプローラーで、作成する 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 ディレクトリに表示されます。リポジトリディレクトリ、ブランチ、タグを一覧表示するページも表示されます。