앱의 매니페스트 파일 만들기

이 항목에서는 앱의 매니페스트 파일을 만드는 방법에 대해 설명합니다.

매니페스트 파일 정보

매니페스트 파일에는 애플리케이션 패키지가 Snowflake Native App 을 생성하고 관리하는 데 필요한 정보가 포함되어 있습니다. 여기에는 앱의 설치 스크립트 위치, 버전 정의 및 구성 정보가 포함됩니다.

매니페스트 파일의 요구 사항은 다음과 같습니다.

  • 매니페스트 파일의 이름은 manifest.yml 이어야 합니다.

  • 매니페스트 파일은 애플리케이션 패키지에서 액세스할 수 있도록 명명된 스테이지에 업로드해야 합니다.

  • 매니페스트 파일은 다른 애플리케이션 파일이 저장되는 명명된 스테이지의 디렉터리 구조 루트에 존재해야 합니다.

매니페스트 파일의 버전 1 및 버전 2

|native-apps|는 두 가지 버전의 매니페스트 파일을 지원합니다. 버전은 manifest_version 필드를 사용하여 지정됩니다.

manifest_version: 1

이 버전의 매니페스트 파일은 |native-apps|의 현재 및 레거시 기능을 지원합니다.

manifest_version: 2

이 버전의 매니페스트 파일은 자동 권한 부여 등 추가 기능을 지원합니다.

매니페스트 파일 버전 2 사용 시 보안 고려 사항

매니페스트 파일의 버전 2를 사용할 때 다음과 같은 보안 영향을 고려하세요.

공급자가 매니페스트 파일에서 manifest_version: 2`을 사용하도록 앱을 구성하면 자동 권한 부여가 활성화됩니다. 기본적으로 이를 통해 Snowflake는 앱에 특정 권한을 자동으로 부여할 있습니다. 앱에 자동으로 부여할 있는 권한에 대한 자세한 내용은 :ref:`label-native_apps_auto_privs_supported_privs 섹션을 참조하세요.

설치하는 동안, |sf-web-interface|는 앱에서 요청한 권한에 대한 알림을 표시합니다. 컨슈머가 자동 권한 부여를 사용하는 앱을 설치하면 추가 동의 없이 업그레이드 중에 앱에 이러한 권한이 부여될 수 있다는 데 동의하는 것입니다.

컨슈머는 앱이 만들 수 있는 오브젝트를 제한하는 기능 정책을 만들 수 있습니다. 기능 정책 생성에 대한 자세한 내용은 기능 정책을 사용하여 앱이 만들 수 있는 오브젝트 제한하기 섹션을 참조하세요.

컨테이너를 사용하여 앱에 필요한 권한 지정하기

다른 앱과 마찬가지로, 매니페스트 파일의 privileges 필드는 컨테이너가 포함된 앱이 컨슈머에게 요청하는 권한을 지정합니다.

다음 권한은 컨테이너가 포함된 앱에만 적용됩니다.

  • CREATE COMPUTE POOL

    이 권한은 앱이 컨슈머 계정에서 컴퓨팅 풀을 생성하도록 허용하는 데 필요합니다. 컨슈머가 수동으로 컴퓨팅 풀을 생성하는 경우에는 필요하지 않습니다.

  • BIND SERVICE ENDPOINT

    이 권한은 Snowflake 외부에서 엔드포인트에 액세스할 수 있도록 하는 데 필요합니다.

다음 예제는 이러한 권한을 privileges 블록에 추가하는 방법을 보여줍니다.

privileges:
- CREATE COMPUTE POOL:
  description: 'Required to allow the app to create a compute pool in the consumer account.'
- BIND SERVICE ENDPOINT:
  description: 'Required to allow endpoints to be externally accessible.'
Copy

컨테이너를 사용하여 앱에서 사용하는 컨테이너 이미지 지정하기

컨테이너가 포함된 앱에서 사용하는 컨테이너 이미지의 위치를 지정하려면 artifacts.container_services 블록에 images 속성을 추가합니다.

각 이미지에 대한 항목을 포함해야 합니다. 지정된 경로에는 데이터베이스, 스키마, 이미지 리포지토리의 이름이 포함됩니다. 이 경로의 형식은 다음과 같습니다.

/<database>/<schema>/<image_repository>/<image_name>:tag
Copy

다음 예제는 images 속성을 지정하는 방법을 보여줍니다.

artifacts
...
  container_services
    ...
    images
      - /dev_db/dev_schema/dev_repo/image1
      - /dev_db/dev_schema/dev_repo/image2
Copy

컨테이너가 포함된 앱의 사용자 인터페이스 엔드포인트 지정하기

컨테이너가 포함된 앱의 사용자 인터페이스에 대한 엔드포인트를 지정하려면 artifacts 블록에 default_web_endpoint 속성을 추가합니다.

default_web_endpoint 속성은 선택 사항입니다. 이 속성이 지정되면, 서비스 사양 파일에도 엔드포인트를 정의해야 합니다.

참고

default_web_endpointdefault_streamlit 중 하나만 지정할 수 있습니다.

매니페스트 파일의 이 항목에는 다음의 두 가지 추가 속성이 있습니다.

  • service

    사용자 인터페이스 서비스의 이름을 지정합니다.

  • endpoint

    엔드포인트의 이름을 지정합니다.

다음 예제는 default_web_endpoint 속성을 지정하는 방법을 보여줍니다.

default_web_endpoint:
  service: ux_schema.ux_service
  endpoint: ui
Copy

매니페스트 파일 예제

다음 예는 다양한 유형의 사용 사례에 대한 일반적인 매니페스트 파일을 보여줍니다.

자동 권한 부여를 사용하기 위한 매니페스트 파일의 예제

다음 매니페스트 파일은 자동 권한 부여를 사용하도록 앱을 구성하는 방법을 보여줍니다. 이 예에서는 매니페스트 파일의 버전 2를 사용합니다. privileges 블록은 앱에 필요한 권한을 지정합니다.

manifest_version: 2
version:
  name: v1
artifacts:
  readme: readme.md
  setup_script: setup.sql
privileges:
  - CREATE TABLE:
    description: "Allows the app to create tables in the consumer account"
  - CREATE WAREHOUSE:
    description: "Allows the app to create warehouses in the consumer account"
Copy

앱이 설치되면 Snowflake는 앱에 대한 CREATE TABLE 및 CREATE WAREHOUSE 권한을 자동으로 부여합니다.

컨테이너가 포함된 앱의 매니페스트 파일 예제

|native-apps|는 컨테이너가 포함된 앱에만 해당하는 매니페스트 파일의 항목을 지원합니다. 다음 예에서는 컨테이너가 포함된 앱의 일반적인 매니페스트 파일을 보여줍니다.

manifest_version: 2
version:
  name: v1
artifacts:
  readme: readme.md
  setup_script: setup.sql
  container_services:
    images:
      - /dev_db/dev_schema/dev_repo/image1
      - /dev_db/dev_schema/dev_repo/image2
  default_web_endpoint:
    service: ux_schema.ux_service
    endpoint: ui
privileges:
 - CREATE COMPUTE POOL:
   description: "..."
 - BIND SERVICE ENDPOINT:
   description: "...”
Copy