snow app validate

デプロイされたSnowflake Native Appのセットアップスクリプトを検証します。

構文

snow app 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>
  --oauth-client-id <oauth_client_id>
  --oauth-client-secret <oauth_client_secret>
  --oauth-authorization-url <oauth_authorization_url>
  --oauth-token-request-url <oauth_token_request_url>
  --oauth-redirect-uri <oauth_redirect_uri>
  --oauth-scope <oauth_scope>
  --oauth-disable-pkce
  --oauth-enable-refresh-tokens
  --oauth-enable-single-use-refresh-tokens
  --client-store-temporary-credential
  --format <format>
  --verbose
  --debug
  --silent
  --enhanced-exit-codes
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セクションの変数を上書きします。デフォルト: []

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

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

--mfa-passcode TEXT

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

--enable-diag

接続診断レポートを作成するかどうか。デフォルト: false。

--diag-log-path TEXT

生成されたレポートのパス。デフォルトはシステム仮ディレクトリです。デフォルト: <system_temporary_directory>.

--diag-allowlist-path TEXT

allowlist パラメーターを含む JSON ファイルへのパス。

--oauth-client-id TEXT

Snowflake統合のためにIDプロバイダーが提供するクライアントIDの値。

--oauth-client-secret TEXT

Snowflake 統合用に ID プロバイダーが提供するクライアントシークレットの値。

--oauth-authorization-url TEXT

認証コードをドライバーに提供する ID プロバイダーエンドポイント。

--oauth-token-request-url TEXT

ドライバーにアクセストークンを供給する ID プロバイダーのエンドポイント。

--oauth-redirect-uri TEXT

URI 認証コードのリダイレクトに使用します。

--oauth-scope TEXT

ID プロバイダー承認リクエストで要求された範囲。

--oauth-disable-pkce

コード交換の証明キー (PKCE) を無効にします。デフォルト: False

--oauth-enable-refresh-tokens

実際のアクセストークンが古くなった場合に、サイレント再認証コードを有効にします。デフォルト: False

--oauth-enable-single-use-refresh-tokens

シングルユース・更新・トークンのセマンティクスにオプトインするかどうか。デフォルト: False

--client-store-temporary-credential

仮認証情報を保存します。

--format [TABLE|JSON]

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

--verbose, -v

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

--debug

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

--silent

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

--enhanced-exit-codes

終了エラーコードをエラーのタイプによって区別します。デフォルト: false。

--help

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

使用上の注意

アプリケーションのソース・ステージのファイルに影響を与えないように、このコマンドは アプリケーション・パッケージ エンティティの scratch_stage を使用して、空のステージを作成し、このステージにプロジェクト・ファイルをアップロードし、検証を実行し、ステージをドロップします。

検証はエラーと警告を別々に返します。エラーはコマンドを終了コード1で終了させるが、警告は終了コード1で終了させません。

  • 次の例は、検証に成功した場合の出力です。

    snow app validate
    
    Copy
    Validating Snowflake Native App setup script.
      Checking if stage st_version_pkg_<user>.app_src.stage_snowflake_cli_scratch exists, or creating a new one if none exists.
      Performing a diff between the Snowflake stage and your local deploy_root ('<APP_PATH>/apps/st-version/output/deploy') directory.
      There are no new files that exist only on the stage.
    There are no existing files that have been modified, or their status is unknown.
    There are no existing files that are identical to the ones on the stage.
    New files only on your local:
    README.md
    manifest.yml
    setup_script.sql
    streamlit/environment.yml
    streamlit/ui.py
      Uploading diff-ed files from your local <APP_PATH>/apps/st-version/output/deploy directory to the Snowflake stage.
      Dropping stage st_version_pkg_<user>.app_src.stage_snowflake_cli_scratch.
    Snowflake Native App validation succeeded.
    
  • 次の例は、 JSON 出力形式を使用した、検証成功時の出力を示しています。

    snow app validate --format json
    
    Copy
    {
        "errors": [],
        "warnings": [],
        "status": "SUCCESS"
    }
    
  • 次の例は、バリデーションでエラーと警告が発生した場合の出力を、 JSON の出力フォーマットで示したものです。

    snow app validate --format json
    
    Copy
    {
        "errors": [
            {
                "message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/empty.sql': Empty SQL statement.",
                "cause": "Empty SQL statement.",
                "errorCode": "000900",
                "fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/empty.sql",
                "line": -1,
                "column": -1
            },
            {
                "message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/second.sql': Unsupported feature 'CREATE VERSIONED SCHEMA without OR ALTER'.",
                "cause": "Unsupported feature 'CREATE VERSIONED SCHEMA without OR ALTER'.",
                "errorCode": "000002",
                "fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/second.sql",
                "line": -1,
                "column": -1
            },
            {
                "message": "Error in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql': File '/does-not-exist.sql' cannot be found in the same stage as the setup script is located.",
                "cause": "File '/does-not-exist.sql' cannot be found in the same stage as the setup script is located.",
                "errorCode": "093159",
                "fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
                "line": -1,
                "column": -1
            }
        ],
        "warnings": [
            {
                "message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 11 at position 35: APPLICATION ROLE should be created with IF NOT EXISTS.",
                "cause": "APPLICATION ROLE should be created with IF NOT EXISTS.",
                "errorCode": "093352",
                "fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
                "line": 11,
                "column": 35
            },
            {
                "message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 15 at position 13: CREATE Table statement in the setup script should have \"IF NOT EXISTS\", \"OR REPLACE\", or \"OR ALTER\".",
                "cause": "CREATE Table statement in the setup script should have \"IF NOT EXISTS\", \"OR REPLACE\", or \"OR ALTER\".",
                "errorCode": "093351",
                "fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
                "line": 15,
                "column": 13
            },
            {
                "message": "Warning in file '@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql' on line 15 at position 13: Table identifier 'MY_TABLE' should include its parent schema name.",
                "cause": "Table identifier 'MY_TABLE' should include its parent schema name.",
                "errorCode": "093353",
                "fileName": "@STAGE_SNOWFLAKE_CLI_SCRATCH/setup_script.sql",
                "line": 15,
                "column": 13
            }
        ],
        "status": "FAIL"
    }