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
引数¶
なし
オプション¶
--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 の使用上の注意をご参照ください。自分の好みに合わせて変更することもできますが、アカウント内の既存のオブジェクトとの衝突がないかどうかを確認するのはユーザーの責任です。
Snowflake CLI によって作成されたオブジェクトには、特別なコメント
GENERATED_BY_SNOWCLI
がタグ付けされます。アプリケーションパッケージとインスタンスの作成に使用されるロールは、Snowflake Native Applicationsを操作するための適切なアカウントレベルの権限が必要です。詳細については、 アプリケーションパッケージを作成する および アプリをローカルにインストールしてテストする をご参照ください。
デフォルトでは、 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"
バージョンとパッチを含むアプリケーションパッケージがすでにあり、このバージョンとパッチからアプリケーションを作成し、インタラクティブモードを呼び出す場合は、次を実行できます。
snow app run --version V1 --patch 12 --interactive --connection="dev"
ここでは、バージョン
V1
とパッチ12
は例としてのみ使用されています。アプリケーションパッケージに既存のリリースディレクティブが設定されていて、そこからアプリケーションを作成し、インタラクティブモードをバイパスする場合は、次を実行できます。
snow app run --from-release-directive --force --connection="dev"
この例では、
--env
オプションを使って複数の環境変数を渡す方法を示しています。snow app run --env source_folder="src/app" --env stage_name=mystage