CREATE APPLICATION

CREATE APPLICATION

새 Native App(애플리케이션)을 만들거나 기존 앱을 교체하는 명령이에요. 애플리케이션은 Snowflake Native App Framework에서 배포하는 데이터베이스 객체 유형이에요.

출처: 문서

본문

앱은 애플리케이션 패키지에서 또는 리스팅(listing)에서 만들 수 있어요.

구문 (Syntax)

CREATE APPLICATION <name> FROM APPLICATION PACKAGE <package_name>
   [ USING { <path_to_version_directory> | <version> [ PATCH <patch_num> ] } ]
   [ USING RELEASE CHANNEL { QA | ALPHA | DEFAULT } ]
   [ DEBUG_MODE = { TRUE | FALSE } ]
   [ COMMENT = '<string_literal>' ]
   [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
   [ BACKGROUND_INSTALL = { TRUE | FALSE } ]
   [ AUTHORIZE_TELEMETRY_EVENT_SHARING = { TRUE | FALSE } ]
   [ AUTHORIZE_RESTRICTED_PROVIDER_REMOTE_OPERATIONS_UNTIL = { '<timestamp>' | 'INDEFINITE' | 'NEVER' } ]
   [ WITH FEATURE POLICY = <policy_name> ]

CREATE APPLICATION <name> FROM LISTING <listing_global_name>
   [ USING RELEASE CHANNEL { QA | ALPHA | DEFAULT } ]
   [ COMMENT = '<string_literal>' ]
   [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
   [ BACKGROUND_INSTALL = { TRUE | FALSE } ]
   [ AUTHORIZE_TELEMETRY_EVENT_SHARING = { TRUE | FALSE } ]
   [ AUTHORIZE_RESTRICTED_PROVIDER_REMOTE_OPERATIONS_UNTIL = { '<timestamp>' | 'INDEFINITE' | 'NEVER' } ]
   [ WITH FEATURE POLICY = <policy_name> ]

필수 매개변수 (Required parameters)

name — 앱의 식별자를 지정해요. 계정에서 고유해야 해요. 또한 식별자는 알파벳 문자로 시작해야 하며, 전체 식별자 문자열을 큰따옴표로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없어요(예: "My object"). 큰따옴표로 묶은 식별자는 대소문자를 구분해요. 자세한 내용은 식별자 요구사항을 참고하세요.

FROM APPLICATION PACKAGE package_name — 앱을 만드는 데 사용하는 애플리케이션 패키지의 이름을 지정해요. 이 절을 사용해 스테이지나 버전/패치를 지정하지 않고 애플리케이션 패키지에서 앱을 만들려면 애플리케이션 패키지에 기본 릴리스 지시문(default release directive)이 정의되어 있어야 해요. 이 절은 애플리케이션 패키지와 같은 계정에서만 앱을 만들 수 있어요. 이 절로는 개발 모드에서 앱을 만들 수 없어요.

FROM LISTING listing_global_name — 앱을 만드는 데 사용되는 애플리케이션 패키지를 포함하는 리스팅의 전역 이름을 지정해요. 표시 이름이 아닌 리스팅 전역 이름(예: GZSNP47HXH1)을 사용해요.

USING RELEASE CHANNEL { QA | ALPHA | DEFAULT } — 앱을 만드는 데 사용되는 애플리케이션 패키지 또는 리스팅에 정의된 릴리스 채널을 지정해요. 이 절을 지정하지 않으면 기본 릴리스 채널이 사용돼요.

  • QA — 품질 보증 릴리스 채널.
  • ALPHA — 알파 릴리스 채널.
  • DEFAULT — 기본 릴리스 채널.

이 절은 릴리스 지시문이 정의된 애플리케이션 패키지에서 앱을 만들 때 또는 리스팅에서 앱을 만들 때만 사용할 수 있어요.

USING path_to_version_directory — 앱에 필요한 파일을 포함하는 스테이지의 경로를 지정해요.

USING version [ PATCH patch_num ] — 앱을 만드는 데 사용되는 애플리케이션 패키지에 정의된 버전, 그리고 선택적으로 패치를 지정해요.

선택 매개변수 (Optional parameters)

COMMENT = 'string_literal' — 앱에 대한 주석을 지정해요. 기본값: 값 없음

DEBUG_MODE = { TRUE | FALSE } — 만들고 있는 앱의 디버그 모드를 활성화하거나 비활성화해요. 디버그 모드를 사용하면 프로바이더가 앱의 내용을 볼 수 있어요.

  • TRUE — 설치된 앱에 디버그 모드를 활성화해요.
  • FALSE — 설치된 앱에 디버그 모드를 비활성화해요.

참고: 다음 조건에서만 디버그 모드를 활성화할 수 있어요:

  • 앱이 애플리케이션 패키지와 같은 계정에 있는 경우.
  • 앱이 특정 버전을 기반으로 하거나 이름 있는 스테이지의 파일에서 만들어지는 경우.

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )태그 이름과 태그 문자열 값을 지정해요. 태그 값은 항상 문자열이며, 최대 문자 수는 256이에요. 문에서 태그를 지정하는 방법은 태그 할당량을 참고하세요.

BACKGROUND_INSTALL = { TRUE | FALSE } — 리스팅에서 앱을 백그라운드로 만들어요. 이 절을 지정하면 명령이 즉시 프롬프트를 반환하고 설치 프로세스가 백그라운드에서 계속돼요. 설치 상태를 모니터링하려면 DESCRIBE APPLICATION 명령을 사용해요.

참고: 이 절을 사용하면 명령이 실패해도 앱이 생성돼요. 이 경우 DROP APPLICATION 명령으로 객체를 삭제한 뒤 CREATE APPLICATION 명령을 다시 실행해요. 이 절은 주로 Snowsight가 Snowflake Native App을 백그라운드로 설치할 때 사용돼요. 백그라운드 설치는 소비자가 설치 중에 Snowsight의 리스팅에서 이동할 수 있게 해요. 프로바이더는 리스팅을 게시하기 전에 리스팅에서 Native App 설치를 테스트할 때 이 절을 사용할 수 있어요.

AUTHORIZE_TELEMETRY_EVENT_SHARING = { TRUE | FALSE } — 앱에서 로깅 및 이벤트 공유를 활성화해요.

AUTHORIZE_RESTRICTED_PROVIDER_REMOTE_OPERATIONS_UNTIL = { '<timestamp>' | 'INDEFINITE' | 'NEVER' } — 프로바이더가 run_sql 작업 같은 제한된 원격 앱 작업을 앱에서 수행할 수 있는지 지정해요.

  • '<timestamp>' — 지정된 타임스탬프까지 프로바이더가 제한된 원격 앱 작업을 수행하도록 승인해요.
  • 'INDEFINITE' — 프로바이더가 제한된 원격 앱 작업을 무기한 수행하도록 승인해요.
  • 'NEVER' — 제한된 원격 앱 작업에 대한 승인을 취소해요.

기본값: 'NEVER'

WITH FEATURE POLICY = policy_name — 지정된 피처 정책으로 앱을 만들어요. 앱이 피처 정책이 금지하는 객체(예: 데이터베이스)를 만들려고 하면 명령이 실패해요.

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

이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요:

권한 객체 설명
CREATE APPLICATION Account
DEVELOP Application package
INSTALL Application package
IMPORT SHARE + CREATE APPLICATION Account 애플리케이션 패키지를 포함하는 계정과 다른 계정에서 앱을 만들려면 필요해요.
CREATE PREVIEW APPLICATION Account 기본이 아닌 릴리스 채널(QA 또는 ALPHA)에서 앱을 만드는 데 필요해요. USING RELEASE CHANNEL DEFAULT를 사용하거나 USING RELEASE CHANNEL 절을 생략할 때는 필요하지 않아요.
APPLY (FEATURE POLICY) 또는 OWNERSHIP Account / Feature policy WITH FEATURE POLICY 절로 앱을 만들 때 피처 정책을 적용하는 데 필요해요.

사용 메모 (Usage notes)

  • 애플리케이션 패키지에서 직접 앱을 만들려면 애플리케이션 패키지에 기본 릴리스 지시문을 지정해야 해요.
  • 앱은 데이터베이스와 다음 면에서 다릅니다:
    • 앱은 transient일 수 없어요.
    • 앱에 OWNERSHIP 권한이 있는 역할은 다음 능력과 제한이 있어요:
      • 데이터베이스를 삭제하거나 COMMENT 속성과 앱에 특정한 속성을 수정할 수 있어요.
      • 애플리케이션 역할에 부여된 권한을 통해서만 앱의 내용을 보거나 수정할 수 있어요.
      • 스키마나 데이터베이스 역할 같은 데이터베이스 수준 객체를 만들 수 없어요.
  • 메타데이터 관련: Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체 외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터를 입력하지 않도록 주의해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고하세요.
  • CREATE OR REPLACE <object> 문은 원자적이에요. 즉 객체가 교체될 때 이전 객체가 삭제되고 새 객체가 단일 트랜잭션으로 생성돼요.

예시 (Examples)

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1;

+---------------------------------------------------------+
| status                                                  |
|---------------------------------------------------------|
| Application 'hello_snowflake_app' created successfully. |
+---------------------------------------------------------+
CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';

+---------------------------------------------------------+
| status                                                  |
|---------------------------------------------------------|
| Application 'hello_snowflake_app' created successfully. |
+---------------------------------------------------------+

더 알아보기 (Learn more)