snow app run

Snowflakeアカウントにアプリケーションパッケージを作成し、そのステージにコードファイルをアップロードして、アプリケーションパッケージからアプリケーションオブジェクトを作成またはアップグレードします。

構文

snow app run
  --version <version>
  --patch <patch>
  --from-release-directive
  --interactive / --no-interactive
  --force
  --validate / --no-validate
  --package-entity-id <package_entity_id>
  --app-entity-id <app_entity_id>
  --project <project_definition>
  --env <env_overrides>
  --connection <connection>
  --host <host>
  --port <port>
  --account <account>
  --user <user>
  --password <password>
  --authenticator <authenticator>
  --private-key-file <private_key_file>
  --token-file-path <token_file_path>
  --database <database>
  --schema <schema>
  --role <role>
  --warehouse <warehouse>
  --temporary-connection
  --mfa-passcode <mfa_passcode>
  --enable-diag
  --diag-log-path <diag_log_path>
  --diag-allowlist-path <diag_allowlist_path>
  --format <format>
  --verbose
  --debug
  --silent
Copy

引数

なし

オプション

--version TEXT

アプリケーションオブジェクトを作成する既存のアプリケーションパッケージで定義されているバージョン。アプリケーションオブジェクト名とアプリケーションパッケージ名は、プロジェクト定義ファイルから決定されます。

--patch INTEGER

アプリケーション オブジェクトの作成に使用する既存のアプリケーション パッケージで定義されている、指定された --version の下のパッチ番号。アプリケーションオブジェクト名とアプリケーションパッケージ名は、プロジェクト定義ファイルから決定されます。

--from-release-directive

アプリケーションオブジェクトを、Snowflakeアカウントに適用可能なリリースディレクティブで指定されたバージョンとパッチに作成またはアップグレードします。プロジェクト定義ファイルから決定される特定のアプリケーションパッケージに対して、Snowflakeアカウントにリリースディレクティブが存在しない場合、コマンドは失敗します。デフォルト: 未設定。デフォルト: false。

--interactive / --no-interactive

このオプションを有効にすると、標準入力と出力が端末デバイスでない場合でも、プロンプトが表示されます。対話的なシェル環境では True、それ以外では False がデフォルトです。

--force

このオプションを有効にすると、コマンドは表示されるすべてのプロンプトを暗黙的に承認するようになります。インタラクティブモードが指定されておらず、潜在的に破壊的なアクションを実行する場合は、このオプションを有効にする必要があります。デフォルトでは設定されていません。デフォルト: false。

--validate / --no-validate

このオプションを有効にすると、デプロイされた Snowflake Native App のセットアップスクリプト SQL の検証がトリガーされます。デフォルト: True

--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 セクションの変数をオーバーライドする。デフォルト: []

--connection, -c, --environment TEXT

config.toml ファイルで定義されている接続の名前。デフォルト: デフォルト

--host TEXT

接続用のホストアドレス。接続に指定された値を上書きします。

--port INTEGER

接続のポート。接続に指定された値を上書きします。

--account, --accountname TEXT

Snowflakeアカウントに割り当てられた名前。接続に指定された値を上書きします。

--user, --username TEXT

Snowflakeに接続するユーザー名。接続に指定された値を上書きします。

--password TEXT

Snowflakeのパスワード。接続に指定された値を上書きします。

--authenticator TEXT

Snowflakeの認証コード。接続に指定された値を上書きします。

--private-key-file, --private-key-path TEXT

Snowflake プライベートキーファイルへのパス。接続に指定された値を上書きします。

--token-file-path TEXT

Snowflake に接続する際に使用する OAuth トークンを含むファイルへのパス。

--database, --dbname TEXT

使用するデータベース。接続に指定された値を上書きします。

--schema, --schemaname TEXT

使用するデータベーススキーマ。接続に指定された値を上書きします。

--role, --rolename TEXT

使用するロール。接続に指定された値を上書きします。

--warehouse TEXT

使用するウェアハウス名。接続に指定された値を上書きします。

--temporary-connection, -x

構成で定義された接続ではなく、コマンドラインパラメーターで定義された接続を使用します。デフォルト: false。

--mfa-passcode TEXT

多要素認証(MFA)に使用するトークン。

--enable-diag

Pythonコネクター診断テストを実行します。デフォルト: false。

--diag-log-path TEXT

診断レポートパス。デフォルト: <temporary_directory>

--diag-allowlist-path TEXT

オプションの許可リストへの診断レポートパス。

--format [TABLE|JSON]

出力形式を指定します。デフォルト: TABLE

--verbose, -v

ログレベル info 以上のログエントリを表示します。デフォルト: false。

--debug

ログレベル debug 以上のログ エントリを表示します。デバッグログには追加情報が含まれます。デフォルト: false。

--silent

コンソールへの中間出力をオフにします。デフォルト: false。

--help

このコマンドのヘルプテキストを表示します。

使用上の注意

注釈

このコマンドは、 config.toml ファイルへのロールまたはウェアハウスの上書きを受け入れません。代わりに snowflake.yml または snowflake.local.yml のネイティブアプリ定義に追加してください。

このコマンドは、解決されたプロジェクト定義に基づいて、ファイルをアップロードするステージ、アップロードするファイル、および作成するオブジェクトの名前を決定します。デフォルトのガイダンスについては、 Snowflake Native App プロジェクトについて および snow app init の使用上の注意をご参照ください。自分の好みに合わせて変更することもできますが、アカウント内の既存のオブジェクトとの衝突がないかどうかを確認するのはユーザーの責任です。

デフォルトでは、 snow app run コマンドはSnowflakeアカウントにアプリケーションパッケージを作成し、そのステージにコードファイルをアップロードしてから、セットアップスクリプト SQL を検証し、そのアプリケーションの開発モードのインスタンスを作成(またはアップグレード)します。デフォルトコマンドを実行するときは、次の点に注意してください。

  • プロジェクト定義ファイルの nativeapp.project.artifacts で指定されたすべてのファイルがSnowflakeステージにアップロードされます。このアーティファクトには、 manifest.yml ファイルとそれに関連するセットアップスクリプトが含まれている必要があります。

  • nativeapp.project.artifacts で指定されたすべてのファイルは、 snow app run を呼び出す前に、必要に応じて個別にコンパイルおよびパッケージ化されている必要があります。 Snowflake CLI にはこれらの中間タスクを実行する機能は提供されていないため、独自のスクリプトで実行することで構築プロセスを完全に制御できます。

  • Snowflake CLI は、これらのオブジェクトを作成するときに、デフォルトのアプリケーションパッケージ名、ステージ名、アプリケーション名を使用します。

  • 初回実行後に snow app run を実行すると、アップロードされたファイルとローカルディレクトリ内のファイルの状態が比較され、変更されたファイルのみを選択的にアップロードして時間を節約します。ファイルが変更された場合、ステージの新しいコンテンツに基づいてアプリケーションがアップグレードされます。

  • アプリケーションパッケージが既に存在し、その配布プロパティが INTERNAL である場合、コマンドはそのパッケージが Snowflake CLI によって作成されたかどうかをチェックします。そうでない場合、コマンドはエラーをスローします。アプリケーションパッケージの配布が EXTERNAL の場合、このようなチェックは実行されません。

  • 作業中のアプリケーションパッケージの配布値が、解決されたプロジェクト定義で設定されている値と異なる場合、コマンドは警告を発しますが、実行は続行されます。

  • アプリケーションインスタンスは、 開発モード で作成またはアップグレードされます。具体的には、 ステージングされたファイル を使用します。

--version--patch、または --from-release-directive オプションを指定すると、このコマンドは既存のアプリケーションインスタンスをアップグレードするか、アプリケーションが存在しない場合はインスタンスを作成します。このシナリオでは、アプリケーションパッケージは作成されません。

  • Snowflake CLI が、最初にルーズファイルモードでインストールされたアプリケーションをリリースディレクティブを使用するようにアップグレードしようとするなど、何らかの理由でアプリケーションを更新できない場合は、既存のアプリケーションを削除し、必要なインストール戦略を使用して新しいアプリケーションを作成しようとします。このコマンドは、アクションを実行する前にドロップを確認するように要求します。

  • コマンドを操作せず、すべてのアクションを強制する場合は、 --force オプションを使用してすべてのプロンプトをバイパスします。これにより、破壊的なアクションを続行するかどうかを尋ねるすべての入力に対して「はい」としてプロキシされます。

  • Snowflake CLI は、コマンドをインタラクティブシェルで実行しているかどうかを判断しようとします。 --force が指定されておらず、インタラクティブシェルでコマンドを実行している場合は、インタラクティブオプションが自動的に選択されます。

  • インタラクティブシェルでない場合でも Snowflake CLI に強制的にインタラクティブにする場合は、 --interactive オプションを使用します。

これらの例は、コードファイルに必要な変更を加え、 snowflake.yml または snowflake.local.yml ファイルに追加したことを前提としています。

  • ステージングされたファイルを使用してアプリケーションパッケージとアプリケーションを作成する場合は、次を実行できます。

    cd my_app_project
    my_app_project_build_script.sh
    snow app run --connection="dev"
    
    Copy
  • バージョンとパッチを含むアプリケーションパッケージがすでにあり、このバージョンとパッチからアプリケーションを作成し、インタラクティブモードを呼び出す場合は、次を実行できます。

    snow app run --version V1 --patch 12 --interactive --connection="dev"
    
    Copy

    ここでは、バージョン V1 とパッチ 12 は例としてのみ使用されています。

  • アプリケーションパッケージに既存のリリースディレクティブが設定されていて、そこからアプリケーションを作成し、インタラクティブモードをバイパスする場合は、次を実行できます。

    snow app run --from-release-directive --force --connection="dev"
    
    Copy
  • この例では、 --env オプションを使って複数の環境変数を渡す方法を示しています。

    snow app run --env source_folder="src/app" --env stage_name=mystage
    
    Copy