テンプレートからプロジェクトをブートストラップする¶
プロジェクトのインスタンス化を容易にするために、 Snowflake CLI はプロジェクトのテンプレート化を実装しています。 独自のプロジェクトテンプレートを作成する ことも、Snowflake が Snowflake CLI templates 公開 Git リポジトリで提供しているサンプルを使用することもできます。
snow init コマンドは、プロジェクト・ディレクトリを作成し、指定されたテンプレートで定義されたファイル構造をその中に入れます。
--no-interactive
オプションを指定しない場合、-D
(または--variable
)オプションで指定しないテンプレート(template.yml
)で指定された各変数について、コマンドのプロンプトが表示されます。--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 templates Git リポジトリになります。
[--template NAME]
は、テンプレートとして使用するSOURCE
のサブディレクトリを指定します(リモート・ソースに便利です)。提供されない場合、SOURCE
は1つのテンプレートとして扱われます。[-D key1=value1 -D key2=value2...]
は1つ以上の名前と値のペアのリストで、(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 をご参照ください。
テンプレート構文¶
テンプレート変数と式は:codenowrap:<! ... !>
で囲む必要があります。 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 オプション、 文字列 (デフォルト: None) |
最小 Snowflake CLI バージョン。指定された場合、 |
files_to_render オプション、 文字列リスト (デフォルト: |
注釈 このリストに含まれていないテンプレートファイルは新しいプロジェクトに追加されますが、その内容は変更されません。 |
変数 オプション, 変数リスト (デフォルト: |
テンプレート変数のリスト。プロンプトのカスタマイズ、オプション変数のデフォルト値の提供、基本的な型チェックをサポートしています。詳細については、以下の 変数プロパティ・パラメータ の表をご参照ください。変数の値は、このリストから順番に決定されます。 このリストから ╭─ Error ─────────────────────────────────────────────────────────╮
│ Cannot determine value of variable undefinded_variable │
╰─────────────────────────────────────────────────────────────────╯
|
以下の表に、変数プロパティのパラメータを示します。
プロパティ |
定義 |
---|---|
name required, string |
変数の名前。これは、 |
プロンプト optional, string |
値を取得するためにユーザーに表示するプロンプト。このパラメータを設定しないと、コマンドはパラメータ名をプロンプト・テキストとして表示します。 プロンプトを次のように定義します。 variables:
- name: project_id
prompt: The identifier for the project
The identifier for the project:
|
デフォルト オプション、 string/int/float |
変数のデフォルト値。提供されない場合、変数は必須として扱われるため、ユーザーはプロンプトの後に値を提供するか、 以下の例では、2つの変数をデフォルト値で定義しています。 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
この例では、 |
タイプ optional, string |
変数のデータ型。有効な値には、 以下の例では、 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
|