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
Copy

引数

なし

オプション

--package-entity-id TEXT

definition_versionが2以上のときに操作するパッケージ・エンティティの ID 。

--app-entity-id TEXT

definition_versionが2以上のときに操作するアプリケーション・エンティティの ID 。

-p, --project TEXT

Snowflakeプロジェクトが存在するパス。デフォルトは現在の作業ディレクトリです。

--env TEXT

key=value形式の文字列。テンプレートに使用される 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 deploysnow app runsnow app version create コマンドによって自動的に呼び出されます。しかし、ステージにアップロードする前に、セットアップスクリプト、アーティファクト、生成された SQL を確認したい場合は、このコマンドを手動で実行することができます。SQL コード生成の詳細については、 設定された Snowflake Native App アーティファクトを含むローカルフォルダーの準備 をご参照ください。

  • このコマンドは、 プロジェクト定義ファイル を使用して、プロジェクト・ディレクトリ内に作成する仮フォルダの名前を決定します。

    • デフォルトでは、 <project_directory>/output/deploy となります。このディレクトリはデプロイルートとも呼ばれ、後続のコマンドでステージにファイルがアップロードされると、ステージの構造がどのようになるかを反映します。

    • output/deploy の代わりに Snowflake CLI にカスタム名のフォルダを作成させたい場合は、 プロジェクト定義ファイルアプリケーションパッケージ エンティティの deploy_root フィールドを指定することで可能です。

      注釈

      デプロイルートに関連パスを提供する必要があります。絶対パスは拒否されます。デプロイルート・パスはプロジェクト・ディレクトリ内に作成されます。

    • run snow app bundle 、あるいは他のコマンドが bundle 機能性を使用するとデプロイルートは削除され再作成されるため、デプロイルートは仮ディレクトリです。

  • snow app bundle は、 snow app deploysnow app runsnow app version create コマンドの一部として自動的に呼び出されるため、デプロイルートの外でソースファイルのみに変更を加える必要があります。デプロイルートにあるファイルを変更すると、次にこれらのコマンドを呼び出したときに、そのファイルはソースファイルの最新の状態で上書きされます。

  • git のようなバージョン管理システムを使用している場合、デプロイルートは頻繁に変更される可能性があるため、追跡しないように選択することができます。

  • snow app bundle は、Javaファイルからjarファイルを作成するなど、成果物のビルドやコンパイルは行いません。プロジェクト定義ファイルで指定された成果物のみをコピーし、デプロイルートに追加してステージのディレクトリ構造を模倣します。

  • snow app bundle は、ローカルファイルシステムにのみ影響するため、Snowflake アカウントへのアクセスは必要ありません。

  • このコマンドは、 プロジェクト定義ファイル 内の アプリケーションパッケージ エンティティの:codenowrap:artifacts に対して次のようなコピーおよびシンボリックリンク動作を行います。

    • ソースパス内のすべてのディレクトリ名もデプロイルートに作成されます。

    • ソースパス内のすべてのファイルは、デプロイルート内のこれらのディレクトリ内でシンボリックリンクされます。

    • デプロイルートにあるシンボリックリンクされたファイルの中には、そのファイルから SQL 、ハードリンクになるものがあります。詳細については、 設定された Snowflake Native App アーティファクトを含むローカルフォルダーの準備 をご参照ください。

    プロジェクト定義ファイルから、次の:codenowrap: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
      ...
    
    Copy

    ここで、プロジェクト・ルートの dir1/dir2 には、 dir3dir4 などのサブディレクトリがあり、 file3.txtfile4.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
    
    Copy

Snowparkのアノテーション処理

Snowflake CLI バージョン2.5.0および Snowpark Python API バージョン1.15.0以降では、Snowparkアノテーション処理フィーチャーを:codenowrap:snow app bundle コマンドでレバレッジできます。このフィーチャーを使用すると、PythonコードファイルにSnowpark Pythonデコレーター( @udf@sproc@udaf@udtf)を注釈として付けることができます。このデコレーターを使用すると、 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
Copy

コマンドの実行中に発生する様々なステップに関する情報が表示され、プロジェクト定義ファイルで指定された場所(デフォルト: 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
Copy