Declarative Native App 매니페스트에는 다음 필드가 포함됩니다.
application_content 필드
``application_content``필드(목록, 선택 사항)는 앱에서 선언적으로 공유하는 번들 콘텐츠를 정의합니다.
이 필드에는 단일 notebooks 필드가 포함되어 있습니다.
application_content.notebooks.{named notebook} 필드
명명된 각 노트북 다음과 같은 이름 값 페어를 지원합니다.
``main_file``(문자열, 필수): 패키지 버전의 루트를 기준으로 하는 대화형 Python 노트북(.ipynb) 파일의 경로입니다.
``comment``(문자열, 선택 사항): 노트북을 설명하는 설명입니다.
``runtime_environment_version``(문자열, 선택 사항): 플랫폼 내에서 해당되는 경우 노트북 실행 컨텍스트에 대한 특정 :ref:`런타임 환경 버전<label-notebook_runtime_descriptions>`을 지정합니다.
``roles``(목록, 선택 사항): 노트북에 대한 액세스 권한을 부여할 수 있는 앱 역할의 목록(예: [sales,marketing])입니다. 이 필드가 비어 있거나([]) 생략된 경우 앱 소유자와 IMPORTED PRIVILEGES 권한이 부여된 역할만 액세스 권한을 받습니다. 포함된 역할은 :ref:`최상위 역할 필드<label-dsna_manifest_roles_top>`에서 정의해야 합니다.
참고
main_file 경로는 항상 패키지 버전의 루트(snow://package/<DECL_SHARE_APP_PKG>/versions/<version> 접두사)를 기준으로 합니다. 예를 들어, 노트북 파일의 전체 경로가 ``snow://package/<DECL_SHARE_APP_PKG>/versions/LIVE/NOTEBOOK.ipynb``인 경우 ``main_file``을 ``NOTEBOOK.ipynb``로 지정합니다.
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:
roles 필드
roles 최상위 필드(목록, 선택 사항)는 :doc:`앱 역할<app-roles>`의 목록을 정의합니다. 이러한 역할을 통해 앱 소유자는 스키마, 테이블, 뷰, 노트북과 같은 앱의 공유 오브젝트에 대한 액세스 권한을 조직에 제공할 수 있습니다.
명명된 각 역할에는 선택적으로 ``comment``가 포함될 수 있으며, 이는 앱 소유자가 애플리케이션에서 역할을 나열할 때 설명으로 나타납니다.
이러한 역할은 매니페스트에서 공유 오브젝트에 의해 명명된 notebook, schema, table, view, semantic_view 수준으로 참조됩니다. table, view, semantic_view 수준의 오브젝트의 경우 역할은 schema 수준에서도 지정되어야 합니다.
참고
매니페스트의 모든 콘텐츠는 앱 소유자, ACCOUNTADMIN 및 앱에 :ref:`IMPORTED PRIVILEGES<label-dsna_share_access_to_all_data>`가 부여된 역할의 사용자가 액세스할 수 있습니다.
이 매니페스트 파일에 정의된 오브젝트 이름은 런타임 오브젝트 확인에 사용됩니다. 공급자가 매니페스트 파일을 새 버전으로 업데이트하지 않고 오브젝트 이름을 변경하면 컨슈머는 오브젝트에 액세스할 수 없게 됩니다.
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
역할에 대한 자세한 내용은 :doc:`앱 역할<app-roles>`을 참조하세요.
shared_content 필드
shared_content 필드(목록, 필수)는 앱에서 선언적으로 공유하는 데이터베이스의 목록을 정의합니다. 각 데이터베이스에는 명명된 schemas 목록이 포함됩니다. 각 스키마에는 유형별로 그룹화된 명명된 엔터티 목록이 포함될 수 있습니다.
이 필드에는 단일 databases 필드 및 선택적 required_databases 필드가 포함되어 있습니다.
shared_content.databases.{named database} 필드
명명된 각 데이터베이스는 다음과 같은 이름 값 페어를 지원합니다.
shared_content.required_databases.{named database} 필드
required_databases 필드(목록, 선택 사항)은 공유 데이터베이스의 종속성인 데이터베이스 목록을 정의합니다. 이러한 데이터베이스는 공유 데이터베이스의 뷰에서 참조되지만 직접 공유되지는 않습니다. 데이터베이스 간 종속성 관리에 대한 자세한 내용은 종속성 데이터베이스: 데이터베이스 간 참조 관리하기 섹션을 참조하세요.
애플리케이션이 여러 데이터베이스의 데이터를 공유하는 경우, required_databases 필드 아래에 공유 콘텐츠의 오브젝트가 참조하는 모든 추가 데이터베이스를 명시적으로 나열해야 합니다. 이를 통해 이러한 데이터베이스가 기본적으로 존재하지 않을 수 있는 다른 리전에 애플리케이션을 성공적으로 배포할 수 있습니다.
required_databases 필드에 데이터베이스를 포함하는 것은 기존 Secure Data Sharing에서 REFERENCE_USAGE 권한을 사용하여 데이터베이스를 참조하는 것과 유사합니다. REFERENCE_USAGE 권한 및 기존 데이터 공유에서 종속 데이터베이스를 공유하는 방법에 대한 내용은 :doc:`여러 데이터베이스에서 데이터 공유</user-guide/data-sharing-multiple-db>`를 참조하세요.
schemas.{named schema} 필드
명명된 각 스키마는 다음과 같은 이름 값 페어를 지원합니다.
[OneOfRequired]
(1,2,3,4,5,6,7,8,9,10,11,12)
at least one of tables, views, semantic_views, functions, procedures, or cortex_agents is required.
중요
You must enforce schema separation between data objects (objects shared by reference: tables, views, and semantic_views) and logic objects (objects shared by copy: functions, procedures, and :cortex_agents). You can’t mix data and logic objects in the same schema.
tables.{named table} 필드
명명된 각 표준 테이블, 동적 테이블 및 :doc:`Apache Iceberg 테이블</user-guide/tables-iceberg>`(목록, 필수 [OneOfRequired] )은 다음 이름 값 페어를 지원합니다.
참고
원격 리전에 복제된 공유 동적 테이블 및 Apache Iceberg 테이블</user-guide/tables-iceberg>`은 읽기 전용이며 자동으로 새로 고쳐지지 않습니다. 데이터 최신성은 소스의 복제 빈도에 따라 달라지며 기본 소스 오브젝트를 복제할 필요가 없습니다. 자세한 내용은 :doc:/user-guide/account-replication-considerations` 섹션을 참조하십시오.
참고
컨슈머가 이 공유 오브젝트에 스트림을 생성할 수 있도록 허용하려면(변경 데이터 캡처 또는 증분 로딩을 위해) 표준 SQL 명령(예: ALTER TABLE ... SET CHANGE_TRACKING = TRUE)을 사용하여 공급자 계정의 소스 테이블에서 CHANGE_TRACKING = TRUE 를 활성화해야 합니다. 컨슈머는 공유 오브젝트에서 이 설정을 변경할 수 없으며, 소스에서 설정해야 합니다.
views.{named view} 필드
명명된 각 뷰(목록, 필수 [OneOfRequired] ): 다음과 같은 이름 값 페어를 지원합니다.
참고
컨슈머가 이 공유 오브젝트에 스트림을 생성할 수 있도록 허용하려면(변경 데이터 캡처 또는 증분 로딩을 위해) 표준 SQL 명령(예: ALTER TABLE ... SET CHANGE_TRACKING = TRUE)을 사용하여 공급자 계정의 소스 테이블에서 CHANGE_TRACKING = TRUE 를 활성화해야 합니다. 컨슈머는 공유 오브젝트에서 이 설정을 변경할 수 없으며, 소스에서 설정해야 합니다.
semantic_views.{named semantic view} 필드
명명된 각 의미 체계 뷰(목록, 필수 [OneOfRequired] ): 다음과 같은 이름 값 페어를 지원합니다.
functions.{named function} 필드
명명된 각 함수(목록, 필수 [OneOfRequired] ): 다음과 같은 이름 값 페어를 지원합니다.
procedures.{named procedure} 필드
명명된 각 저장 프로시저(목록, 필수 [OneOfRequired] ): 다음과 같은 이름 값 페어를 지원합니다.
cortex_agents.{named cortex agent} field
Each named Cortex Agent (List, required [OneOfRequired] ): supports the following name value pair:
shared_content 예제
이 예제에서는 sales 및 customer_info**의 두 데이터베이스가 표시됩니다. 이러한 데이터베이스 내에서 **orders.[january_2025|february_2025] 테이블과 customer_contact.customer_address 뷰가 표시됩니다.
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