Criação do arquivo de manifesto para um aplicativo¶
Este tópico descreve como criar o arquivo de manifesto para um aplicativo.
Sobre o arquivo de manifesto¶
O arquivo de manifesto contém informações que o pacote do aplicativo requer para criar e gerenciar um Snowflake Native App. Isso inclui o local do script de configuração, definições de versão e informações de configuração do aplicativo.
O arquivo de manifesto tem os seguintes requisitos:
O nome do arquivo de manifesto deve ser
manifest.yml.O arquivo de manifesto deve ser carregado em um estágio nomeado para que fique acessível ao pacote do aplicativo.
O arquivo de manifesto deve existir na raiz da estrutura de diretório no estágio nomeado onde outros arquivos do aplicativo são armazenados.
Versão 1 e versão 2 do arquivo de manifesto¶
Snowflake Native Apps oferecem suporte a duas versões do arquivo de manifesto. A versão é especificada usando o campo manifest_version.
manifest_version: 1Esta versão do arquivo de manifesto oferece suporte à funcionalidade atual e legada de Snowflake Native Apps.
manifest_version: 2Esta versão do arquivo de manifesto oferece suporte a outros recursos, incluindo a concessão automatizada de privilégios.
Considerações de segurança ao usar a versão 2 do arquivo de manifesto¶
Ao usar a versão 2 do arquivo de manifesto, considere as seguintes implicações de segurança:
Quando um provedor configura um aplicativo para usar manifest_version: 2 no arquivo de manifesto, a concessão automática de privilégios está habilitada. Por padrão, isso permite que o Snowflake conceda automaticamente certos privilégios ao aplicativo. Para informações sobre os privilégios que podem ser concedidos automaticamente ao aplicativo, consulte Privilégios concedidos pela concessão automatizada de privilégios.
Durante a instalação, Snowsight exibe uma notificação sobre os privilégios solicitados pelo aplicativo. Quando um consumidor instala um aplicativo que usa a concessão automática de privilégios, ele concorda que o aplicativo pode receber esses privilégios durante atualizações sem exigir consentimento adicional.
Os consumidores podem criar políticas de recursos que restringem os objetos que um aplicativo pode criar. Para mais informações sobre a criação de políticas de recursos, consulte Usar políticas de recursos para limitar os objetos que um aplicativo pode criar.
Especificação dos privilégios exigidos por um aplicativo com contêineres¶
Assim como em outros aplicativos, o campo privileges do arquivo de manifesto especifica os privilégios que um aplicativo com contêineres solicita dos consumidores.
Os seguintes privilégios são específicos para um aplicativo com contêineres:
CREATE COMPUTE POOL
Este privilégio é necessário para permitir que o aplicativo crie um pool de computação na conta do consumidor. Não é necessário se o consumidor criar o pool de computação manualmente.
BIND SERVICE ENDPOINT
Este privilégio é necessário para permitir que um ponto de extremidade seja acessível fora do Snowflake.
O exemplo a seguir mostra como adicionar esses privilégios ao bloco privileges:
privileges:
- CREATE COMPUTE POOL:
description: 'Required to allow the app to create a compute pool in the consumer account.'
- BIND SERVICE ENDPOINT:
description: 'Required to allow endpoints to be externally accessible.'
Especificação das imagens de contêiner usadas por um aplicativo com contêineres¶
Para especificar a localização das imagens de contêiner usadas pelo aplicativo com contêineres, adicione a propriedade images para o bloco artifacts.container_services.
Você deve incluir uma entrada para cada imagem. O caminho especificado inclui o nome do banco de dados, o esquema e o repositório de imagens. Este caminho tem o seguinte formato:
/<database>/<schema>/<image_repository>/<image_name>:tag
O exemplo a seguir mostra como especificar a propriedade images:
artifacts
...
container_services
...
images
- /dev_db/dev_schema/dev_repo/image1
- /dev_db/dev_schema/dev_repo/image2
Especificação do ponto de extremidade da interface do usuário para um aplicativo com contêineres¶
Para especificar o ponto de extremidade para a interface do usuário do aplicativo com contêineres, adicione a propriedade default_web_endpoint para o bloco artifacts.
A propriedade default_web_endpoint é opcional. Se esta propriedade for especificada, o ponto de extremidade também deverá ser definido no arquivo de especificação de serviço.
Nota
Apenas um dos default_web_endpoint e default_streamlit pode ser especificado.
Esta entrada no arquivo de manifesto tem duas propriedades adicionais:
serviceEspecifica o nome do serviço da interface do usuário.
endpointEspecifica o nome do ponto de extremidade.
O exemplo a seguir mostra como especificar a propriedade default_web_endpoint.
default_web_endpoint:
service: ux_schema.ux_service
endpoint: ui
Exemplos de arquivos de manifesto¶
Os exemplos a seguir mostram arquivos de manifesto típicos para diferentes casos de uso.
Exemplo de arquivo de manifesto para conceder privilégios automaticamente¶
O arquivo de manifesto a seguir mostra como configurar um aplicativo para usar a concessão automática de privilégios. Este exemplo usa a versão 2 do arquivo de manifesto. O bloco privileges especifica os privilégios exigidos pelo aplicativo.
manifest_version: 2
version:
name: v1
artifacts:
readme: readme.md
setup_script: setup.sql
privileges:
- CREATE TABLE:
description: "Allows the app to create tables in the consumer account"
- CREATE WAREHOUSE:
description: "Allows the app to create warehouses in the consumer account"
Quando o aplicativo é instalado, o Snowflake concede automaticamente os privilégios CREATE TABLE e CREATE WAREHOUSE para o aplicativo.
Exemplos de arquivo de manifesto para um aplicativo com contêineres¶
O Snowflake Native Apps oferece suporte a entradas no arquivo de manifesto que são específicas para um aplicativo com contêineres. No exemplo a seguir, é usado um arquivo de manifesto típico para um aplicativo com contêineres:
manifest_version: 2
version:
name: v1
artifacts:
readme: readme.md
setup_script: setup.sql
container_services:
images:
- /dev_db/dev_schema/dev_repo/image1
- /dev_db/dev_schema/dev_repo/image2
default_web_endpoint:
service: ux_schema.ux_service
endpoint: ui
privileges:
- CREATE COMPUTE POOL:
description: "..."
- BIND SERVICE ENDPOINT:
description: "...”