Declarative Native App 매니페스트 참조

공급자는 :doc:`패키지<package>`의 일부로 매니페스트 파일을 생성합니다.

The manifest file is a text-based YAML file, with the filename: manifest.yml. It’s used to declaratively share data and logic with consumers, such as notebooks, user-defined functions, stored procedures, tables, and views.

매니페스트 파일은 앱 소유자가 앱의 데이터와 기능의 하위 집합을 역할별로 조직 팀의 팀과 공유하는 데 사용할 수 있는 :doc:`앱 역할<app-roles>`도 정의합니다.

애플리케이션 패키지 개발에 대한 자세한 내용은 네이티브 애플리케이션 프레임워크의 선언적 공유에서 사용되는 애플리케이션 패키지 섹션을 참조하세요.

Declarative Native App 메니페스트

Declarative Native App 의 일반 형식 매니페스트에는 다음이 포함됩니다.

manifest_version: # Added automatically. Don't include.
application_content: # Optional, describes associated app logic
roles: # Optional, describes roles associated with shared_content
shared_content: # Required, describes associated data to be shared
Copy

필드

Declarative Native App 매니페스트에는 다음 필드가 포함됩니다.

manifest_version 필드

이 필드는 애플리케이션 패키지의 새 버전을 릴리스할 때 매니페스트 파일에 자동으로 추가됩니다.

애플리케이션 패키지에 포함할 매니페스트 파일을 생성할 때 이 필드를 포함하지 마세요. 이 필드는 수동으로 편집할 수 없습니다.

manifest_version 최상위 필드(정수, 필수)는 매니페스트 파일의 버전 번호를 지정합니다.

버전 관리에 대한 자세한 내용은 네이티브 애플리케이션 프레임워크에서 선언적 공유의 패키지 버전 섹션을 참조하세요.

application_content 필드

``application_content``필드(목록, 선택 사항)는 앱에서 선언적으로 공유하는 번들 콘텐츠를 정의합니다.

이 필드에는 단일 notebooks 필드가 포함되어 있습니다.

  • ``application_content.notebooks``(목록, 필수): 명명된 :doc:`노트북</user-guide/ui-snowsight/notebooks>`의 목록입니다.

application_content.notebooks.{named notebook} 필드

명명된 각 노트북 다음과 같은 이름 값 페어를 지원합니다.

  • ``main_file``(문자열, 필수) 대화형 Python 노트북(.ipynb) 파일의 이름입니다.

  • ``comment``(문자열, 선택 사항): 노트북을 설명하는 설명입니다.

  • ``runtime_environment_version``(문자열, 선택 사항): 플랫폼 내에서 해당되는 경우 노트북 실행 컨텍스트에 대한 특정 :ref:`런타임 환경 버전<label-notebook_runtime_descriptions>`을 지정합니다.

  • roles (list, optional): A list of app roles that can grant access to the notebook, for example, [sales,marketing]. When this field is empty ([]) or omitted, then only app owners and roles with granted IMPORTED PRIVILEGES receive access. The included roles must be defined in the top-level roles field.

application_context 예제

이 예에서 단일 노트북인 salesbook**은 알려진 **안정적인 런타임을 사용하고 영업 또는 마케팅 역할이 부여된 사용자에게 액세스 권한을 제공하는 노트북 파일 **NOTEBOOK1.ipynb**를 사용하여 정의됩니다.

application_content:
    notebooks:
        - salesbook:
              roles: [sales, marketing]
              main_file: NOTEBOOK1.ipynb
              comment: Notebook1: Sales and marketing notebook
              runtime_environment_version: stable

roles:
  - sales:
  - marketing:
Copy

roles 필드

The roles top level field (list, optional) defines a list of app roles. These roles allow app owners to provide access to shared objects in an app — such as schemas, tables, views, and notebooks — to their organization.

명명된 각 역할에는 선택적으로 ``comment``가 포함될 수 있으며, 이는 앱 소유자가 애플리케이션에서 역할을 나열할 때 설명으로 나타납니다.

These roles are referenced in the manifest by shared objects, at the named notebook, schema, table, view, or semantic_view level. For objects at the table, view, or semantic_view level, roles must also be specified at the schema level.

참고

  • All content in the manifest is accessible to the app owner, the ACCOUNTADMIN, and to roles that are granted IMPORTED PRIVILEGES to the app.

  • 이 매니페스트 파일에 정의된 오브젝트 이름은 런타임 오브젝트 확인에 사용됩니다. 공급자가 매니페스트 파일을 새 버전으로 업데이트하지 않고 오브젝트 이름을 변경하면 컨슈머는 오브젝트에 액세스할 수 없게 됩니다.

roles 예제

roles:
  - sales:
  - marketing:

application_content:
  notebooks:
    - salesbook:
        roles: [sales, marketing]
        main_file: NOTEBOOK1.ipynb
        comment: Sales and marketing notebook

shared_content:
  databases:
    - sales:
        schemas:
          - orders:
              roles: [sales, marketing]
              tables:
                - january_2025:        # App owners/assignees only
                - february_2025:
                    roles: [sales]     # Accessible to sales only
                - march_2025:
                    roles: [marketing] # Accessible to marketing only
    - customer_info:
        schemas:
          - customer_contact:
              roles: [customer_support]
              views:
                - customer_address:
                    roles: [customer_support] # Accessible to customer_support
                - customer_details:
                    roles: []                 # App owners/assignees only
Copy

역할에 대한 자세한 내용은 :doc:`앱 역할<app-roles>`을 참조하세요.

shared_content 필드

The shared_content field (list, required) defines a list of databases declaratively shared by the app. Each database includes a list of named schemas. Each schema can include a list of named entities grouped by type.

This field includes a single databases field and an optional required_databases field:

  • shared_content.databases (List, required): A list of named database instances and the underlying objects to share. In the example below, the manifest adds a database named sales.

shared_content.databases.{named database} 필드

명명된 각 데이터베이스는 다음과 같은 이름 값 페어를 지원합니다.

  • ``schemas``(목록, 필수): 데이터베이스 내의 스키마 목록입니다.

shared_content.required_databases.{named database} field

The required_databases field (list, optional) defines a list of databases that are dependencies of the shared databases. These databases are referenced by views in the shared databases, but are not shared directly. When your application shares data from multiple databases, you must explicitly list all additional databases that are referenced by objects in your shared content under the required_databases field. This ensures that the application can be deployed successfully in other regions where these databases may not exist by default. Including a database in the required_databases field is similar to referencing a database using the REFERENCE_USAGE privilege in traditional Secure Data Sharing. For information about the REFERENCE_USAGE privilege and how dependent databases are shared in traditional data sharing, see Share data from multiple databases.

schemas.{named schema} 필드

명명된 각 스키마는 다음과 같은 이름 값 페어를 지원합니다.

  • ``tables``(목록, [OneOfRequired]): 동적 테이블 및 :doc:`Apache Iceberg 테이블</user-guide/tables-iceberg>`을 포함할 수 있는 명명된 테이블의 목록입니다.

  • ``views``(목록, [OneOfRequired]): 명명된 뷰의 목록입니다.

  • semantic_views (list, [OneOfRequired]): A list of named semantic views.

  • functions (list, [OneOfRequired]): A list of named user-defined functions (UDFs).

  • procedures (list, [OneOfRequired]): A list of named stored procedures.

  • roles (list, optional): A list of app roles that the objects in the schema can use, for example, [sales,marketing]. When this field is empty ([]) or omitted, then only app owners and roles with granted IMPORTED PRIVILEGES receive access. The included roles must be defined in the top-level roles field.

[OneOfRequired] (1,2,3,4,5,6,7,8,9,10)

at least one of tables, views, semantic_views, functions, or procedures is required.

중요

데이터 오브젝트(참조로 공유되는 오브젝트: tables, views, semantic_views)와 논리 오브젝트(복사본에서 공유하는 오브젝트: functionsprocedures) 간에 스키마 분리를 적용해야 합니다. 동일한 스키마에서 데이터 오브젝트와 논리 오브젝트를 혼합할 수 없습니다.

tables.{named table} 필드

명명된 각 표준 테이블, 동적 테이블 및 :doc:`Apache Iceberg 테이블</user-guide/tables-iceberg>`(목록, 필수 [OneOfRequired] )은 다음 이름 값 페어를 지원합니다.

참고

원격 리전에 복제된 공유 동적 테이블Apache Iceberg 테이블</user-guide/tables-iceberg>`은 읽기 전용이며 자동으로 새로 고쳐지지 않습니다. 데이터 최신성은 소스의 복제 빈도에 따라 달라지며 기본 소스 오브젝트를 복제할 필요가 없습니다. 자세한 내용은 :doc:/user-guide/account-replication-considerations` 섹션을 참조하십시오.

views.{named view} 필드

명명된 각 뷰(목록, 필수 [OneOfRequired] ): 다음과 같은 이름 값 페어를 지원합니다.

semantic_views.{named semantic view} field

Each named semantic view (List, required [OneOfRequired] ): supports the following name value pair:

  • roles (list, optional): A list of app roles that can access the semantic view; for example, [sales]. Note that, when sharing a semantic view, its referenced tables or views must be shared as well. When this field is empty ([]) or omitted, then only app owners and roles with granted IMPORTED PRIVILEGES receive access. The included roles must be defined in the top-level roles field and included in the {named schema}.roles field.

functions.{named function} field

Each named function (List, required [OneOfRequired] ): supports the following name value pair:

procedures.{named procedure} field

Each named stored procedure (List, required [OneOfRequired] ): supports the following name value pair:

shared_content 예제

In this example, two databases are exposed: sales and customer_info. Within these databases the orders.[january_2025|february_2025] tables are exposed as well as the customer_contact.customer_address view.

sales_projections**customer_analytics**의 두 가지 필수 데이터베이스도 노출됩니다. 이러한 데이터베이스는 공유 데이터베이스의 뷰에서 참조되지만 직접 공유되지는 않습니다.

roles:
  - sales:
  - marketing:

shared_content:
  required_databases:
    sales_projections
    customer_analytics
  databases:
    - sales:
        schemas:
          - orders:
              roles: [sales, marketing]
              tables:
                - january_2025:        # App owners/assignees only
                - february_2025:
                    roles: [sales]     # Accessible to sales only
                - march_2025:
                    roles: [marketing] # Accessible to marketing only
    - customer_info:
        schemas:
          - customer_contact:
              roles: [customer_support]
              views:
                - customer_address:
                    roles: [customer_support] # Accessible to customer_support
                - customer_details:
                    roles: []                 # App owners/assignees only
Copy

매니페스트 파일 예

The following code block is an example of a Declarative Native App manifest file.

데이터 및 코드 오브젝트는 서로 다른 스키마에 있어야 합니다.

manifest_version: 2

roles:
  - VIEWER:
      comment: "The VIEWER role provides access to only one view."
  - ANALYST:
      comment: "The ANALYST role provides access to views, the table, and logic."

shared_content:
  databases:
    - SNAF_POPULATION_DB:
        schemas:
          - DATA_SCHEMA:
              roles: [VIEWER, ANALYST]
              tables:
                - COUNTRY_POP_BY_YEAR:
                    roles: [ANALYST]
                - POPULATION_DYNAMIC_TABLE:
                    roles: [ANALYST]
                - MANAGED_POPULATION_ICEBERG_TABLE:
                    roles: [ANALYST]
              views:
                - COUNTRY_POP_BY_YEAR_2000:
                    roles: [VIEWER, ANALYST]
          - LOGIC_SCHEMA:
              roles: [ANALYST]
              functions:
                - POPULATION_ANALYSIS_FUNCTION(NUMBER):
                    roles: [ANALYST]
              procedures:
                - POPULATION_ANALYSIS_PROCEDURE():
                    roles: [ANALYST]
application_content:
  notebooks:
      - intro_notebook:
          roles: [VIEWER, ANALYST]
          main_file: INTRO_NB.ipynb
      - analyst_notebook:
          roles: [ANALYST]
          main_file: ANALYST_NB.ipynb
Copy