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
Copy

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 campo deploy_root na entidade do pacote 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 funcionalidade bundle.

  • 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 do pacote 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
      ...
    
    Copy

    onde dir1/dir2 na raiz do projeto poderia ter outros subdiretórios, como dir3 e dir4, e alguns arquivos, como file3.txt e file4.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
    
    Copy

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
Copy

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
Copy