snow app bundle¶
Prepara uma pasta local com artefatos de aplicativo configurados.
Sintaxe¶
snow app bundle
--package-entity-id <package_entity_id>
--app-entity-id <app_entity_id>
--project <project_definition>
--env <env_overrides>
--format <format>
--verbose
--debug
--silent
Argumentos¶
Nenhum
Opções¶
--package-entity-id TEXT
O ID da entidade do pacote no qual a operação é feita quando definition_version for 2 ou superior.
--app-entity-id TEXT
O ID da entidade do aplicativo no qual a operação é feita quando definition_version for 2 ou superior.
-p, --project TEXT
Caminho onde o projeto Snowflake está. O padrão é o diretório de trabalho atual.
--env TEXT
Cadeia de caracteres no formato chave=valor. Substitui variáveis da seção env usadas para modelos. Padrão: [].
--format [TABLE|JSON]
Especifica o formato de saída. Padrão: TABLE.
--verbose, -v
Exibe entradas de log para níveis de log
info
e superior. Padrão: falso.--debug
Exibe entradas de log para níveis de log
debug
e superiores; os logs de depuração contêm informações adicionais. Padrão: falso.--silent
Desliga a saída intermediária para o console. Padrão: falso.
--help
Exibe o texto de ajuda para este comando.
Notas de uso¶
O comando snow app bundle
cria um diretório local temporário com todos os artefatos de Snowflake Native App. Ele também pode gerar scripts SQL automaticamente a partir do seu código Snowpark Python. Este comando é chamado automaticamente pelos comandos snow app deploy, snow app run e snow app version create. No entanto, se você quiser ver o script de configuração, os artefatos e o SQL gerados, antes de enviá-los para um estágio, é possível executar este comando manualmente. Para obter mais informações sobre como gerar código SQL, consulte Preparando uma pasta local com artefatos Snowflake Native App configurados.
O comando usa o arquivo de definição do projeto para determinar o nome da pasta temporária a ser criada dentro do diretório do projeto.
Por padrão, ele será
<project_directory>/output/deploy
. Este diretório, também conhecido como raiz de implementação, reflete a estrutura que o estágio terá quando os arquivos forem carregados no estágio em comandos subsequentes.Se quiser que Snowflake CLI crie uma pasta com um nome personalizado em vez de
output/deploy
, é possível fazê-lo fornecendo o campodeploy_root
na entidade dopacote do aplicativo
no arquivo de definição do projeto.Nota
Você deve fornecer um caminho relativo para a raiz de implementação; caminhos absolutos são rejeitados. O caminho raiz de implementação é criado dentro do diretório do projeto.
A raiz de implementação é um diretório temporário porque ele é excluído e recriado toda vez que você executa
run snow app bundle
ou outro comando invoca a funcionalidadebundle
.
Como o pacote de aplicativos
snow app bundle
é chamado automaticamente como parte dos comandos snow app deploy, snow app run e snow app version create, é necessário fazer alterações somente nos arquivos de origem, fora da raiz de implementação. Se você modificar arquivos na raiz de implementação, os arquivos serão substituídos pelo estado mais recente dos seus arquivos de origem na próxima vez que você chamar um desses comandos.Se estiver usando um sistema de controle de versão como o
git
, é possível optar por não rastrear a raiz de implementação, visto que ela pode mudar com frequência.snow app bundle
não cria ou compila seus artefatos para você, como ao criar arquivos jar a partir de seus arquivos Java. Ele apenas copia os artefatos especificados no arquivo de definição do projeto e os adiciona à raiz de implementação para imitar a estrutura de diretório do estágio.snow app bundle
não precisa de acesso à sua conta Snowflake; ele afeta apenas seu sistema de arquivos local.O comando tem o seguinte comportamento de cópia e criação de links simbólicos para quaisquer artefatos
artefatos
da entidade dopacote do aplicativo
no arquivo de definição do projeto:Todos os nomes de diretório em um caminho de origem também são criados na raiz de implementação.
Todos os arquivos em um caminho de origem são vinculados simbolicamente dentro desses diretórios na raiz de implementação.
Alguns arquivos com links simbólicos na raiz de implementação podem se tornar links físicos se você invocar a geração de SQL a partir desses arquivos. Para obter mais informações, consulte Preparando uma pasta local com artefatos Snowflake Native App configurados.
Considere o seguinte exemplo de lista de
artefatos
de um arquivo de definição de projeto:entities: pkg: type: application package ... artifacts: - src: dir1/dir2/* dest: dest_dir1/dest_dir2/ - src: dir8/dir9/file.txt dest: dest_dir8/dest_file.txt ...
onde
dir1/dir2
na raiz do projeto poderia ter outros subdiretórios, comodir3
edir4
, e alguns arquivos, comofile3.txt
efile4.txt
.Após executar o comando
snow app bundle
, sua raiz de implementação deverá ficar assim:-- deploy_root -- dest_dir1 -- dest_dir2 -- dir3 -- ... <entire directory tree of dir3> -- dir4 -- ... <entire directory tree of dir4> -- file3.txt -- file4.txt -- dest_dir8 -- dest_file.txt
Processamento de anotação Snowpark¶
A partir da versão 2.5.0 de Snowflake CLI e da API Snowpark Python versão 1.15.0, é possível aproveitar o recurso de processamento de anotação do Snowpark com o comando snow app bundle
. Este recurso permite anotar seus arquivos de código Python com decoradores Snowpark Python, como @udf
, @sproc
, @udaf
e @udtf
para permitir que Snowflake CLI automatize as instruções CREATE FUNCTION ou CREATE PROCEDURE SQL correspondentes em arquivos de script de configuração no diretório do projeto. Para uma melhor compreensão desses decoradores, consulte a documentação dos decoradores Python correspondentes.
O processamento de anotação do Snowpark envolve o seguinte:
Ele lê todos os arquivos Python que você marcou com um campo
processor
no arquivo de definição do projeto.Ele cria um ambiente Python sandbox temporário separado usando as informações de ambiente fornecidas no subcampo
properties
do processador.Ele executa esses arquivos Python no ambiente sandbox.
Ele coleta todas as funções decoradas desses arquivos.
Com as informações coletadas, Snowflake CLI gera as instruções SQL necessárias e as adiciona ao script de configuração cujo local está especificado no arquivo
manifest.yaml
.
Você não precisa mais repetir código SQL boilerplate para escrever funções de extensão do Snowpark para seus aplicativos Snowflake Native App.
Para obter mais informações sobre como habilitar esse recurso nos arquivos de definição de projeto, consulte Como usar os decoradores do Snowpark Python.
Para obter mais informações sobre todos os processadores de artefatos compatíveis, consulte Mais informações sobre processadores de artefatos.
Exemplos¶
Este exemplo pressupõe que você fez as alterações necessárias em seus arquivos de código e as adicionou aos seus arquivos snowflake.yml
ou snowflake.local.yml
e também criou ou compilou quaisquer artefatos relevantes.
cd my_app_project
snow app bundle
O comando exibe informações sobre as várias etapas que ocorrem enquanto o comando é executado e cria um novo diretório no local especificado no arquivo de definição do projeto (padrão: my_app_project/output/deploy
).
Para ver um caso de uso simples em ação, você pode aproveitar os modelos prontos para uso usando os seguintes comandos:
snow init my_app_bundle_project --template app_basic
cd "my_app_bundle_project"
snow app bundle
ls my_app_bundle_project/output/deploy