템플릿에서 프로젝트 부트스트래핑하기

프로젝트의 인스턴스화를 간소화할 수 있도록 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]
Copy

여기서,

  • 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
    
    Copy

    명령 프롬프트 대상(기본값은 대괄호 안에 표시됨):

    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
    
    Copy

    이 예제에서는 query_warehousestage 변수가 -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"
Copy

Snowflake CLI 프로젝트 템플릿은 다음의 예약 변수 및 필터도 지원합니다.

  • project_dir_name 변수, 생성된 프로젝트의 루트 디렉터리로 자동 확인됩니다.

    예를 들어, snowflake.yml 파일에 다음이 포함되어 있다고 가정해 보겠습니다.

    definition_version: "1.1"
    snowpark:
      project_name: <! project_dir_name !>
      ...
    
    Copy

    그런 다음, 다음 명령을 실행하여 사용자 지정 템플릿에서 프로젝트를 초기화합니다.

    snow init examples/new_snowpark_project --template-source my_example_template/
    
    Copy

    snow init 명령은 snowflake.yml 파일을 다음과 같이 렌더링합니다.

    definition_version: "1.1"
    snowpark:
      project_name: new_snowpark_project
      ...
    
    Copy
  • to_snowflake_identifier 필터, 사용자가 제공한 문자열을 올바르게 형식이 지정된 Snowflake 식별자로 포맷합니다.

    Snowflake는 변수가 Snowflake 오브젝트를 참조할 때 이 필터를 사용할 것을 강력히 권장합니다.

    예를 들어, snowflake.yml 파일에 다음이 포함되어 있다고 가정해 보겠습니다.

    definition_version: "1.1"
    streamlit:
      name: <! name | to_snowflake_identifier !>
      ...
    
    Copy

    그런 다음, 다음 명령을 실행하여 사용자 지정 템플릿에서 프로젝트를 초기화합니다.

    snow init examples/streamlit --template-source my_example_template2/ -D name='My test streamlit'
    
    Copy

    snow init 명령은 snowflake.yml 파일을 다음과 같이 렌더링합니다.

    definition_version: "1.1"
    streamlit:
      name: My_test_streamlit
      ...
    
    Copy

    문자열을 유효한 Snowlake 식별자로 변환할 수 없으면 다음과 같이 snow init 명령이 오류와 함께 종료됩니다.

    snow init examples/streamlit --template-source my_example_template2/ -D name=1234567890
    
    Copy
    ╭─ 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
Copy

다음 테이블에는 template.yml 프로젝트 템플릿 파일에 있는 속성이 나열되어 있습니다.

템플릿 속성

속성

정의

minimum_cli_version

선택 사항, 문자열 (기본값: 없음)

최소 Snowflake CLI 버전입니다. 지정한 경우 snow init 명령은 설치된 Snowflake CLI 의 버전을 확인하고 설치된 버전이 지정한 버전보다 낮으면 오류와 함께 종료합니다.

files_to_render

선택 사항, 문자열 목록 (기본값: [])

snow init 명령으로 렌더링할 파일 목록입니다. 각 경로는 템플릿 루트를 기준으로 해야 합니다.

참고

이 목록에 포함되지 않은 템플릿 파일은 새 프로젝트에 추가되지만, 그 내용은 변경되지 않습니다.

변수

선택 사항, 변수 목록 (기본값: [])

템플릿 변수의 목록입니다. 프롬프트 사용자 지정, 선택 사항 변수에 대한 기본값 제공, 기본 유형 검사를 지원합니다. 자세한 내용은 아래의 변수 속성 매개 변수 테이블을 참조하십시오. 변수 값은 이 목록의 순서대로 결정됩니다.

이 목록에서 snowflake.yml 파일에 사용된 변수를 생략하면 snow init 명령이 다음 오류와 함께 종료됩니다.

╭─ Error ─────────────────────────────────────────────────────────╮
│ Cannot determine value of variable undefinded_variable        │
╰─────────────────────────────────────────────────────────────────╯

다음 테이블에는 가변 속성의 매개 변수가 나열되어 있습니다.

가변 속성 매개 변수

속성

정의

이름

필수, 문자열

변수의 이름입니다. <! 이름 !> 과 같은 템플릿 파일과 -D name=value 와 같은 -D 옵션에서 사용됩니다.

프롬프트

선택 사항, 문자열

값을 가져오기 위해 사용자에게 표시하는 프롬프트입니다. 이 매개 변수를 설정하지 않으면 명령에 매개 변수 이름이 프롬프트 텍스트로 표시됩니다.

프롬프트를 다음과 같이 정의한 경우:

variables:
  - name: project_id
    prompt: The identifier for the project
Copy

snow initproject_id 변수에 대해 이 프롬프트를 표시합니다.

The identifier for the project:

기본값

선택 사항, 문자열/정수/부동소수점

열의 기본값입니다. 변수를 제공하지 않으면 변수는 필수로 처리되므로 사용자는 프롬프트 이후에 값을 제공하거나 -D 명령줄 옵션으로 지정해야 합니다.

다음 예제에서는 기본값을 사용하여 두 개의 변수를 정의합니다.

variables:
  - name: max_file_size_mb
    default: 16
  - name: file_name
    default: 'default_file_name.zip'
Copy

실행되면, snow init 명령은 이 두 변수에 대해 다음과 같은 프롬프트를 표시합니다.

file_name [default_file_name.zip]:
max_file_size_mb [16]: 5
Copy

이 예제에서는 기본값이 있는 file_name 변수의 기본값(default_file_name.zip)을 사용하고, max_file_size_mb 는 사용자가 제공한 값(5)으로 설정합니다.

유형

선택 사항, 문자열

변수의 데이터 타입입니다. 유효한 값으로는 string, int, float 등이 있습니다. 지정하지 않으면 명령은 값을 string 로 가정합니다.

다음 예제에서는 변수를 int 데이터 타입으로 정의합니다.

variables:
  - name: max_file_size_mb
    type: int
Copy

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