CREATE ARTIFACT REPOSITORY
CREATE ARTIFACT REPOSITORY
현재 또는 지정된 스키마에 새 아티팩트 저장소(artifact repository)를 만들거나 기존 아티팩트 저장소를 교체하는 명령이에요. 아티팩트 저장소는 하위 Snowflake 객체가 사용하는 버전 있는 패키지를 저장해요. 두 가지 저장소 유형이 지원돼요:
APPLICATION: CREATE APPLICATION SERVICE가 배포하는 패키징된 애플리케이션 빌드를 저장해요.PYPI: API 통합을 통해 외부 Python 패키지 인덱스에서 해석된 Python 패키지를 저장해요.
출처: 문서
본문
관련 명령: ALTER ARTIFACT REPOSITORY, DESCRIBE ARTIFACT REPOSITORY, DROP ARTIFACT REPOSITORY, SHOW ARTIFACT REPOSITORIES
구문 (Syntax)
CREATE [ OR REPLACE ] ARTIFACT REPOSITORY [ IF NOT EXISTS ] <name>
TYPE = { APPLICATION | PYPI }
[ API_INTEGRATION = '<integration_name>' ]
[ INDEX_URL = '<url>' ]
[ AUTHENTICATION_SECRET = <secret_name> ]
[ PACKAGE_RETENTION = { ON_OBJECT_CREATION } ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
[ COMMENT = '<string_literal>' ]
참고:
INDEX_URL,AUTHENTICATION_SECRET,PACKAGE_RETENTION은 퍼블릭 프리뷰인 고객 호스팅 Python 아티팩트 저장소에 적용돼요. 자세한 내용은 고객 호스팅 Python 아티팩트 저장소 통합을 참고하세요.
필수 매개변수 (Required parameters)
name — 아티팩트 저장소의 식별자를 지정해요. 식별자는 저장소가 만들어지는 스키마에서 고유해야 해요. 자세한 내용은 식별자 요구사항을 참고하세요.
TYPE = { APPLICATION | PYPI } — 저장소가 저장하는 콘텐츠의 유형을 지정해요.
APPLICATION: 버전 있는 애플리케이션 패키지를 저장해요. 저장소가 CREATE APPLICATION SERVICE에서 참조될 때 필요해요.PYPI: 외부 패키지 인덱스에서 가져온 Python 패키지를 저장해요. 이 유형에는API_INTEGRATION매개변수가 필요해요.
선택 매개변수 (Optional parameters)
API_INTEGRATION = 'integration_name' — 외부 Python 패키지 인덱스에 대한 접근을 제공하는 API 통합을 지정해요. TYPE = PYPI일 때 필요하고, TYPE = APPLICATION일 때는 사용되지 않아요.
INDEX_URL = 'url' — 고객 호스팅 Python 아티팩트 저장소가 패키지를 가져오는 PyPI 호환 패키지 인덱스의 HTTPS URL을 지정해요(예: 'https://nexus.example.com/repository/pypi-proxy/simple/'). 호스트는 참조된 API 통합의 API_ALLOWED_PREFIXES로 커버되어야 해요. 고객 호스팅 PyPI 저장소에만 사용돼요.
AUTHENTICATION_SECRET = secret_name — Snowflake가 고객 호스팅 Python 아티팩트 저장소에 인증하는 데 사용하는 비밀을 지정해요. 비밀은 참조된 API 통합의 ALLOWED_AUTHENTICATION_SECRETS에 포함되어야 해요. 고객 호스팅 PyPI 저장소에만 사용돼요.
PACKAGE_RETENTION = ON_OBJECT_CREATION — Snowflake가 고객 호스팅 Python 아티팩트 저장소에서 다운로드한 패키지를 언제 보관할지 제어해요:
- 설정되지 않으면(기본값) 각
CREATE FUNCTION또는CREATE PROCEDURE후에 패키지가 백그라운드에서 비동기적으로 보관돼요. ON_OBJECT_CREATION으로 설정하면CREATE FUNCTION과CREATE PROCEDURE가 문이 반환되기 전에 참조된 모든 패키지를 다운로드하고 보관해요.
자세한 내용은 패키지 보관 및 캐싱을 참고하세요. 고객 호스팅 PyPI 저장소에만 사용돼요.
TAG ( tag_name = 'tag_value' [ , ... ] ) — 저장소에 태그를 할당해요. 객체 태깅에 대한 자세한 내용은 객체 태깅 소개를 참고하세요.
COMMENT = 'string_literal' — 아티팩트 저장소에 대한 주석을 지정해요.
기본값: 값 없음
접근 제어 요구사항 (Access control requirements)
역할이 아래 표의 객체를 소유하지 않으면, 그 객체들에 대해 나열된 권한이 있어야 해요.
| 권한 | 객체 | 설명 |
|---|---|---|
| CREATE ARTIFACT REPOSITORY | Schema | 스키마에 새 아티팩트 저장소를 만드는 데 필요해요. |
| USAGE | API integration | TYPE = PYPI일 때만 필요해요. |
아티팩트 저장소가 만들어진 후 다음 권한을 부여할 수 있어요: CREATE APPLICATION SERVICE
| 권한 | 객체 | 설명 |
|---|---|---|
| OWNERSHIP | Artifact repository | 새 패키지 버전 게시와 저장소 삭제를 포함한 전체 제어권을 부여해요. |
| READ | Artifact repository | 패키지 및 아티팩트 다운로드를 허용해요. 저장소를 참조하는 모든 역할에 부여해요. |
스키마의 객체를 조작하려면 상위 데이터베이스와 상위 스키마 각각에 대해 하나 이상의 권한이 필요해요.
지정한 권한 집합을 가진 사용자 정의 역할을 만드는 방법은 사용자 정의 역할 만들기를 참고하세요.
보호 객체에서 SQL 작업을 수행할 때 역할과 권한 부여에 대한 일반 정보는 접근 제어 개요를 참고하세요.
사용 메모 (Usage notes)
APPLICATION저장소는 하나 이상의 패키지를 보유해요. 각 패키지에는 하나 이상의 버전이 있어요. 새 버전은 저장소를 대상으로 하는 빌드로 만들어져요. 자세한 내용은 Snowflake App Runtime 시작하기를 참고하세요.- 저장소의 유형은 만든 후 변경할 수 없어요. 유형을 전환하려면 저장소를 삭제하고 새로 만들어요.
CREATE OR REPLACE는 저장소를 원자적으로 삭제하고 다시 만들어요. 저장소의 모든 패키지와 버전이 제거돼요.- OR REPLACE와 IF NOT EXISTS 절은 상호 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.
- CREATE OR REPLACE <object> 문은 원자적이에요. 즉 객체가 교체될 때 이전 객체가 삭제되고 새 객체가 단일 트랜잭션으로 생성돼요.
예시 (Examples)
애플리케이션 패키지용 아티팩트 저장소를 만들어요.
CREATE ARTIFACT REPOSITORY my_app_repo
TYPE = APPLICATION
COMMENT = 'Repository for my team''s apps';
기존 API 통합을 사용하는 PyPI 지원 저장소를 만들어요.
CREATE ARTIFACT REPOSITORY my_pypi_repo
TYPE = PYPI
API_INTEGRATION = pypi_integration;