프로젝트 정의 파일¶
snowflake.yml
프로젝트 정의 파일은 디렉터리를 Snowflake Native App 프로젝트로 선언합니다. Snowflake Native App 프로젝트 디렉터리 루트에 있는 버전 관리 파일로, 수동으로 만들거나 프로젝트 초기화의 일부로 Snowflake CLI 가 만들 수 있습니다. 디렉터리에서 이 정형 파일을 제공하되 독립적인 프로젝트 구조를 사용하도록 선택하면 Snowflake CLI 는 관련 파일을 검색하고 평소와 같이 기능을 수행할 수 있습니다.
Native Apps의 경우 snowflake.yml
은 다음과 유사하게 표시됩니다.
definition_version: 2
entities:
pkg:
type: application package
identifier: <name_of_app_pkg>
stage: app_src.stage
manifest: app/manifest.yml
artifacts:
- src: app/*
dest: ./
- src: src/module-add/target/add-1.0-SNAPSHOT.jar
dest: module-add/add-1.0-SNAPSHOT.jar
- src: src/module-ui/src/*
dest: streamlit/
meta:
role: <your_app_pkg_owner_role>
warehouse: <your_app_pkg_warehouse>
post_deploy:
- sql_script: scripts/any-provider-setup.sql
- sql_script: scripts/shared-content.sql
app:
type: application
identifier: <name_of_app>
from:
target: pkg
debug: <true|false>
meta:
role: <your_app_owner_role>
warehouse: <your_app_warehouse>
공통 엔터티 속성¶
다음 테이블에서는 Native Apps의 프로젝트 정의 엔터티에 사용 가능한 일반적인 속성을 설명합니다. 프로젝트 정의 엔터티에 대한 자세한 내용은 엔터티 지정하기 섹션을 참조하십시오.
속성 |
정의 |
---|---|
유형 필수, 문자열 |
관리할 엔터티의 유형입니다. Snowflake Native App 의 경우 유효한 값은 다음과 같습니다.
|
식별자 선택 사항, 문자열 |
엔터티에 대한 선택적 Snowflake 식별자입니다. 따옴표이 있는 식별자와 없는 식별자가 모두 지원됩니다. 따옴표로 묶인 식별자를 사용하려면 YAML 값에 따옴표(예: 지정하지 않으면 프로젝트 정의의 엔터티 ID가 식별자로 사용됩니다. |
meta.warehouse 선택 사항, 문자열 |
기본값: Snowflake CLI
|
meta.role 선택 사항, 문자열 |
엔터티 및 공급자 측 오브젝트를 생성할 때 사용할 역할입니다. 참고 역할을 지정하지 않으면, Snowflake CLI 는 Snowflake 계정에서 사용자에게 할당된 기본 역할을 사용하려고 시도합니다. 일반적으로 프로젝트 정의 재정의 에 설명된 대로 기본값: Snowflake CLI 연결 에 지정된 역할 |
meta.post_deploy 선택 사항, 문자열 |
엔터티가 생성된 후 실행할 SQL 스크립트의 목록입니다. 다음 예제에서는 프로젝트 정의 파일에서 이러한 스크립트를 정의하는 방법을 보여줍니다. definition_version: 2
entities:
myapp_pkg:
type: application package
...
meta:
post_deploy:
- sql_script: scripts/post_deploy1.sql
- sql_script: scripts/post_deploy2.sql
이러한 스크립트는 엔터티를 생성하거나 업데이트하는 명령에 의해 호출됩니다. 예를 들어, 패키지를 생성하거나 업데이트한 후 다음 샘플 스크립트 내용에 표시된 것처럼 배포 후 SQL 스크립트에서도 템플릿을 사용할 수 있습니다. GRANT reference_usage on database provider_data to share in entity <% fn.str_to_id(ctx.entities.myapp_pkg.identifier) %>
|
meta.use_mixins 선택 사항, 문자열 |
이 엔터티에 적용할 mixin의 이름입니다. 자세한 내용은 프로젝트 mixin 섹션을 참조하십시오. |
애플리케이션 패키지 엔터티 속성¶
다음 테이블에서는 Native Apps의 애플리케이션 패키지 엔터티에 사용 가능한 일반적인 속성을 설명합니다. 프로젝트 정의 엔터티에 대한 자세한 내용은 엔터티 지정하기 섹션을 참조하십시오.
속성 |
정의 |
---|---|
유형 필수, 문자열 |
|
메니페스트 필수, 문자열 |
프로젝트에서 Snowflake Native App |
deploy_root 선택 사항, 문자열 |
빌드 단계에서 아티팩트를 복사하는 프로젝트 루트의 하위 디렉터리입니다. 이 위치에 복사한 후에는 Snowflake 스테이지에 배포할 수 있습니다. 기본값: |
generated_root 선택 사항, 문자열 |
Snowflake CLI 가 생성된 파일을 작성하는 배포 루트의 하위 디렉터리입니다. 기본값: |
스테이지 선택 사항, 문자열 |
애플리케이션 아티팩트를 저장하는 스테이지의 식별자입니다. 값은 기본값: |
아티팩트 필수, 시퀀스 |
배포 루트에 추가할 파일 소스 및 대상 페어의 목록과 선택 사항인 Snowpark 주석 처리기입니다. 다음 아티팩트 속성을 사용할 수 있습니다.
프로세서를 사용한 예: pkg:
artifacts:
- src: app/*
dest: ./
- src: streamlit/*
dest: streamlit/
- src: src/resources/images/snowflake.png
dest: streamlit/
프로세서를 사용한 예: pkg:
artifacts:
- src: qpp/*
dest: ./
processors:
- name: snowpark
properties:
env:
type: conda
name: <conda_name>
|
distribution 선택 사항, 문자열 |
Snowflake CLI 가 생성한 애플리케이션 패키지 배포입니다. 기본값: |
scratch_stage 선택 사항, 문자열 |
Snowflake CLI 가 사용하는 임시 스크래치 데이터를 저장하는 스테이지의 식별자입니다. 값은 기본값: |
애플리케이션 엔터티 속성¶
다음 테이블에서는 Native Apps의 애플리케이션 엔터티에 사용 가능한 일반적인 속성을 설명합니다. 프로젝트 정의 엔터티에 대한 자세한 내용은 엔터티 지정하기 섹션을 참조하십시오.
속성 |
정의 |
---|---|
유형 필수, 문자열 |
|
from.target 필수, 문자열 |
이 애플리케이션 엔터티를 생성할 애플리케이션 패키지입니다. 다음 예제에서 from:
target: my_pkg
|
debug 선택 사항, 부울 |
명명된 스테이지를 사용하여 애플리케이션을 생성할 때 디버그 모드를 활성화할지 여부입니다. 기본값: |
아티팩트 프로세서에 대한 자세한 정보¶
프로젝트 정의 파일에 artifacts.processors
필드를 포함하면 snow app bundle
명령은 src
디렉터리 또는 파일에 있는 Python 코드 파일에 대한 사용자 지정 처리를 호출합니다.
이 섹션에서는 지원되는 프로세서 목록을 다룹니다.
Snowpark 프로세서¶
Snowflake CLI 에서 지원하는 프로세서 중 하나는 Python 파일에 Snowpark 주석 처리를 적용하는 snowpark
입니다. 다음은 다양한 처리 환경에 대한 기본적인 구조와 구문을 보여줍니다.
Conda 환경에서 코드를 실행하려면 다음을 사용합니다.
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: conda name: <conda_name>
여기서
<conda_name>
은 Snowpark 주석 처리에 사용할 Python 인터프리터와 Snowpark 라이브러리가 포함된 conda 환경의 이름입니다.Python 가상 환경에서 코드를 실행하려면 다음을 사용합니다.
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: venv path: <venv_path>
여기서
<venv_path>
는 Snowpark 주석 처리에 사용할 Python 인터프리터와 Snowpark 라이브러리가 포함된 Python 가상 환경의 경로입니다. 경로는 절대 경로이거나 프로젝트 디렉터리를 기준으로 상대 경로일 수 있습니다.현재 활성화된 환경에서 코드를 실행하려면 다음 동등한 정의를 사용합니다.
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: current
또는
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark
또는
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - snowpark
사용자 지정 처리에 대한 자세한 내용은 자동 SQL 코드 생성 및 snow app bundle 명령을 참조하십시오.
템플릿 프로세서¶
Snowflake Native App 프로젝트는 임의의 파일에 템플릿을 지원하므로 아티팩트의 src
디렉터리에 있는 모든 파일에서 템플릿을 확장할 수 있습니다. 이 기능을 활성화하려면 다음 예제와 같이 원하는 templates
프로세서를 원하는 artifacts
정의에 포함하면 됩니다.
definition_version: 2
entities:
pkg:
type: application package
identifier: myapp_pkg
artifacts:
- src: app/*
dest: ./
processors:
- templates
manifest: app/manifest.yml
app:
type: application
identifier: myapp_<% fn.get_username() %>
from:
target: pkg
Snowflake CLI 가 파일을 스테이지에 업로드하면 템플릿을 업로드하기 전에 자동으로 템플릿을 확장합니다. 예를 들어, 애플리케이션에 다음과 같은 내용의 app/README.md
파일이 포함되어 있고, 이 파일에는 <% ctx.entities.pkg.identifier %>
템플릿이 포함되어 있다고 가정해 보겠습니다.
This is a README file for application package <% ctx.entities.pkg.identifier %>.
그런 다음 파일을 스테이지에 업로드하기 전에 템플릿을 다음과 같이 확장합니다.
This is a README file for application package myapp_pkg.
프로젝트 정의 재정의¶
프로젝트 디렉터리에는 snowflake.yml
파일이 있어야 하지만, 자체 애플리케이션 패키지를 테스트하기 위한 새로운 역할과 같이 snowflake.yml
에 로컬 재정의 기능을 제공하여 Snowflake CLI 의 동작을 사용자 지정할 수 있습니다. 이러한 재정의는 기본 프로젝트 정의 옆에 있는 snowflake.local.yml
파일에 배치해야 합니다. Snowflake는 Git에 의해 버전 제어되지 않도록 .gitignore
파일에 추가할 것을 권장합니다. Snowflake에서 제공하는 모든 템플릿은 이미 .gitignore
파일에 포함되어 있습니다.
이 재정의 파일은 snowflake.yml
파일과 같은 위치에 있어야 합니다.
snowflake.local.yml
파일은 snowflake.yml
과 동일한 스키마를 공유하지만, 기존에 선택 사항이었던 모든 값이 이제 선택 사항으로 추가된다는 점이 다릅니다. 다음은 샘플 snowflake.local.yml
파일입니다.
entities:
pkg:
meta:
role: <your_app_pkg_owner_role>
name: <name_of_app_pkg>
warehouse: <your_app_pkg_warehouse>
app:
debug: <true|false>
meta:
role: <your_app_owner_role>
name: <name_of_app>
warehouse: <your_app_warehouse>
모든 snow app
명령은 기본 snowflake.yml
구성 파일에 설정된 매개 변수보다 이 파일의 매개 변수를 우선시합니다. 합리적인 기본값은 이미 동일한 애플리케이션 프로젝트를 개발하기 위해 동일한 Snowflake 계정을 사용하는 개발자 간에 격리를 제공하므로 이제 막 시작했다면 재정의 파일을 포함하지 않는 것이 좋습니다.
snowflake.yml
을 snowflake.local.yml
으로 재정의한 후 얻은 최종 정의 스키마를 해결된 프로젝트 정의라고 합니다.
제한 사항¶
현재, Snowflake CLI 는 다음을 지원하지 않습니다.
여러 개의 재정의 파일.
빈 재정의 파일.
snowflake.yml
의 값을 재정의하려는 경우에만 이 파일을 생성하십시오.