템플릿에서 프로젝트 부트스트래핑하기¶
프로젝트의 인스턴스화를 간소화할 수 있도록 Snowflake CLI 는 프로젝트 템플릿 생성을 구현합니다. 사용자는 자체 프로젝트 템플릿을 생성 하거나 Snowflake CLI 템플릿 공개 Git 리포지토리에서 Snowflake가 제공하는 샘플을 사용할 수 있습니다.
snow init 명령은 프로젝트 디렉터리를 생성하고 지정된 템플릿에 정의된 파일 구조로 프로젝트 디렉터리를 채웁니다.
사용자가
--no-interactive
옵션을 입력하지 않으면 템플릿(template.yml
)에서 지정한 각 변수에 대해 사용자가-D
(또는--variable
) 옵션을 입력하지 않은 명령 프롬프트가 표시됩니다.--no-interactive
옵션을 입력하면 명령은 (템플릿에 정의된) 변수의 기본값을 사용합니다. 템플릿에 변수에 대한 기본값이 정의되어 있지 않고-D
옵션을 사용하여 변수를 제공하지 않으면 명령이 오류와 함께 종료됩니다.
snow init
명령은 다음 구문을 사용합니다.
snow init PATH [--template-source SOURCE] [--template NAME] [-D key1=value1 -D key2=value2...] [--no-interactive]
여기서,
PATH
는 명령이 프로젝트를 초기화하는 새 디렉터리입니다. 기존 디렉터리를 지정하면 명령이 오류와 함께 종료됩니다.[--template-source SOURCE]
은 다음 중 하나입니다.템플릿 디렉터리의 로컬 파일 경로입니다.
프로젝트 템플릿이 포함된 디렉터리에 대한 유효한 Git URL입니다. 지정하지 않으면 명령은 기본적으로 Snowflake CLI 템플릿 Git 리포지토리를 사용합니다.
[--template NAME]
는 템플릿으로 사용할SOURCE
의 하위 디렉터리를 지정합니다(원격 소스에 유용). 제공되지 않는 경우,SOURCE
는 단일 템플릿으로 취급됩니다.[-D key1=value1 -D key2=value2...]
는 하나 이상의 이름-값 페어 목록으로, 템플릿(template.yml
에 있는)에 정의된 변수의 값을 제공합니다. 이 명령은 이 옵션으로 제공하는 변수를 묻는 메시지를 표시하지 않습니다.[--no-interactive]
는 사용자 입력 메시지를 비활성화합니다. 이 옵션을 사용하는 경우 사용자는 모든 필수 값을[-D key1=value1 -D key2=value2...]
옵션과 함께 제공해야 하며, 그렇지 않으면 명령에 오류가 발생합니다.
자세한 내용은 snow init 명령 참조를 참조하십시오.
예¶
기본 리포지토리의
example_snowpark
템플릿에서 프로젝트를 초기화합니다.snow init my_snowpark_test_app --template example_snowpark
명령 프롬프트 대상(기본값은 대괄호 안에 표시됨):
Project identifier (used to determine artifacts stage path) [my_snowpark_project]: What stage should the procedures and functions be deployed to? [dev_deployment]: snowpark Initialized the new project in my_snowpark_test_app
로컬 템플릿에서 프로젝트를 초기화합니다.
snow init new_streamlit_project --template-source ../local_templates/example_streamlit -D query_warehouse=dev_wareshouse -D stage=testing
이 예제에서는
query_warehouse
및stage
변수가-D
옵션으로 지정되었으므로 명령은 다음을 묻는 메시지만 표시합니다.Name of the streamlit app [streamlit_app]: Initialized the new project in new_streamlit_project
사용자 지정 템플릿 만들기¶
템플릿 레이아웃¶
프로젝트 템플릿에는 snow init
명령이 템플릿을 렌더링하는 방법을 설명하는 데이터가 포함된 template.yml
파일이 필요합니다. 파일이 템플릿의 루트 디렉터리에 없는 경우 snow init
은 오류와 함께 종료됩니다. 자세한 내용은 template.yml syntax. 섹션을 참조하십시오.
템플릿 구문¶
템플릿 변수와 식은 <! ... !>
로 묶어야 합니다. Snowflake CLI 는 기본 jinja2 식 및 필터도 지원하며, 그러한 예는 다음과 같습니다.
some_file_spec: filename: <! file_name !> size: "<! [ max_file_size_mb, 4 ] | max !> MB"
Snowflake CLI 프로젝트 템플릿은 다음의 예약 변수 및 필터도 지원합니다.
project_dir_name
변수, 생성된 프로젝트의 루트 디렉터리로 자동 확인됩니다.예를 들어,
snowflake.yml
파일에 다음이 포함되어 있다고 가정해 보겠습니다.definition_version: "1.1" snowpark: project_name: <! project_dir_name !> ...
그런 다음, 다음 명령을 실행하여 사용자 지정 템플릿에서 프로젝트를 초기화합니다.
snow init examples/new_snowpark_project --template-source my_example_template/
snow init
명령은snowflake.yml
파일을 다음과 같이 렌더링합니다.definition_version: "1.1" snowpark: project_name: new_snowpark_project ...
to_snowflake_identifier
필터, 사용자가 제공한 문자열을 올바르게 형식이 지정된 Snowflake 식별자로 포맷합니다.Snowflake는 변수가 Snowflake 오브젝트를 참조할 때 이 필터를 사용할 것을 강력히 권장합니다.
예를 들어,
snowflake.yml
파일에 다음이 포함되어 있다고 가정해 보겠습니다.definition_version: "1.1" streamlit: name: <! name | to_snowflake_identifier !> ...
그런 다음, 다음 명령을 실행하여 사용자 지정 템플릿에서 프로젝트를 초기화합니다.
snow init examples/streamlit --template-source my_example_template2/ -D name='My test streamlit'
snow init
명령은snowflake.yml
파일을 다음과 같이 렌더링합니다.definition_version: "1.1" streamlit: name: My_test_streamlit ...
문자열을 유효한 Snowlake 식별자로 변환할 수 없으면 다음과 같이
snow init
명령이 오류와 함께 종료됩니다.snow init examples/streamlit --template-source my_example_template2/ -D name=1234567890
╭─ Error ────────────────────────────────────────────────────────────────────────╮ │ Value '123456789' cannot be converted to valid Snowflake identifier. │ │ Consider enclosing it in double quotes: "" │ ╰────────────────────────────────────────────────────────────────────────────────╯
template.yml
프로젝트 템플릿 파일 정보¶
template.yml
프로젝트 템플릿 파일에는 프로젝트 렌더링에 필요한 모든 데이터가 저장됩니다. 예:
minimum_cli_version: "2.7.0"
files_to_render:
- snowflake.yml
variables:
- name: name
default: streamlit_app
prompt: "Name of the streamlit app"
type: string
- name: stage
default: my_streamlit_stage
prompt: "What stage should the app be deployed to?"
type: string
- name: query_warehouse
default: my_streamlit_warehouse
prompt: "On which warehouse SQL queries issued by the application are run"
type: string
다음 테이블에는 template.yml
프로젝트 템플릿 파일에 있는 속성이 나열되어 있습니다.
속성 |
정의 |
---|---|
minimum_cli_version 선택 사항, 문자열 (기본값: 없음) |
최소 Snowflake CLI 버전입니다. 지정한 경우 |
files_to_render 선택 사항, 문자열 목록 (기본값: |
참고 이 목록에 포함되지 않은 템플릿 파일은 새 프로젝트에 추가되지만, 그 내용은 변경되지 않습니다. |
변수 선택 사항, 변수 목록 (기본값: |
템플릿 변수의 목록입니다. 프롬프트 사용자 지정, 선택 사항 변수에 대한 기본값 제공, 기본 유형 검사를 지원합니다. 자세한 내용은 아래의 변수 속성 매개 변수 테이블을 참조하십시오. 변수 값은 이 목록의 순서대로 결정됩니다. 이 목록에서 ╭─ Error ─────────────────────────────────────────────────────────╮
│ Cannot determine value of variable undefinded_variable │
╰─────────────────────────────────────────────────────────────────╯
|
다음 테이블에는 가변 속성의 매개 변수가 나열되어 있습니다.
속성 |
정의 |
---|---|
이름 필수, 문자열 |
변수의 이름입니다. |
프롬프트 선택 사항, 문자열 |
값을 가져오기 위해 사용자에게 표시하는 프롬프트입니다. 이 매개 변수를 설정하지 않으면 명령에 매개 변수 이름이 프롬프트 텍스트로 표시됩니다. 프롬프트를 다음과 같이 정의한 경우: variables:
- name: project_id
prompt: The identifier for the project
The identifier for the project:
|
기본값 선택 사항, 문자열/정수/부동소수점 |
열의 기본값입니다. 변수를 제공하지 않으면 변수는 필수로 처리되므로 사용자는 프롬프트 이후에 값을 제공하거나 다음 예제에서는 기본값을 사용하여 두 개의 변수를 정의합니다. variables:
- name: max_file_size_mb
default: 16
- name: file_name
default: 'default_file_name.zip'
실행되면, file_name [default_file_name.zip]:
max_file_size_mb [16]: 5
이 예제에서는 기본값이 있는 |
유형 선택 사항, 문자열 |
변수의 데이터 타입입니다. 유효한 값으로는 다음 예제에서는 변수를 variables:
- name: max_file_size_mb
type: int
snow init 명령을 실행하면 사용자가 잘못된 데이터 타입의 값을 입력하는 경우 다음 오류가 표시됩니다. max_file_size_mb: not an int
Error: 'not an int' is not a valid integer.
max_file_size_mb: 14.5
Error: '14.5' is not a valid integer.
max_file_size_mb: 6
Initialized the new project in example_dir
|