CREATE GIT REPOSITORY
CREATE GIT REPOSITORY
스키마에 Snowflake Git 저장소 클론을 만들거나 기존 Git 저장소 클론을 교체하는 명령이에요. 이 객체는 스테이지·함수·프로시저를 관리하기 위해 원격 Git 저장소를 참조하게 해요.
출처: 문서
본문
스키마에 Snowflake Git 저장소 클론을 만들거나 기존 Git 저장소 클론을 교체해요.
개요는 Snowflake에서 Git 저장소 사용하기(Using a Git repository in Snowflake)를 참고해요.
함께 보기: ALTER GIT REPOSITORY, DESCRIBE GIT REPOSITORY, DROP GIT REPOSITORY, SHOW GIT BRANCHES, SHOW GIT REPOSITORIES, SHOW GIT TAGS
구문 (Syntax)
CREATE [ OR REPLACE ] GIT REPOSITORY [ IF NOT EXISTS ] <name>
ORIGIN = '<repository_url>'
API_INTEGRATION = <integration_name>
[ GIT_CREDENTIALS = <secret_name> ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
필수 매개변수 (Required parameters)
name
만들 Git 저장소 클론의 식별자를 지정해요.
식별자에 공백이나 특수 문자가 포함되면 전체 문자열을 큰따옴표로 감싸야 해요. 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
ORIGIN = 'repository_url'
이 Git 저장소 클론이 나타내는 원격 Git 저장소의 원본(origin) URL을 지정해요. URL은 HTTPS를 사용해야 해요.
Snowflake는 모든 HTTPS Git 저장소 URL을 지원해요. 예를 들어 자체 도메인 안의 회사 Git 서버에 사용자 지정 URL을 지정할 수 있어요.
명령줄에서 로컬 저장소 안의 git config 명령으로 ORIGIN 매개변수에 사용할 값을 얻을 수 있어요. 다음 예시와 같아요.
$ git config --get remote.origin.url
https://github.com/mycompany/My-Repo.git
API_INTEGRATION = integration_name
허용된 자격 증명과 대상 URL의 접두사 같은 원격 Git 저장소에 대한 정보를 담은 API INTEGRATION을 지정해요.
여기서 지정하는 API 인티그레이션은 API_PROVIDER 매개변수의 값이 git_https_api로 설정되어 있어야 해요.
API 인티그레이션에 대한 참조 정보는 CREATE API INTEGRATION을 참고해요.
선택 매개변수 (Optional parameters)
GIT_CREDENTIALS = secret_name
원격 Git 저장소로 인증하는 데 사용할 자격 증명이 담긴 Snowflake 시크릿(secret)을 지정해요. 이 매개변수를 생략하면 API 인티그레이션이 지정한 기본 시크릿을 사용하거나, 해당 인티그레이션이 인증을 요구하지 않는 경우 사용해요.
모범 사례로 시크릿의 PASSWORD 값에 개인용 액세스 토큰(personal access token)을 사용해요. GitHub에서 개인용 액세스 토큰을 만드는 방법은 GitHub 문서의 개인용 액세스 토큰 관리(Managing your personal access tokens)를 참고해요.
여기서 지정하는 시크릿은 이 명령의 API_INTEGRATION 매개변수로 지정한 API 인티그레이션의 ALLOWED_AUTHENTICATION_SECRETS 매개변수가 지정한 시크릿이어야 해요.
- 기본값: 값 없음
시크릿에 대한 참조 정보는 CREATE SECRET을 참고해요.
COMMENT = 'string_literal'
Git 저장소 클론에 대한 설명(comment)을 지정해요.
- 기본값: 값 없음
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
태그 이름과 태그 문자열 값을 지정해요.
태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256이에요.
문에서 태그를 지정하는 방법에 대한 정보는 태그 할당량(Tag quotas)을 참고해요.
접근 제어 요구 사항 (Access control requirements)
이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.
| 권한 (Privilege) | 객체 (Object) | 비고 |
|---|---|---|
| CREATE GIT REPOSITORY | Schema | |
| USAGE | API integration | 이 명령의 API INTEGRATION 매개변수로 지정된 인티그레이션 |
| USAGE | Secret | 이 명령의 GIT_CREDENTIALS 매개변수로 지정된 시크릿 |
스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.
사용 메모 (Usage notes)
OR REPLACE와 IF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.
CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.
2GB보다 큰 Git 저장소는 지원되지 않아요. 제한 사항의 전체 목록은 Snowflake에서 Git 제한 사항(Git in Snowflake limitations)을 참고해요.
예시 (Examples)
다음 예시 코드는 원격 저장소의 원본 URL이 https://github.com/my-account/snowflake-extensions.git인 snowflake_extensions라는 Git 저장소 클론을 만들어요. git_api_integration이라는 API 인티그레이션을 사용하며, 원격 저장소로 인증하기 위한 자격 증명을 저장하는 git_secret이라는 시크릿도 사용해요.
원격 Git 저장소와의 인티그레이션 설정에 대한 자세한 내용은 Snowflake가 Git을 사용하도록 설정(Setting up Snowflake to use Git)을 참고해요.
CREATE OR REPLACE GIT REPOSITORY snowflake_extensions
API_INTEGRATION = git_api_integration
GIT_CREDENTIALS = git_secret
ORIGIN = 'https://github.com/my-account/snowflake-extensions.git';
더 알아보기 (Learn more)
- Snowflake에서 Git 저장소 사용하기 — Git 저장소 개요
- ALTER GIT REPOSITORY — Git 저장소 수정
- DROP GIT REPOSITORY — Git 저장소 삭제