Instalação e teste um aplicativo localmente

Este tópico descreve como os provedores podem criar e testar um Snowflake Native App localmente.

Sobre a criação e o teste de aplicativos

Com o Snowflake Native App Framework, os provedores podem criar um aplicativo na mesma conta que o pacote de aplicativos, para que possam testar o aplicativo antes de publicá-lo para os consumidores.

Os provedores também podem testar o aplicativo em uma única conta, sem precisar alternar entre contas de provedor e de consumidor.

Privilégios necessários para criar e testar um aplicativo

Para criar um aplicativo localmente a partir de um pacote de aplicativos, você deve ter os seguintes privilégios concedidos à sua função:

  • O privilégio de nível de conta CREATE APPLICATION concedido à sua função.

  • O privilégio de nível de objeto INSTALL concedido no pacote de aplicativo.

Os exemplos a seguir mostram como usar o comando GRANT <privilégios> … TO ROLE para conceder esses privilégios a uma conta:

GRANT CREATE APPLICATION ON ACCOUNT TO ROLE provider_role;
GRANT INSTALL ON APPLICATION PACKAGE hello_snowflake_package
  TO ROLE provider_role;
Copy

Use o privilégio DEVELOP

Por padrão, a função usada para criar um pacote de aplicativos tem permissões para usar o comando CREATE APPLICATION para criar um aplicativo com base no pacote de aplicativos.

No entanto, em alguns ambientes de desenvolvimento, pode ser necessário permitir que usuários com outras funções criem e testem um pacote de aplicativo. Para isso, conceda o privilégio DEVELOP de nível de objeto no pacote de aplicativo para uma função.

O privilégio DEVELOP concede os privilégios necessários para criar e testar um aplicativo com base em um pacote de aplicativos. Esse privilégio permite que um usuário execute as seguintes tarefas usando o pacote de aplicativos ao qual foi concedido acesso:

  • Criar um aplicativo com base em uma versão ou patch especificado no pacote de aplicativos.

  • Fazer upgrade para uma versão diferente de um aplicativo usando o comando ALTER APPLICATION.

  • Criar ou atualizar um aplicativo usando arquivos em um estágio nomeado.

  • Habilitar o modo de depuração em um aplicativo criado no modo de desenvolvimento.

Para conceder o privilégio DEVELOP a uma função, use o comando GRANT <privilégios> … TO ROLE, conforme mostrado no exemplo a seguir:

GRANT DEVELOP ON APPLICATION PACKAGE hello_snowflake_package TO ROLE other_dev_role;
Copy

Nota

O privilégio DEVELOP de nível de objeto é específico para um único pacote de aplicativo. Você deve executar GRANT <privilégios> … TO ROLE para cada pacote de aplicativos ao qual deseja atribuir o privilégio DEVELOP.

Fluxo de trabalho para criar e testar um aplicativo

O Snowflake Native App Framework oferece diferentes maneiras de criar um aplicativo a partir de um pacote de aplicativos. Isso permite testar um Snowflake Native App antes de publicá-lo aos consumidores. O método a ser usado depende das partes do aplicativo que você deseja testar.

As etapas a seguir descrevem um fluxo de trabalho típico para testar um aplicativo:

  1. Crie o aplicativo.

    Você pode criar um aplicativo localmente com base no seguinte:

    • Arquivos em um estágio

      Isso permite que você teste rapidamente uma nova versão de um script de configuração ou de arquivos de código de aplicativo. Consulte Criar um aplicativo usando arquivos preparados para obter mais informações.

    • Uma versão ou patch definido no pacote de aplicativos

      Depois de definir uma versão ou patch para um pacote de aplicativos, você pode testar essa versão criando um aplicativo com base nela. Para obter mais informações, consulte Criar um aplicativo a partir de uma versão ou patch.

  2. Atualizar um aplicativo.

    Depois de verificar se um aplicativo está funcionando corretamente, você pode atualizá-lo para uma nova versão de duas maneiras:

    • A partir de um arquivo em um estágio

    • A partir de uma versão ou patch definido no pacote de aplicativos

  3. Crie um aplicativo com base em uma diretiva de lançamento.

    Depois de testar um aplicativo usando arquivos específicos ou uma versão ou patch, você pode criar um aplicativo com base na diretiva de lançamento definida para o pacote de aplicativos. Usando a diretiva de lançamento, você não precisa especificar um estágio ou uma versão do aplicativo.

    Para obter mais informações, consulte Criar um aplicativo usando arquivos preparados.

  4. Instale um aplicativo de uma listagem.

    Depois de testar se o pacote de aplicativos e o aplicativo estão funcionando corretamente na sua conta local, você pode adicionar o pacote de aplicativos a uma listagem e testar a instalação usando a Snowsight.

    Para obter mais informações, consulte Criar um aplicativo usando arquivos preparados.

Criar um aplicativo

Você pode instalar um aplicativo diretamente na sua conta para testar sua funcionalidade e privilégios antes de compartilhá-lo com os clientes. O comando CREATE APPLICATION é compatível com diferentes sintaxes para a criação de um aplicativo.

Nota

As seções a seguir pressupõem que você tenha criado um pacote de aplicativos, o arquivo de manifesto necessário e um script de configuração.

Criar um aplicativo usando arquivos preparados

Você pode criar um aplicativo usando um arquivo de manifesto e um script de configuração carregado em um estágio nomeado. Isso permite que você teste as alterações nesses arquivos sem precisar adicionar uma nova versão a um pacote de aplicativos.

Use o comando CREATE APPLICATION para criar um aplicativo usando arquivos preparados, conforme mostrado no exemplo a seguir:

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package
  USING '@hello_snowflake_code.core.hello_snowflake_stage';
Copy

Criar um aplicativo a partir de uma versão ou patch

Depois de definir uma versão ou patch em um pacote de aplicativos, você pode criar um aplicativo com base nessa versão ou patch.

Para criar um aplicativo a partir de uma versão específica, use o comando CREATE APPLICATION, conforme mostrado no exemplo a seguir:

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0;
Copy

Para criar um aplicativo a partir de um patch específico, use o comando CREATE APPLICATION, conforme mostrado no exemplo a seguir:

CREATE APPLICATION hello_snowflake_app
  FROM APPLICATION PACKAGE hello_snowflake_package
  USING VERSION v1_0 PATCH 2;
Copy

Criar um aplicativo com base em uma diretiva de lançamento

Depois de especificar uma diretiva de lançamento (personalizada ou padrão) em um pacote de aplicativos, você pode criar um aplicativo com base nessa diretiva de lançamento.

Para criar um aplicativo com base em uma diretiva de lançamento, use o comando CREATE APPLICATION, conforme mostrado no exemplo a seguir:

CREATE APPLICATION hello_snowflake_app FROM APPLICATION PACKAGE hello_snowflake_package;
Copy

Fazer upgrade de um aplicativo usando um estágio

Para fazer upgrade de um aplicativo usando arquivos em um estágio nomeado, use o comando ALTER APPLICATION, conforme mostrado no exemplo a seguir:

ALTER APPLICATION HelloSnowflake
  UPGRADE USING @CODEDATABASE.CODESCHEMA.AppCodeStage;
Copy

Atualizar um aplicativo a partir de uma versão ou patch

Para atualizar um aplicativo que foi criado usando uma versão ou um patch específico, use o comando ALTER APPLICATION, conforme mostrado no exemplo a seguir:

ALTER APPLICATION HelloSnowflake
 UPGRADE USING VERSION "v1_1";
Copy

Definir um aplicativo como o contexto ativo

Para definir um aplicativo como o contexto ativo de uma sessão, execute o comando USE APPLICATION, conforme mostrado no exemplo a seguir:

USE APPlICATION hello_snowflake_app;
Copy

Nota

Para executar esse comando, você deve ter o privilégio USAGE concedido no aplicativo para a sua função.

Visualizar o aplicativo em sua conta

Para ver uma lista de aplicativos disponíveis em sua conta, use o comando SHOW APPLICATIONS, conforme mostrado no exemplo a seguir:

SHOW APPLICATIONS;
Copy

Exibir informações sobre um aplicativo

Para visualizar os detalhes de um aplicativo, execute o comando DESCRIBE APPLICATION, conforme mostrado no exemplo a seguir:

DESC APPLICATION hello_snowflake_app;
Copy

No modo de desenvolvimento, este comando exibe os esquemas permitidos pelas funções de aplicativo do consumidor.

No modo de depuração, esse comando exibe todos os esquemas em um pacote de aplicativos.

Usar os modos de desenvolvimento, depuração e depuração de sessão para testar um aplicativo

Com o Snowflake Native App Framework, os provedores podem usar os seguintes modos para criar um aplicativo e testar sua funcionalidade:

Modo de desenvolvimento

O provedor pode testar o aplicativo do ponto de vista do consumidor. Isso significa que o provedor só pode acessar objetos para os quais o consumidor tenha concedido privilégios.

Modo de depuração

O provedor pode acessar todos os objetos do aplicativo. No modo de depuração, a função principal da sessão é usada ao modificar o estado no aplicativo.

Modo de depuração de sessão

O provedor pode acessar objetos no aplicativo usando os privilégios concedidos ao aplicativo ou o script de configuração.

Sobre o modo de desenvolvimento

Quando você cria um aplicativo localmente a partir de um pacote de aplicativos, especificando uma versão ou arquivos de aplicativos em um estágio nomeado, considera-se que aplicativo está no modo de desenvolvimento.

Use o modo de desenvolvimento para testar e solucionar problemas de um aplicativo em uma única conta. No modo de desenvolvimento, você pode criar e testar um aplicativo com base em uma versão específica de um pacote de aplicativos. Você também pode criar e testar um aplicativo usando arquivos de aplicativos em um estágio. Isso permite que você teste rapidamente as alterações no script de configuração ou na lógica do aplicativo.

O modo de desenvolvimento oferece um modo de depuração adicional que você pode usar para visualizar e testar todos os objetos de um aplicativo que um consumidor não conseguiria visualizar.

No modo de desenvolvimento, por exemplo, a execução dos comandos SHOW ou DESC em objetos no aplicativo exibirá apenas os objetos para os quais o consumidor recebeu permissões de visualização. Entretanto, no modo DEBUG, você pode ver todos os objetos no aplicativo.

Sobre o modo de depuração

No modo de depuração, você pode visualizar e modificar todos os objetos de um aplicativo. Objetos que não são visíveis para um consumidor, por exemplo, objetos não concedidos a uma função de banco de dados ou objetos de conteúdo compartilhado, ficam visíveis nesse modo.

Nota

Quando você cria objetos, como uma tabela, no modo de depuração, o objeto não terá a mesma propriedade que o aplicativo. Se você precisar criar novos objetos ao testar um aplicativo, use o modo de depuração de sessão.

O teste de um aplicativo no modo de depuração requer o seguinte:

  • O aplicativo deve ser criado no modo de desenvolvimento, o que significa que ele deve ser baseado em uma versão ou em arquivos específicos em um estágio.

  • Você deve ativar explicitamente o modo de depuração no aplicativo.

Nota

O modo de depuração só pode ser ativado e desativado para um aplicativo criado no modo de desenvolvimento dentro da mesma conta que contém o pacote de aplicativos.

Para ativar o modo de depuração em um aplicativo, use o comando ALTER APPLICATION, conforme mostrado no exemplo a seguir:

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = TRUE;
Copy

Esse comando ativa o modo de depuração de um aplicativo chamado hello_snowflake_app. Da mesma forma, para desativar o modo de depuração, use o mesmo comando, conforme mostrado no exemplo a seguir:

ALTER APPLICATION hello_snowflake_app SET DEBUG_MODE = FALSE;
Copy

Esse comando desativa o modo de depuração do aplicativo chamado hello_snowflake_app.

Nota

Para executar esse comando, você deve ter o privilégio OWNERSHIP no aplicativo. Você também deve ter o privilégio DEVELOP no pacote de aplicativo.

Além disso, o aplicativo deve ser criado no modo de desenvolvimento e na mesma conta que o pacote de aplicativos.

Modo de depuração de sessão

O modo de depuração de sessão permite que os provedores visualizem e modifiquem todos os objetos dentro do aplicativo e executem instruções usando os mesmos privilégios que o aplicativo tem quando instalado na conta do consumidor. Os objetos que não são visíveis para um consumidor, por exemplo, objetos que não são concedidos a uma função de aplicativo, também são visíveis no modo de depuração de sessão.

Ao contrário do modo de depuração, o modo de depuração de sessão só se aplica à sessão atual para reduzir os riscos de segurança. Você deve ativar o modo de depuração de sessão para um aplicativo sempre que iniciar uma nova sessão. O modo de depuração de sessão também difere do modo de depuração, pois permite que você teste um aplicativo usando os mesmos privilégios do aplicativo ou do script de configuração. Para usar esses privilégios, você pode especificar um dos seguintes itens ao ativar o modo de depuração de sessão. Para obter mais informações, consulte Ativar o modo de depuração de sessão para um aplicativo.

  • AS_APPLICATION: todas as instruções são executadas usando os mesmos privilégios que o aplicativo tem quando é criado na conta do consumidor.

  • AS_SETUP_SCRIPT: todas as instruções são executadas usando os mesmos privilégios que o script de configuração tem quando é executado na conta do consumidor quando um aplicativo é criado ou atualizado.

Quando um provedor cria objetos, como uma tabela, usando o modo de depuração de sessão, o objeto é criado com os mesmos privilégios do aplicativo.

Privilégios necessários para usar o modo de depuração de sessão

O uso do modo de depuração de sessão para visualizar objetos em um aplicativo tem os seguintes requisitos:

  • O aplicativo deve ser criado no modo de desenvolvimento, que exige que o aplicativo seja criado com base em uma versão específica ou com base em arquivos localizados em um estágio.

  • O aplicativo deve estar na mesma conta que o pacote de aplicativos no qual o aplicativo se baseia.

  • Você deve ter o privilégio OWNERSHIP no aplicativo.

  • Você deve ter o privilégio DEVELOP no pacote de aplicativos.

Nota

O modo de depuração de sessão só pode ser usado na sessão em que o modo de depuração está definido. Por exemplo, se você entrar no modo de depuração em uma planilha e, em seguida, abrir o aplicativo em uma segunda planilha, o aplicativo na segunda planilha não estará no modo de depuração de sessão.

Ativar o modo de depuração de sessão para um aplicativo

Para ativar o modo de depuração de sessão em um aplicativo na sessão atual, use a função de sistema SYSTEM$BEGIN_DEBUG_APPLICATION, conforme mostrado no exemplo a seguir:

SELECT SYSTEM$BEGIN_DEBUG_APPLICATION(‘hello_snowflake_app’);
Copy

Essa função ativa o modo de depuração de sessão para o aplicativo chamado hello_snowflake_app.

Você também pode ativar a depuração de sessão especificando o modo de execução do aplicativo, conforme mostrado no exemplo a seguir:

SYSTEM$BEGIN_DEBUG_APPLICATION( 'hello_snowflake_app', execution_mode ='AS_APPLICATION')
Copy

Essa função define o modo de execução do aplicativo hello_snowflake_app como AS_APPLICATION. Esse modo executa todas as instruções usando os mesmos privilégios que o aplicativo tem quando criado na conta do consumidor.

Exibir o status de depuração de sessão para um aplicativo na sessão atual

Para visualizar o status de depuração de sessão na sessão atual, use a função de sistema SYSTEM$GET_DEBUG_STATUS, conforme mostrado no exemplo a seguir:

SELECT SYSTEM$GET_DEBUG_STATUS();
Copy

Desativar o modo de depuração de sessão para um aplicativo

Para desativar o modo de depuração de sessão para um aplicativo na sessão atual, use a função de sistema SYSTEM$END_DEBUG_APPLICATION, conforme mostrado no exemplo a seguir:

SELECT SYSTEM$END_DEBUG_APPLICATION();
Copy

Desativar a remoção de dados do provedor ao testar um aplicativo

Dentro de um aplicativo, as informações são editadas a partir do perfil de consulta e do histórico de consultas para ocultar do consumidor os detalhes de implementação sobre o aplicativo. Consulte Proteção da propriedade intelectual do provedor.

Ao testar um aplicativo localmente, você pode desativar a remoção dos dados do provedor a partir do perfil de consulta e do histórico de consultas.

Nota

Quando o modo de depuração de sessão é usado, todos os objetos e dados de um aplicativo ficam visíveis para o provedor, mesmo que as informações sejam editadas para o consumidor. Por exemplo, as informações retornadas pelos comandos SHOW APPLICATIONS e DESCRIBE APPLICATION não são editadas quando o modo de depuração de sessão é usado.

Privilégios necessários para desativar a remoção de dados do provedor ao testar um aplicativo

A desativação da remoção de dados do provedor para um aplicativo requer os seguintes privilégios:

  • O aplicativo deve ser criado no modo de desenvolvimento, o que significa que ele deve ser baseado em uma versão ou em arquivos específicos em um estágio.

  • O aplicativo deve ser criado na mesma conta que contém o pacote de aplicativos.

  • Você deve ter o privilégio OWNERSHIP no aplicativo.

  • Você deve ter o privilégio DEVELOP no pacote de aplicativos.

Desativar a remoção de informações dos dados do provedor

Para desativar as informações de um aplicativo, use o comando ALTER APPLICATION, conforme mostrado no exemplo a seguir:

ALTER APPLICATION hello_snowflake_app SET DISABLE_APPLICATION_REDACTION = TRUE;
Copy

Esse comando desativa a remoção de dados do provedor para um aplicativo chamado hello_snowflake_app.

Para ativar a remoção dos dados do provedor, use o mesmo comando mostrado no exemplo a seguir:

ALTER APPLICATION hello_snowflake_app SET DISABLE_APPLICATION_REDACTION = FALSE;
Copy

Teste do compartilhamento de eventos no modo de desenvolvimento

Os provedores usam o modo de desenvolvimento para instalar e testar um aplicativo que usa o registro e o rastreamento de eventos. Os provedores podem configurar uma tabela de eventos localmente em sua conta de desenvolvimento, instalar o aplicativo no modo de desenvolvimento e visualizar os eventos e registros que o aplicativo emite e aqueles que são compartilhados com o provedor.

Nota

Para testar o compartilhamento de eventos no modo de desenvolvimento, o aplicativo deve definir definições de eventos no arquivo de manifesto.

Diferenças no modo de desenvolvimento

No modo de desenvolvimento, os aplicativos são criados com base em uma das seguintes opções:

  • Arquivos carregados em um estágio.

  • Versões ou patches definidos no pacote do aplicativo.

Ao testar o compartilhamento de eventos localmente no modo de desenvolvimento, há diferenças no comportamento dos aplicativos criados a partir de uma listagem.

  • O privilégio global MANAGE EVENT SHARING não é necessário para ativar o compartilhamento de eventos.

  • Os eventos compartilhados são coletados em tabelas de eventos locais. Na tabela de eventos locais, os provedores podem ver duas entradas para um evento:

    • O evento que o aplicativo emite no lado do consumidor quando o aplicativo é instalado.

    • O evento que é compartilhado com o provedor.

Teste do compartilhamento de eventos no modo de desenvolvimento

  1. Configure o aplicativo para usar o registro e o rastreamento de eventos.

  2. Configure uma tabela de eventos na conta de desenvolvimento local.

  3. Crie o aplicativo localmente executando um dos seguintes comandos:

    CREATE APPLICATION hello_snowflake_app
      FROM APPLICATION PACKAGE hello_snowflake_package
      USING @path_to_staged_files
      AUTHORIZE_TELEMETRY_EVENT_SHARING = TRUE;
    
    CREATE APPLICATION hello_snowflake_app
      FROM APPLICATION PACKAGE hello_snowflake_package
      USING VERSION v1_0
      PATCH 0
      AUTHORIZE_TELEMETRY_EVENT_SHARING = TRUE;
    
    Copy
  4. Visualize as mensagens de log e rastreie os eventos na tabela de evento.