CREATE APPLICATION PACKAGE
CREATE APPLICATION PACKAGE
Snowflake Native App의 데이터 콘텐츠와 애플리케이션 로직을 담는 새 애플리케이션 패키지(application package)를 만드는 명령이에요. 애플리케이션 패키지는 앱에 대한 다음 정보를 포함해요:
-
앱의 버전과 패치 번호.
-
애플리케이션에 제공되는 데이터 콘텐츠.
-
앱의 설정 스크립트(setup script).
-
앱의 매니페스트 파일(manifest file).
출처: 문서
본문
Snowflake Native App Framework는 지원되는 클라우드 플랫폼에서 일반 제공(Generally Available)돼요. 자세한 내용은 Support for private connectivity, VPS, and government regions를 참고하세요.
관련 명령: ALTER APPLICATION PACKAGE, DROP APPLICATION PACKAGE, SHOW APPLICATION PACKAGES
구문 (Syntax)
CREATE APPLICATION PACKAGE [ IF NOT EXISTS ] <name>
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
[ DISTRIBUTION = { INTERNAL | EXTERNAL } ]
[ LISTING_AUTO_REFRESH = { TRUE | FALSE } ]
[ MULTIPLE_INSTANCES = TRUE ]
[ ENABLE_RELEASE_CHANNELS = { TRUE | FALSE } ]
필수 파라미터 (Required parameters)
*name*
애플리케이션 패키지의 식별자를 지정해요. 계정 내에서 고유해야 해요.
식별자는 영문자로 시작해야 하고, 전체 식별자 문자열을 큰따옴표로 감싸지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 감싼 식별자는 대소문자를 구분해요.
자세한 내용은 Identifier requirements를 참고하세요.
선택 파라미터 (Optional parameters)
DATA_RETENTION_TIME_IN_DAYS = *integer*
애플리케이션 패키지에 만들어진 모든 스키마의 기본 Time Travel 보존 시간을 지정해요.
참고
CLONE과 UNDROP는 APPLICATION PACKAGE 객체에서 지원되지 않아요. 다른 데이터베이스 객체와의 일관성을 위해 파라미터 설명에 나열되어 있지만, 어떤 작업도 애플리케이션 패키지에서 수행할 수 없어요.
자세한 내용은 Understanding & using Time Travel을 참고하세요.
이 객체 수준 파라미터에 대한 자세한 설명과 객체 파라미터에 대한 자세한 정보는 Parameters를 참고하세요.
값:
-
Standard Edition:
0또는1 -
Enterprise Edition: 영구 데이터베이스의 경우
0~90
기본값:
-
Standard Edition:
1 -
Enterprise Edition(이상):
1(계정 수준에서 다른 기본값이 지정되지 않은 경우)
참고
0 값은 데이터베이스의 Time Travel을 비활성화해요.
MAX_DATA_EXTENSION_TIME_IN_DAYS = *integer*
테이블의 스트림이 오래되(stale)지 않도록 하기 위해 Snowflake가 애플리케이션 패키지의 테이블 데이터 보존 기간을 연장할 수 있는 최대 일수를 지정하는 객체 파라미터예요.
이 파라미터에 대한 자세한 설명은 MAX_DATA_EXTENSION_TIME_IN_DAYS를 참고하세요.
DEFAULT_DDL_COLLATION = '*collation_specification*'
애플리케이션 패키지에 추가된 모든 스키마와 테이블의 기본 콜레이션 사양(collation specification)을 지정해요. 기본값은 스키마와 개별 테이블 수준에서 재정의할 수 있어요.
파라미터에 대한 자세한 내용은 DEFAULT_DDL_COLLATION을 참고하세요.
COMMENT = '*string_literal*'
애플리케이션 패키지에 대한 주석을 지정해요.
기본값: 값 없음
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
태그(tag) 이름과 태그 문자열 값을 지정해요.
태그 값은 항상 문자열이고 태그 값의 최대 문자 수는 256이에요.
문에서 태그를 지정하는 방법에 대한 정보는 Tag quotas를 참고하세요.
DISTRIBUTION = { INTERNAL | EXTERNAL }
제공자가 애플리케이션 패키지를 리스팅의 데이터 제품으로 사용할 때 만들 수 있는 리스팅 유형을 지정해요.
-
INTERNAL은 제공자가 애플리케이션 패키지가 만들어진 조직 내에서만 프라이빗 리스팅을 만들 수 있음을 나타내요. DISTRIBUTION 속성이 INTERNAL로 설정되면 자동화된 보안 검사가 수행되지 않아요. -
EXTERNAL은 제공자가 애플리케이션 패키지가 만들어진 조직 밖에서도 리스팅을 만들 수 있음을 나타내요.
DISTRIBUTION 속성 설정과 자동화된 보안 검사에 대한 정보는 Run the automated security scan을 참고하세요.
참고
DISTRIBUTION 파라미터를 EXTERNAL로 설정하면 애플리케이션 패키지에 정의된 각 활성 버전과 패치에 대한 자동화된 보안 검토가 트리거돼요.
자동화된 보안 검토 상태가 APPROVED가 될 때까지 다음 제한이 적용돼요:
-
버전이나 패치에 릴리스 지시문(release directive)을 설정할 수 없어요.
-
애플리케이션 패키지에 대한 리스팅을 게시할 수 없어요.
LISTING_AUTO_REFRESH = { TRUE | FALSE}
TRUE로 설정하면 애플리케이션 패키지의 릴리스 지시문에 변경이 있을 때 모든 원격 리전으로 복제를 시작해요. 릴리스 지시문이 변경되면 애플리케이션 패키지는 Cross-Cloud Auto-Fulfillment 스케줄을 기다리지 않아요.
MULTIPLE_INSTANCES = TRUE
소비자가 애플리케이션 패키지에서 앱의 여러 인스턴스를 설치할 수 있게 해요. 이 속성은 트라이얼 또는 유료 리스팅에 포함된 애플리케이션 패키지에는 설정할 수 없어요.
여러 인스턴스가 허용되면 소비자는 계정에 앱 최대 30개 인스턴스를 설치할 수 있어요.
주의
이 속성을 TRUE로 설정한 뒤에는 나중에 FALSE로 설정하거나 해제할 수 없어요.
ENABLE_RELEASE_CHANNELS = { TRUE | FALSE }
애플리케이션 패키지의 릴리스 채널(release channels)을 활성화하거나 비활성화해요.
-
TRUE는 릴리스 채널을 활성화해요. 이것이 기본값이에요. 이 파라미터를 생략해도 되며, 릴리스 채널은 자동으로 활성화돼요. -
FALSE는 릴리스 채널을 비활성화해요. 만들 때 이 값을 지정해 릴리스 채널을 사용하지 않도록 선택하고 대신 기존 버전·패치 관리 워크플로를 사용해요.
주의
이 속성을 TRUE로 설정한 뒤에는 나중에 FALSE로 설정하거나 해제할 수 없어요.
접근 제어 요구사항 (Access control requirements)
이 작업을 실행하는 역할은 최소한 다음 권한을 가져야 해요:
| Privilege | Object | Notes |
|---|---|---|
| CREATE APPLICATION PACKAGE | Account | 기본적으로 ACCOUNTADMIN 역할만 이 권한을 가져요. 필요에 따라 다른 역할에도 부여할 수 있어요. |
사용 참고사항 (Usage notes)
-
애플리케이션 패키지를 만들려면 호출자가 계정에 CREATE APPLICATION PACKAGE 권한이 있어야 해요.
-
애플리케이션 패키지에 상주할 수 있는 객체 유형이나 그 객체를 소유할 수 있는 역할(데이터베이스 또는 계정 수준)에는 제한이 없어요.
-
메타데이터에 관해: 고객은 Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감 데이터, 수출 통제 데이터 또는 기타 규제 데이터를 입력하지 않도록 해야 해요. 자세한 내용은 Metadata fields in Snowflake를 참고하세요.
-
CREATE OR REPLACE <object>문은 원자적이에요. 즉 객체를 교체할 때 기존 객체가 삭제되고 새 객체가 단일 트랜잭션으로 만들어져요.
예제 (Examples)
CREATE APPLICATION PACKAGE hello_snowflake_package;
+-----------------------------------------------------------------------+
| status |
|-----------------------------------------------------------------------|
| Application Package 'hello_snowflake_package' created successfully. |
+-----------------------------------------------------------------------+
더 알아보기 (Learn more)
ALTER APPLICATION PACKAGE, DROP APPLICATION PACKAGE, SHOW APPLICATION PACKAGES