CREATE IMAGE REPOSITORY

CREATE IMAGE REPOSITORY

현재 스키마에 새 이미지 저장소(image repository)를 만드는 명령이에요. 이미지 저장소는 컨테이너 이미지를 저장·관리하는 데 사용하며, Snowflake는 내부 이미지 레지스트리 서비스로 이진 파일을 처리하고 암호화해요.

출처: 문서

본문

현재 스키마에 새 이미지 저장소를 만들어요.

함께 보기: DROP IMAGE REPOSITORY, SHOW IMAGE REPOSITORIES

구문 (Syntax)

CREATE [ OR REPLACE ] IMAGE REPOSITORY [ IF NOT EXISTS ] <name>
  [ ENCRYPTION = ( TYPE = 'SNOWFLAKE_FULL' | TYPE = 'SNOWFLAKE_SSE' ) ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]

필수 매개변수 (Required parameters)

name 이미지 저장소의 식별자(즉 이름)를 지정하며, 저장소가 만들어지는 스키마 안에서 고유해야 해요.

특수 문자나 대소문자 구분을 위한 인용 이름(quoted names)은 지원되지 않아요. 이 제약은 이미지 저장소를 만드는 데이터베이스와 스키마 이름에도 동일하게 적용돼요. 즉, 이미지 저장소를 만들 때 따옴표가 없는 데이터베이스·스키마 이름이 유효해요.

선택 매개변수 (Optional parameters)

ENCRYPTION = ( TYPE = 'SNOWFLAKE_FULL' | TYPE = 'SNOWFLAKE_SSE' ) 이미지 저장소에 저장되는 이진 파일에 사용할 암호화 유형을 지정해요. 이미지 저장소를 만든 뒤에는 암호화 유형을 변경할 수 없어요.

TYPE = ... 사용할 암호화 유형을 지정해요.

⚠️ 중요: 보안 규정 준수를 위해 Tri-Secret Secure가 필요하다면 내부 스테이지에 SNOWFLAKE_FULL 암호화 유형을 사용해요. SNOWFLAKE_SSE는 Tri-Secret Secure를 지원하지 않아요.

가능한 값:

  • SNOWFLAKE_FULL: 호스트 온(온-호스트, 이미지 레지스트리 호스트) 및 서버 측 암호화예요. 데이터는 클라우드 서비스 공급자 스토리지(예: Snowflake 계정이 호스팅되는 Amazon S3)로 보내지기 전에 Snowflake의 이미지 레지스트리 서비스가 먼저 암호화해요.

    • Snowflake는 기본적으로 128비트 암호화 키로 AES-GCM을 사용해요. CLIENT_ENCRYPTION_KEY_SIZE 매개변수를 설정해 256비트 키를 구성할 수 있어요. 또한 모든 이진 파일은 서버 측에서 AES-256 강력 암호화로 자동 암호화돼요.
    • 참고: SNOWFLAKE_FULL 암호화에서는 Snowflake가 공용 이미지 저장소 API에 대한 요청을 제한(throttle)할 수 있어요. 이 제한은 Snowflake가 저장소에 대해 비정상적으로 많은 병렬 요청을 감지할 때만 발생해요. 서비스 생성에는 영향이 없어요.

  • SNOWFLAKE_SSE: 서버 측 암호화만 사용해요. 이진 파일은 Snowflake 계정이 호스팅되는 클라우드 서비스 공급자(예: Amazon S3)가 이미지 저장소 스토리지 영역에 도착할 때 암호화돼요.

  • 기본값: SNOWFLAKE_FULL

COMMENT = 'string_literal' 이미지 저장소에 대한 설명(comment)을 지정해요.

  • 기본값: 값 없음

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] ) 태그 이름과 태그 문자열 값을 지정해요.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256이에요.

문에서 태그를 지정하는 방법에 대한 정보는 태그 할당량(Tag quotas)을 참고해요.

접근 제어 요구 사항 (Access control requirements)

이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.

권한 (Privilege) 객체 (Object) 비고
CREATE IMAGE REPOSITORY Schema

스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.

지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.

사용 메모 (Usage notes)

메타데이터에 관해서는 다음 사항에 주의해요.

⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.

OR REPLACEIF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.

CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.

예시 (Examples)

이미지 저장소를 만들어요.

CREATE OR REPLACE IMAGE REPOSITORY tutorial_repository;

SNOWFLAKE_FULL 암호화로 이미지 저장소를 만들어요.

CREATE OR REPLACE IMAGE REPOSITORY tutorial_repository
ENCRYPTION = (type = 'SNOWFLAKE_SSE');

설명과 태그가 있는 이미지 저장소를 만들어요.

CREATE IMAGE REPOSITORY tutorial_repository
  COMMENT = 'Repository for tutorial images'
  WITH TAG (cost_center = 'engineering');

더 알아보기 (Learn more)