snow app setup¶
Initializes an app.yml
manifest for a Snowflake App Runtime project. Creates an app.yml
file in the current directory with deployment fields preconfigured from
command-line flags, then Snowsight account defaults, then your personal
database. This command doesn’t apply to Snowflake Native Apps projects.
Syntax¶
Arguments¶
None
Options¶
--app-name TEXTName of the Snowflake App Runtime application to initialize. Defaults to the current directory name.
--dry-runOnly print the resolved configuration values without writing
app.yml. Default: False.--build-eai TEXTExternal access integration used during the app build. External access integrations are account-level objects, so specify the integration name without a database or schema qualifier.
--connection, -c, --environment TEXTName of the connection, as defined in your
config.tomlfile. Default:default.--host TEXTHost address for the connection. Overrides the value specified for the connection.
--port INTEGERPort for the connection. Overrides the value specified for the connection.
--account, --accountname TEXTName assigned to your Snowflake account. Overrides the value specified for the connection.
--user, --username TEXTUsername to connect to Snowflake. Overrides the value specified for the connection.
--password TEXTSnowflake password. Overrides the value specified for the connection.
--authenticator TEXTSnowflake authenticator. Overrides the value specified for the connection.
--workload-identity-provider TEXTWorkload identity provider (AWS, AZURE, GCP, OIDC). Overrides the value specified for the connection.
--private-key-file, --private-key-path TEXTSnowflake private key file path. Overrides the value specified for the connection.
--token TEXTOAuth token to use when connecting to Snowflake.
--token-file-path TEXTPath to file with an OAuth token to use when connecting to Snowflake.
--database, --dbname TEXTDatabase to use. In
snow app setup, this value is written to the generatedapp.ymlas an explicit override, taking precedence over account parameters and connection defaults.--schema, --schemaname TEXTDatabase schema to use. In
snow app setup, this value is written to the generatedapp.ymlas an explicit override, taking precedence over account parameters and connection defaults.--role, --rolename TEXTRole to use. Overrides the value specified for the connection.
--warehouse TEXTWarehouse to use. In
snow app setup, this value is written to the generatedapp.ymlas thequery_warehouseoverride, taking precedence over account parameters and connection defaults.--temporary-connection, -xUses a connection defined with command-line parameters, instead of one defined in config. Default: False.
--mfa-passcode TEXTToken to use for multi-factor authentication (MFA).
--enable-diagWhether to generate a connection diagnostic report. Default: False.
--diag-log-path TEXTPath for the generated report. Defaults to system temporary directory.
--diag-allowlist-path TEXTPath to a JSON file that contains allowlist parameters.
--format [TABLE|JSON|JSON_EXT|CSV]Specifies the output format. Default: TABLE.
--verbose, -vDisplays log entries for log levels
infoand higher. Default: False.--debugDisplays log entries for log levels
debugand higher; debug logs contain additional information. Default: False.--silentTurns off intermediate output to console. Default: False.
--enhanced-exit-codesDifferentiate exit error codes based on failure type. Default: False.
--helpDisplays the help text for this command.
Usage notes¶
The snow app setup command bootstraps a new Snowflake App Runtime project by
generating an app.yml
file with default deployment details. Setup resolves the destination
database, schema, and warehouse in this order: the explicit --database,
--schema, and --warehouse options, then Snowsight account defaults from
account administrator setup,
then your current connection settings. If those aren’t set, setup may target
your personal database. Remote builds use the shared external access
integration from Snowsight setup; you don’t add build_eai in app.yml for
the usual path.
Existing projects that use a snowflake.yml with a snowflake-app entity keep
working as before.
We recommend completing
account administrator setup
before team deploys so setup uses shared account defaults. The managed build
service packages your app when you run
snow app deploy.
After app.yml exists, edit it only when you need to override defaults,
then deploy to ship your changes.
If account defaults aren’t configured, setup may target a personal database. That path isn’t recommended for apps you plan to share. See Getting started with Snowflake App Runtime.
When a value can’t be resolved, setup errors and names the account parameter you
can set. The database, schema, and query_warehouse fields are required and
map to DEFAULT_SNOWFLAKE_APPS_DESTINATION_DATABASE,
DEFAULT_SNOWFLAKE_APPS_DESTINATION_SCHEMA, and
DEFAULT_SNOWFLAKE_APPS_QUERY_WAREHOUSE.
Setup leaves code_stage and code_workspace out of the generated app.yml, so
snow app deploy
provisions temporary code storage for the build and drops it afterward. Set
code_stage or code_workspace in app.yml to keep a persisted stage or
workspace instead. Personal databases use a workspace.
If app.yml already exists in the current directory (and you aren’t using
--dry-run), setup prints a message and doesn’t overwrite the file.
If you omit --app-name, setup uses the current directory name, converting
spaces and hyphens to underscores and removing any other disallowed characters.
The final name must match [a-zA-Z0-9_]+ (letters, digits, and underscores) or
the command errors.
For the app.yml manifest fields, see
app.yml manifest for Snowflake App Runtime. For the snowflake.yml
schema that existing projects use, see the
snowflake.yml reference.
For a concrete example after setup, see
Getting started with Snowflake App Runtime.
If the project still uses snowflake.yml, see
Migrate from snowflake.yml to app.yml.
Examples¶
Initialize app.yml for a Snowflake App Runtime project in the current directory:
After running the command, edit app.yml to configure your app, then deploy it:
Show the resolved configuration without writing app.yml: