Arquivos de definição de projeto¶
Um arquivo de definição de projeto chamado snowflake.yml
declara um diretório como um projeto Snowflake Native App. É um arquivo com versão controlada que reside na raiz de um diretório do projeto Snowflake Native App e pode ser criado manualmente ou pelo Snowflake CLI como parte da inicialização do projeto. Contanto que você possa fornecer este arquivo estruturado no diretório, mas escolha usar sua própria estrutura de projeto independente, o Snowflake CLI pode descobrir os arquivos relevantes e executar sua funcionalidade normalmente.
Para Native Apps, seu snowflake.yml
ficaria parecido com o seguinte:
definition_version: 2
entities:
pkg:
type: application package
identifier: <name_of_app_pkg>
stage: app_src.stage
manifest: app/manifest.yml
artifacts:
- src: app/*
dest: ./
- src: src/module-add/target/add-1.0-SNAPSHOT.jar
dest: module-add/add-1.0-SNAPSHOT.jar
- src: src/module-ui/src/*
dest: streamlit/
meta:
role: <your_app_pkg_owner_role>
warehouse: <your_app_pkg_warehouse>
post_deploy:
- sql_script: scripts/any-provider-setup.sql
- sql_script: scripts/shared-content.sql
app:
type: application
identifier: <name_of_app>
from:
target: pkg
debug: <true|false>
meta:
role: <your_app_owner_role>
warehouse: <your_app_warehouse>
Propriedades comuns da entidade¶
A tabela a seguir descreve as propriedades comuns disponíveis para entidades de definição de projeto para o Native Apps. Consulte Especificação de entidades para obter mais informações sobre entidades de definição de projeto.
Propriedade |
Definição |
---|---|
tipo obrigatório, cadeia de caracteres |
O tipo de entidade a ser gerenciada. Para Snowflake Native App, os valores válidos incluem:
|
identifier opcional, cadeia de caracteres |
Identificador Snowflake opcional para a entidade; identificadores entre aspas e sem aspas são compatíveis. Para usar identificadores entre aspas, inclua as aspas ao redor do valor YAML (por exemplo Se não for especificado, o ID da entidade na definição do projeto será usado como identificador. |
meta.warehouse opcional, cadeia de caracteres |
Warehouse usado para executar os scripts fornecidos como parte de Padrão: warehouse especificado para a conexão no arquivo Snowflake CLI
|
meta.role opcional, cadeia de caracteres |
Função a ser usada ao criar a entidade e os objetos do lado do provedor. Nota Se você não especificar uma função, o Snowflake CLI tenta usar a função padrão atribuída ao seu usuário na sua conta Snowflake. Normalmente, você especifica esse valor no Padrão: função especificada na conexão do Snowflake CLI |
meta.post_deploy opcional, sequência |
Lista de scripts SQL a serem executados após a criação da entidade. O exemplo a seguir mostra como definir esses scripts no arquivo de definição do projeto: definition_version: 2
entities:
myapp_pkg:
type: application package
...
meta:
post_deploy:
- sql_script: scripts/post_deploy1.sql
- sql_script: scripts/post_deploy2.sql
Esses scripts são invocados por comandos que criam ou atualizam uma entidade. Por exemplo, executar o comando Você também pode usar modelos nos scripts SQL pós-implementação, conforme mostrado no seguinte conteúdo de script de amostra: GRANT reference_usage on database provider_data to share in entity <% fn.str_to_id(ctx.entities.myapp_pkg.identifier) %>
|
meta.use_mixins opcional, sequência |
Nomes de mixins a serem aplicados a esta entidade. Consulte Mixins de projeto para obter mais informações. |
Propriedades da entidade do pacote de aplicativo¶
A tabela a seguir descreve as propriedades comuns disponíveis para entidades de pacote de aplicativo para o Native Apps. Consulte Especificação de entidades para obter mais informações sobre entidades de definição de projeto.
Propriedade |
Definição |
---|---|
tipo obrigatório, cadeia de caracteres |
Deve ser |
manifest obrigatório, cadeia de caracteres |
A local do arquivo Snowflake Native App |
deploy_root opcional, cadeia de caracteres |
Subdiretório na raiz do projeto onde a etapa de construção copia os artefatos. Depois de copiados para este local, você pode implantá-los em um estágio Snowflake. Padrão: |
generated_root opcional, cadeia de caracteres |
Subdiretório da raiz de implementação onde Snowflake CLI grava os arquivos gerados. Padrão: |
stage opcional, cadeia de caracteres |
Identificador do estágio que armazena os artefatos do aplicativo. O valor usa o formato Padrão: |
artifacts obrigatório, sequência |
Lista de pares de origem e destino do arquivo para adicionar à raiz de implantação, bem como um processador de anotação Snowpark opcional. É possível usar as seguintes propriedades de artefato:
Se Você também pode passar uma cadeia de caracteres para cada item em vez de um Exemplo sem processador: pkg:
artifacts:
- src: app/*
dest: ./
- src: streamlit/*
dest: streamlit/
- src: src/resources/images/snowflake.png
dest: streamlit/
Exemplo com um processador: pkg:
artifacts:
- src: qpp/*
dest: ./
processors:
- name: snowpark
properties:
env:
type: conda
name: <conda_name>
|
distribution opcional, cadeia de caracteres |
Distribuição do pacote de aplicativo criado pelo Snowflake CLI. Ao executar comandos Padrão: |
scratch_stage opcional, cadeia de caracteres |
Identificador do estágio que armazena dados temporários usados por Snowflake CLI. O valor usa o formato Padrão: |
Propriedades da entidade do aplicativo¶
A tabela a seguir descreve propriedades comuns disponíveis para entidades de aplicativo para o Native Apps. Consulte Especificação de entidades para obter mais informações sobre entidades de definição de projeto.
Propriedade |
Definição |
---|---|
tipo obrigatório, cadeia de caracteres |
Deve ser |
from.target obrigatório, cadeia de caracteres |
Pacote de aplicativo a partir do qual criar esta entidade de aplicativo. No exemplo a seguir, from:
target: my_pkg
|
debug opcional, booleano |
Se deve habilitar o modo de depuração ao usar um estágio nomeado para criar um aplicativo. Padrão: |
Mais informações sobre processadores de artefatos¶
Se você incluir o campo artifacts.processors
no arquivo de definição do projeto, o comando snow app bundle
invocará o processamento personalizado para arquivos de código Python no diretório ou arquivo src
.
Esta seção abrange uma lista de processadores compatíveis.
Processador Snowpark¶
Um dos processadores compatíveis com Snowflake CLI é snowpark
, que aplica o processamento de anotação do Snowpark a arquivos Python. A seguir, mostramos a estrutura básica e a sintaxe para diferentes ambientes de processamento:
Para executar código em um ambiente conda, use o seguinte:
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: conda name: <conda_name>
onde
<conda_name>
é o nome do ambiente conda com o interpretador Python e a biblioteca Snowpark que você deseja usar para o processamento de anotações do Snowpark.Para executar código em um ambiente virtual Python, use o seguinte:
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: venv path: <venv_path>
onde
<venv_path>
é o caminho do ambiente virtual Python com o interpretador Python e a biblioteca Snowpark que você deseja usar para o processamento de anotações do Snowpark. O caminho pode ser absoluto ou relativo ao diretório do projeto.Para executar código no ambiente atualmente ativo, use qualquer uma das seguintes definições equivalentes:
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark properties: env: type: current
ou
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - name: snowpark
ou
pkg: artifacts: - src: <some_src> dest: <some_dest> processors: - snowpark
Para obter mais informações sobre processamento personalizado, consulte Geração automática de código SQL e o comando snow app bundle.
Processador de modelos¶
Os projetos Snowflake Native App oferecem suporte a modelos em arquivos arbitrários, o que permite expandir modelos em todos os arquivos no diretório src
de um artefato. É possível habilitar esse recurso incluindo um processador de modelos
na definição de artefatos
desejada, conforme mostrado no exemplo a seguir:
definition_version: 2
entities:
pkg:
type: application package
identifier: myapp_pkg
artifacts:
- src: app/*
dest: ./
processors:
- templates
manifest: app/manifest.yml
app:
type: application
identifier: myapp_<% fn.get_username() %>
from:
target: pkg
Quando Snowflake CLI carrega os arquivos para um estágio, ele expande automaticamente os modelos antes de carregá-los. Por exemplo, suponha que seu aplicativo contenha um arquivo app/README.md
com o seguinte conteúdo que inclui o modelo codenowrap:<% ctx.entities.pkg.identifier %>
:
This is a README file for application package <% ctx.entities.pkg.identifier %>.
O modelo é então expandido para o seguinte antes de carregar o arquivo para um estágio:
This is a README file for application package myapp_pkg.
Substituições de definição de projeto¶
Embora o diretório do seu projeto deva ter um arquivo snowflake.yml
, você pode escolher personalizar o comportamento do Snowflake CLI fornecendo substituições locais para snowflake.yml
, como uma nova função para testar seu próprio pacote de aplicativos. Essas substituições devem ser colocadas no arquivo snowflake.local.yml
que fica ao lado da definição do projeto base. A Snowflake sugere que você adicione isso ao seu arquivo .gitignore
para que ele não seja controlado por versão pelo git. Todos os modelos fornecidos pela Snowflake já o incluem no arquivo .gitignore
.
Este arquivo de substituição deve estar no mesmo local que o seu arquivo snowflake.yml
.
O arquivo snowflake.local.yml
compartilha o esquema exato como snowflake.yml
, exceto que cada valor que era obrigatório agora é opcional, além dos já opcionais. A seguir mostramos um exemplo do arquivo snowflake.local.yml
:
entities:
pkg:
meta:
role: <your_app_pkg_owner_role>
name: <name_of_app_pkg>
warehouse: <your_app_pkg_warehouse>
app:
debug: <true|false>
meta:
role: <your_app_owner_role>
name: <name_of_app>
warehouse: <your_app_warehouse>
Todo o comando snow app
prioriza os parâmetros neste arquivo sobre aqueles definidos na base do arquivo de configuração snowflake.yml
. Padrões sensíveis já fornecem isolamento entre desenvolvedores que usam a mesma conta Snowflake para desenvolver o mesmo projeto de aplicativo, portanto, se você estiver apenas começando, sugerimos não incluir um arquivo de substituição.
O esquema de definição final obtido após a substituição de snowflake.yml
por snowflake.local.yml
é chamado de definição de projeto resolvido.
Limitações¶
Atualmente, o Snowflake CLI não oferece suporte
Vários arquivos de substituição.
Um arquivo de substituição em branco. Crie este arquivo somente se desejar substituir um valor de
snowflake.yml
.