snow app bundle¶
구성된 앱 아티팩트가 있는 로컬 폴더를 준비합니다.
구문¶
snow app bundle
--package-entity-id <package_entity_id>
--app-entity-id <app_entity_id>
--project <project_definition>
--env <env_overrides>
--format <format>
--verbose
--debug
--silent
인자¶
없음
선택 사항¶
--package-entity-id TEXT
definition_version이 2 이상일 때 작동할 패키지 엔터티의 ID입니다.
--app-entity-id TEXT
definition_version이 2 이상일 때 작동할 애플리케이션 엔터티의 ID입니다.
-p, --project TEXT
Snowflake 프로젝트가 있는 경로입니다. 기본값은 현재 작업 디렉터리입니다.
--env TEXT
키=값 형식의 문자열. 템플릿에 사용되는 env 섹션의 변수를 재정의합니다. 기본값: [].
--format [TABLE|JSON]
출력 형식을 지정합니다. 기본값: TABLE.
--verbose, -v
로그 수준
info
이상의 로그 항목을 표시합니다. 기본값: False.--debug
로그 수준
debug
이상의 로그 항목을 표시하며, 디버그 로그에는 추가 정보가 포함됩니다. 기본값: False.--silent
콘솔로의 중간 출력을 끕니다. 기본값: False.
--help
이 명령에 대한 도움말 텍스트를 표시합니다.
사용법 노트¶
snow app bundle
명령은 모든 Snowflake Native App 아티팩트가 포함된 임시 로컬 디렉터리를 생성합니다. 또한 Snowpark Python 코드에서 SQL 스크립트를 자동으로 생성할 수도 있습니다. 이 명령은 snow app deploy, snow app run 및 snow app version create 에 의해 자동으로 호출됩니다. 그러나 스테이지에 업로드하기 전에 설정 스크립트, 아티팩트 및 생성된 SQL을 확인하려면 이 명령을 수동으로 실행하면 됩니다. SQL 코드 생성에 대한 자세한 내용은 Snowflake Native App 아티팩트가 구성된 로컬 폴더 준비하기 섹션을 참조하십시오.
이 명령은 프로젝트 정의 파일 을 사용하여 프로젝트 디렉터리 내에 생성할 임시 폴더의 이름을 결정합니다.
기본적으로는
<project_directory>/output/deploy
입니다. 배포 루트라고도 하는 이 디렉터리에는 후속 명령에서 파일이 스테이지에 업로드되면 스테이지의 구조가 반영됩니다.Snowflake CLI 가
output/deploy
대신 사용자 지정 이름으로 폴더를 생성하도록 하려면 프로젝트 정의 파일 의애플리케이션 패키지
엔터티에deploy_root
필드를 제공하면 됩니다.참고
배포 루트의 상대 경로를 제공해야 하며, 절대 경로는 거부됩니다. 배포 루트 경로는 프로젝트 디렉터리 내부에 생성됩니다.
run snow app bundle
또는 다른 명령이bundle
기능을 호출할 때마다 배포 루트가 삭제되고 다시 생성되므로 배포 루트는 임시 디렉터리입니다.
snow app bundle
은 snow app deploy, snow app run, snow app version create 명령의 일부로 자동으로 호출되므로, 배포 루트 외부에서 소스 파일만 변경해야 합니다. 배포 루트에서 파일을 수정하면 다음번에 이러한 명령 중 하나를 호출할 때 소스 파일의 가장 최근 상태로 파일을 덮어씁니다.git
같은 버전 관리 시스템을 사용하는 경우 배포 루트는 자주 변경될 수 있으므로 추적하지 않도록 선택할 수 있습니다.snow app bundle
은 Java 파일에서 jar 파일을 생성하는 등 아티팩트를 빌드하거나 컴파일하지 않습니다. 프로젝트 정의 파일에 지정된 아티팩트만 복사하여 배포 루트에 추가하여 스테이지의 디렉터리 구조를 모방합니다.snow app bundle
은 로컬 파일 시스템에만 영향을 미치므로 Snowflake 계정에 액세스할 필요가 없습니다.이 명령은 프로젝트 정의 파일 에 있는
애플리케이션 패키지
엔터티의 모든artifacts
에 대해 다음과 같은 복사 및 심볼릭 링크 동작을 수행합니다.소스 경로의 모든 디렉터리 이름도 배포 루트에 생성됩니다.
소스 경로의 모든 파일은 배포 루트의 해당 디렉터리 내에서 심볼릭 링크로 연결됩니다.
배포 루트에 있는 일부 심볼릭 링크 파일은 해당 파일에서 SQL 생성을 호출하면 하드 링크가 될 수 있습니다. 자세한 내용은 Snowflake Native App 아티팩트가 구성된 로컬 폴더 준비하기 섹션을 참조하십시오.
프로젝트 정의 파일의
artifacts
목록 예제를 살펴보십시오.entities: pkg: type: application package ... artifacts: - src: dir1/dir2/* dest: dest_dir1/dest_dir2/ - src: dir8/dir9/file.txt dest: dest_dir8/dest_file.txt ...
여기서 프로젝트 루트의
dir1/dir2
에는dir3
및dir4
와 같은 다른 하위 디렉터리가 있을 수 있고file3.txt
및file4.txt
와 같은 일부 파일이 있을 수 있습니다.snow app bundle
명령을 실행한 후 배포 루트는 다음과 같아야 합니다.-- deploy_root -- dest_dir1 -- dest_dir2 -- dir3 -- ... <entire directory tree of dir3> -- dir4 -- ... <entire directory tree of dir4> -- file3.txt -- file4.txt -- dest_dir8 -- dest_file.txt
Snowpark 주석 처리¶
Snowflake CLI 버전 2.5.0과 Snowpark Python API 버전 1.15.0부터 snow app bundle
명령으로 Snowpark 주석 처리 기능을 활용할 수 있습니다. 이 기능을 사용하여 @udf
, @sproc
, @udaf
및 @udtf
와 같은 Snowpark Python 데코레이터를 사용하여 Python 코드 파일에 주석을 달면 Snowflake CLI 가 자동으로 프로젝트 디렉터리에 있는 설정 스크립트 파일의 해당 CREATE FUNCTION 또는 CREATE PROCEDURE SQL 문에 주석을 달도록 할 수 있습니다. 이러한 데코레이터에 대한 자세한 내용은 해당 Python 데코레이터 설명서를 참조하십시오.
Snowpark 주석 처리에는 다음이 포함됩니다.
프로젝트 정의 파일에서
processor
필드로 표시한 모든 Python 파일을 읽습니다.프로세서의
properties
하위 필드에 제공된 환경 정보를 사용하여 별도의 임시 샌드박스 Python 환경을 생성합니다.샌드박스 환경에서 Python 파일을 실행합니다.
해당 파일에서 주석이 추가된 모든 함수를 수집합니다.
수집된 정보를 사용하여 Snowflake CLI 는 필요한 SQL 문을 생성해
manifest.yaml
파일에서 지정된 위치의 설정 스크립트에 추가합니다.
더 이상 Snowflake Native App 앱용 Snowpark 확장 프로그램 함수를 작성하기 위해 상용구 SQL 코드를 반복할 필요가 없습니다.
프로젝트 정의 파일에서 이 기능을 활성화하는 방법에 대한 자세한 내용은 Snowpark Python 데코레이터 사용하기 섹션을 참조하십시오.
지원되는 모든 아티팩트 프로세서에 대한 자세한 내용은 아티팩트 프로세서에 대한 자세한 정보 섹션을 참조하십시오.
예¶
이 예제에서는 코드 파일을 필요한 대로 변경하여 snowflake.yml
또는 snowflake.local.yml
파일에 추가하고 관련 아티팩트를 빌드하거나 컴파일했다고 가정합니다.
cd my_app_project
snow app bundle
이 명령은 명령이 실행되는 동안 발생하는 다양한 단계에 대한 정보를 표시하고 프로젝트 정의 파일에 지정된 위치에 새 디렉터리(기본값: my_app_project/output/deploy
)를 생성합니다.
간단한 실제 사용 사례를 살펴보려면 다음 명령을 사용하여 바로 사용이 가능한 템플릿을 활용하면 됩니다.
snow init my_app_bundle_project --template app_basic
cd "my_app_bundle_project"
snow app bundle
ls my_app_bundle_project/output/deploy