로컬에서 앱 설치 및 테스트하기

이 항목에서는 애플리케이션 패키지에서 APPLICATION 오브젝트를 생성하는 방법을 설명합니다.

애플리케이션 오브젝트 생성 및 테스트 정보

공급자는 Snowflake Native App Framework 를 사용하여 애플리케이션 패키지와 동일한 계정 내에서 APPLICATION 오브젝트를 생성할 수 있습니다. 이를 통해 공급자는 컨슈머에게 게시하기 전에 Snowflake Native App 을 테스트할 수 있습니다. 또한 공급자는 공급자 계정과 컨슈머 계정을 번갈아 사용하지 않고도 단일 계정에서 Snowflake Native App 을 테스트할 수 있습니다.

APPLICATION 오브젝트를 만들고 테스트하는 데 필요한 권한

애플리케이션 패키지에서 APPLICATION 오브젝트를 만들려면 자신의 역할에 다음 권한이 부여되어 있어야 합니다.

  • 사용자의 역할에 부여된 CREATE APPLICATION 계정 수준 권한.

  • 애플리케이션 패키지에 부여된 INSTALL 오브젝트 수준 권한.

다음 예에서는 GRANT <권한> 명령을 사용하여 다음 권한을 계정에 부여하는 방법을 보여줍니다.

GRANT CREATE APPLICATION ON ACCOUNT TO ROLE provider_role;
GRANT INSTALL ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE provider_role;
Copy

DEVELOP 권한 사용하기

기본적으로, 애플리케이션 패키지를 만드는 데 사용되는 역할은 애플리케이션 패키지를 기반으로 APPLICATION 오브젝트를 만드는 CREATE APPLICATION 명령을 실행할 권한이 있습니다.

하지만 일부 개발 환경에서는 다른 역할을 가진 사용자가 애플리케이션 패키지를 만들고 테스트하도록 허용해야 할 수도 있습니다. 이렇게 하려면 애플리케이션 패키지에 대한 DEVELOP 오브젝트 수준 권한을 역할에 부여하십시오.

DEVELOP 계정 수준 권한은 애플리케이션 패키지를 기반으로 APPLICATION 오브젝트를 만들고 테스트하는 데 필요한 권한을 제공합니다. DEVELOP 권한을 사용하면 액세스 권한이 부여된 애플리케이션 패키지를 사용하여 다음 작업을 수행할 수 있습니다.

  • 애플리케이션 패키지에 지정된 버전 또는 패치 수준을 기반으로 APPLICATION 오브젝트 버전을 생성합니다.

  • ALTER APPLICATION 명령을 사용하여 애플리케이션 패키지의 버전을 업그레이드합니다.

  • 명명된 스테이지에서 파일을 사용하여 APPLICATION 오브젝트를 생성하고 업그레이드합니다.

  • 개발 모드 에서 생성된 APPLICATION 오브젝트에서 디버그 모드를 활성화합니다.

특정 역할에 DEVELOP 권한을 부여하려면 다음 예와 같이 GRANT <권한> 명령을 사용하십시오.

GRANT DEVELOP ON APPLICATION PACKAGE hello_snowflake_package TO ROLE other_dev_role;
Copy

참고

DEVELOP 오브젝트 수준 권한은 단일 애플리케이션 패키지에만 적용됩니다. DEVELOP 권한을 할당하려는 각 애플리케이션에 대해 GRANT <권한> 를 실행해야 합니다.

애플리케이션 생성 및 테스트를 위한 워크플로

Snowflake Native App Framework 는 애플리케이션 패키지에서 APPLICATION 오브젝트를 만드는 다양한 방법을 제공합니다. 이를 통해 컨슈머에게 게시하기 전에 Snowflake Native App 을 테스트할 수 있습니다. 사용하는 방법은 APPLICATION 오브젝트에서 테스트하려는 부분에 따라 다릅니다.

다음 단계는 APPLICATION 오브젝트 테스트를 위한 일반적인 워크플로를 간략하게 설명한 것입니다.

  1. 스테이지의 콘텐츠를 사용하여 APPLICATION 오브젝트를 만듭니다.

    이를 통해 설정 스크립트 또는 애플리케이션 코드 파일의 새 버전을 빠르게 테스트할 수 있습니다. 자세한 내용은 스테이징된 파일을 사용하여 애플리케이션 만들기 섹션을 참조하십시오.

  2. 버전 또는 패치에서 APPLICATION 오브젝트를 만듭니다.

    애플리케이션 패키지에 대한 버전 또는 패치를 정의한 후 이 버전을 사용하여 APPLICATION 오브젝트를 만들어 이 버전을 테스트할 수 있습니다. 버전 또는 패치 수준에서 애플리케이션 오브젝트 만들기 섹션을 참조하십시오.

  3. APPLICATION 오브젝트를 업그레이드합니다.

    애플리케이션 패키지 버전이 올바르게 작동하는지 확인한 후 기존 APPLICATION 오브젝트를 새 버전으로 업그레이드할 수 있습니다. 다음 두 가지 방법 중 하나로 업그레이드할 수 있습니다.

    • 스테이지를 사용하여 애플리케이션 업그레이드하기(단일 계정)

    • 버전에서 애플리케이션 업그레이드하기(단일 계정)

  4. 애플리케이션 패키지에서 직접 APPLICATION 오브젝트를 만듭니다.

    APPLICATION 오브젝트가 올바르게 작동하는지 확인한 후 버전 또는 스테이지 파일을 지정하지 않고 애플리케이션 패키지에서 APPLICATION 오브젝트를 만들 수 있습니다. 이렇게 하면 기본 릴리스 지시문을 사용하여 APPLICATION 오브젝트가 생성됩니다.

    자세한 내용은 스테이징된 파일을 사용하여 애플리케이션 만들기 섹션을 참조하십시오.

  5. 목록에서 Snowflake Native App 을 설치합니다.

    계정에서 애플리케이션 패키지와 APPLICATION 오브젝트가 모두 올바르게 작동하는지 확인한 후 애플리케이션 패키지를 목록에 추가하고 Snowsight 를 사용하여 설치를 테스트할 수 있습니다.

    자세한 내용은 스테이징된 파일을 사용하여 애플리케이션 만들기 섹션을 참조하십시오.

애플리케이션 오브젝트를 만듭니다.

Snowflake Native App Framework 를 사용하면 계정에 직접 APPLICATION 오브젝트를 설치하여 Snowflake Native App 을 테스트한 후 고객과 공유할 수 있습니다. CREATE APPLICATION 명령은 APPLICATION 오브젝트를 만들기 위한 다양한 구문을 지원합니다.

참고

다음 섹션에서는 애플리케이션 패키지와 필수 매니페스트 파일 및 설정 스크립트를 만들었다고 가정합니다.

스테이징된 파일을 사용하여 애플리케이션 만들기

명명된 스테이지에 업로드된 매니페스트 파일과 설정 스크립트를 사용하여 APPLICATION 오브젝트를 만들 수 있습니다. 이를 통해 애플리케이션 패키지에 버전을 추가하지 않고도 이러한 파일의 변경 사항을 테스트할 수 있습니다.

다음 예와 같이 스테이징된 파일을 사용하여 CREATE APPLICATION 명령으로 APPLICATION 오브젝트를 만듭니다.

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

버전 또는 패치 수준에서 애플리케이션 오브젝트 만들기

애플리케이션 패키지에서 버전 또는 패치 수준을 지정한 후 해당 버전 또는 패치 수준을 기반으로 APPLICATION 오브젝트를 만들 수 있습니다.

특정 버전에서 APPLICATION 오브젝트를 만들려면 다음 예와 같이 CREATE APPLICATION 명령을 사용하십시오.

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0;
Copy

특정 패치 수준에서 APPLICATION 오브젝트를 만들려면 다음 예와 같이 CREATE APPLICATION 명령을 사용하십시오.

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0 PATCH 2;
Copy

릴리스 지시문을 기반으로 애플리케이션 만들기

애플리케이션 패키지에서 릴리스 지시문을 지정한 후 릴리스 지시문을 기반으로 APPLICATION 오브젝트를 만들 수 있습니다. 이는 사용자 지정 릴리스 지시문 또는 기본 릴리스 지시문일 수 있습니다.

릴리스 지시문을 기반으로 애플리케이션 패키지를 만들려면 다음 예와 같이 CREATE APPLICATION 명령을 사용하십시오.

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package;
Copy

스테이지를 사용하여 애플리케이션 업그레이드하기

명명된 스테이지에서 파일을 사용하여 APPLICATION 오브젝트를 업그레이드하려면 다음 예와 같이 ALTER APPLICATION 명령을 사용하십시오.

ALTER APPLICATION HelloSnowflake
  UPGRADE USING @CODEDATABASE.CODESCHEMA.AppCodeStage;
Copy

버전 또는 패치에서 애플리케이션 업그레이드하기

특정 버전을 사용하여 만든 APPLICATION 오브젝트를 업그레이드하려면 다음 예와 같이 ALTER APPLICATION 명령을 사용하십시오.

ALTER APPLICATION HelloSnowflake
 UPGRADE USING VERSION "v1_1";
Copy

애플리케이션 오브젝트 보기

계정에 제공되는 APPLICATION 오브젝트의 목록을 보려면 다음 예와 같이 SHOW APPLICATIONS 명령을 사용하십시오.

SHOW APPLICATIONS
Copy

개발 모드 정보

명명된 스테이지에서 버전을 지정 하거나 애플리케이션 파일을 지정 하여 애플리케이션 패키지에서 APPLICATION 오브젝트를 만들 때 APPLICATION 오브젝트는 개발 모드에 있는 것으로 간주됩니다.

개발 모드를 사용하면 단일 계정 내에서 APPLICATION 오브젝트를 테스트하고 문제를 해결할 수 있습니다. 개발 모드에서는 애플리케이션 패키지의 특정 버전을 기반으로 APPLICATION 오브젝트를 만들고 테스트할 수 있습니다. 스테이지에서 애플리케이션 파일을 사용하여 APPLICATION 오브젝트를 만들고 테스트할 수도 있습니다. 이렇게 하면 설정 스크립트 또는 애플리케이션 논리에 대한 변경 사항을 빠르게 테스트할 수 있습니다.

개발 모드에서는 APPLICATION 오브젝트의 내부 상태를 확인할 수 있는 디버그 모드 를 추가로 제공하는데, 이 모드가 제공되지 않으면 컨슈머가 그 상태를 볼 수 없을 것입니다.

예를 들어 개발 모드에서는 APPLICATION 오브젝트 내의 오브젝트에 대해 SHOW 또는 DESC 명령을 실행하면 컨슈머에게 보기 권한이 부여된 오브젝트만 표시됩니다. 하지만 DEBUG 모드에서는 APPLICATION 오브젝트 내의 오브젝트를 전부 볼 수 있습니다.

디버그 모드 활성화하기

Snowflake Native App Framework 를 사용하면 디버그 모드에서 APPLICATION 오브젝트를 테스트할 수 있습니다. 디버그 모드를 사용하면 APPLICATION 오브젝트 내의 모든 오브젝트를 보고 수정할 수 있습니다. 컨슈머에게 표시되지 않는 오브젝트(예: 데이터베이스 역할에 부여되지 않은 오브젝트 또는 공유 콘텐츠 오브젝트)를 이 모드에서는 볼 수 있습니다.

디버그 모드에서 APPLICATION 오브젝트를 사용하려면 다음 사항이 필수적입니다.

  • APPLICATION 오브젝트를 개발 모드에서 만들어야 합니다. 즉, 애플리케이션이 스테이지의 특정 버전 또는 파일을 기반으로 해야 합니다.

  • APPLICATION 오브젝트에서 디버그 모드를 명시적으로 설정해야 합니다.

참고

애플리케이션 패키지를 포함하는 동일한 계정 내에서 개발 모드에서 만든 APPLICATION 오브젝트에 대해서만 디버그 모드를 활성화 및 비활성화할 수 있습니다.

APPLICATION 오브젝트에서 디버그 모드를 활성화하려면 다음 예와 같이 ALTER APPLICATION 명령을 사용하십시오.

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = TRUE;
Copy

이 명령은 hello_snowflake_app 이라는 APPLICATION 오브젝트의 디버그 모드를 활성화합니다. 마찬가지로, 디버그 모드를 비활성화하려면 다음 예와 동일한 명령을 사용하십시오.

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = FALSE;
Copy

이 명령은 hello_snowflake_app 이라는 APPLICATION 오브젝트의 디버그 모드를 비활성화합니다.

참고

이 명령을 실행하려면 APPLICATION 오브젝트에 대한 OWNERSHIP 권한이 있어야 합니다. 또한 애플리케이션 패키지에 대한 DEVELOP 권한도 있어야 합니다.

또한 개발 모드와 애플리케이션 패키지와 동일한 계정에서 APPLICATION 오브젝트를 만들어야 합니다.

애플리케이션 오브젝트를 활성 컨텍스트로 설정하기

APPLICATION 오브젝트를 세션의 현재 활성 컨텍스트로 설정하려면 다음 예와 같이 USE APPLICATION 명령을 실행하십시오.

USE APPlICATION hello_snowflake_app;
Copy

참고

이 명령을 실행하려면 APPLICATION 오브젝트에 대한 USAGE 권한이 자신의 역할에 부여되어 있어야 합니다.

애플리케이션 오브젝트의 세부 정보 보기

애플리케이션 오브젝트의 세부 정보를 보려면 다음 예와 같이 DESCRIBE APPLICATION 명령을 실행하십시오.

DESC APPLICATION hello_snowflake_app;
Copy

개발 모드 에서 이 명령은 컨슈머의 애플리케이션 역할에 허용되는 스키마를 표시합니다.

디버그 모드 에서는 이 명령으로 인스턴스 및 애플리케이션 패키지의 모든 스키마를 표시합니다.

개발 모드에서 테스트 이벤트 공유

공급자는 개발 모드를 사용하여 로그 및 이벤트 추적 을 사용하는 앱을 설치하고 테스트합니다. 공급자는 개발 계정에서 로컬로 이벤트 테이블을 설정하고 개발 모드로 앱을 설치한 다음 앱에서 발생하는 이벤트 및 로그와 공급자에게 다시 공유되는 로그를 볼 수 있습니다.

참고

개발 모드에서 이벤트 공유를 테스트하려면 앱에서 이벤트 정의 를 매니페스트 파일에 정의해야 합니다.

개발 모드의 차이점

개발 모드에서 앱은 다음 중 하나를 기반으로 만들어집니다.

  • 스테이지에 업로드된 파일.

  • 애플리케이션 패키지에 정의된 버전 또는 패치.

개발 모드에서 로컬로 이벤트 공유를 테스트할 때 목록에서 만든 앱과 동작에 차이가 있습니다.

  • 이벤트 공유를 사용하려면 MANAGE EVENT SHARING 전역 권한이 필요하지 않습니다.

  • 공유 이벤트는 로컬 이벤트 테이블에 수집됩니다. 로컬 이벤트 테이블에서 공급자는 하나의 이벤트에 대해 두 개의 항목을 볼 수 있습니다.

    • 앱이 설치될 때 앱이 컨슈머 측에서 발생하는 이벤트입니다.

    • 공급자와 공유되는 이벤트입니다.

개발 모드에서 테스트 이벤트 공유

  1. 로깅 및 이벤트 추적을 사용하도록 앱을 구성합니다.

  2. 로컬 개발 계정에서 이벤트 테이블을 설정합니다.

  3. 다음 명령 중 하나를 실행하여 로컬에서 앱을 만듭니다.

    CREATE APPLICATION hello_snowflake_app
      FROM APPLICATION PACKAGE hello_snowflake_package
      USING @path_to_staged_files
      AUTHORIZE_TELEMETRY_EVENT_SHARING = TRUE;
    
    CREATE APPLICATION hello_snowflake_app
      FROM APPLICATION PACKAGE hello_snowflake_package
      USING VERSION v1_0
      PATCH 0
      AUTHORIZE_TELEMETRY_EVENT_SHARING = TRUE;
    
    Copy
  4. 이벤트 테이블에서 로그 메시지와 추적 이벤트를 확인합니다.