Referência do manifesto do Snowflake Native App

Este tópico descreve a estrutura e os campos de um arquivo de manifesto do Snowflake Native App.

Campo manifest_version

Especifica a versão do formato do arquivo de manifesto.

Este campo é obrigatório.

manifest_version: 1

Esta versão do arquivo de manifesto oferece suporte à funcionalidade atual e legada de Snowflake Native Apps.

Exemplo: manifest_version: 1

manifest_version: 2

Esta versão do arquivo de manifesto oferece suporte a outros recursos, incluindo a concessão automatizada de privilégios.

Cuidado

Antes de usar a versão 2 do arquivo de manifesto, considere as implicações de segurança descritas em Sobre o arquivo de manifesto.

Exemplo: manifest_version: 2

Exemplo de manifest_version

manifest_version: 2
Copy

Campo version

Define um bloco com campos relacionados à versão de um aplicativo. Para mais informações sobre versões e patches, consulte Atualização de um aplicativo.

Nota

Versões e patches definidos usando os comandos CREATE APPLICATION PACKAGE ou ALTER APPLICATION PACKAGE têm precedência sobre aqueles definidos no arquivo de manifesto.

Este campo é opcional.

name

Especifica o nome da versão.

Este campo é opcional.

Exemplo: name: v1

patch

Especifica o número de patch padrão.

Este campo é opcional.

Exemplo: patch: 1

label

Especifica um nome para a versão exibida aos consumidores.

Este campo é opcional.

Exemplo: label: "Initial Release"

comment

Especifica um comentário para a versão. Este comentário só fica visível na Snowsight quando o provedor executa o comando SHOW VERSIONS IN APPLICATION PACKAGE.

Este campo é opcional.

Exemplo: comment: "This is the initial release of the app."

Exemplo de version:

version:
  name: v1
  patch: 1
  label: "Initial Release"
  comment: "This is the initial release of the app."
Copy

Campo artifacts:

Define um bloco que especifica os recursos usados no aplicativo.

Este campo é obrigatório.

setup_script:

Especifica o caminho e o nome do arquivo do script de configuração que é executado quando o Snowflake Native App é instalado ou atualizado. Se você não especificar um valor, o aplicativo usará o valor padrão setup.sql no mesmo diretório do arquivo de manifesto.

Exemplo: setup_script: scripts/setup.sh

readme:

Especifica um caminho para um arquivo readme de Markdown que apresenta uma visão geral do aplicativo e de sua funcionalidade.

No caso de um aplicativo Streamlit, se nenhum valor for especificado para a propriedade default_streamlit, o conteúdo desse arquivo será exibido aos consumidores ao visualizar o Snowflake Native App instalado.

A localização desse arquivo é especificada em relação à localização do arquivo de manifesto.

Esse campo é opcional, mas a Snowflake recomenda que você inclua um arquivo readme com seu aplicativo.

Exemplo: readme: docs/README.md

default_streamlit_app:

Se Snowflake Native App incluir um aplicativo Streamlit, essa propriedade especificará o esquema e o nome do aplicativo Streamlit padrão disponível para os consumidores.

Esse campo é necessário se o aplicativo incluir um aplicativo Streamlit.

extension_code:

Ativa ou desativa o uso de linguagens de código de extensão, incluindo Java, Python e Scala.

Exemplo: extension_code: true

container_services:

Especifica o local das imagens de contêiner usadas por um aplicativo com contêineres. Consulte Especificação das imagens de contêiner usadas por um aplicativo com contêineres para obter mais informações.

Este campo é necessário para um aplicativo com contêineres.

uses_gpu:

Indica que o aplicativo com contêineres usa um GPU.

Este campo é necessário para um aplicativo com contêineres.

Exemplo: uses_gpu: true

images:

Especifica o caminho para cada uma das imagens de contêiner usadas por um aplicativo com contêineres.

Este campo é necessário para um aplicativo com contêineres.

Exemplo:

images:
- /spcs_app/napp/img_repo/eap_frontend
- /spcs_app/napp/img_repo/eap_backend
- /spcs_app/napp/img_repo/eap_router
Copy

Exemplo de artifacts

artifacts:
  setup_script: scripts/setup.sql
  readme: docs/README.md
  default_streamlit_app: apps/main.py
  extension_code: true
  container_services:
      uses_gpu: true
      images:
        - /spcs_app/napp/img_repo/eap_frontend
        - /spcs_app/napp/img_repo/eap_backend
Copy

Campo configuration

Especifica um bloco com as propriedades de configuração para um aplicativo.

Este campo é opcional.

log_level:

Especifica o nível de registro em log a ser usado para o aplicativo Snowflake Native App.

Se você não definir um valor para essa propriedade, os dados de log padrão não serão capturados.

Para informações sobre valores compatíveis, consulte Definição de níveis para registro, métricas e rastreamento.

trace_level:

Especifica o nível de evento de rastreamento a ser usado para o aplicativo. Quando um provedor ativa o rastreamento, o aplicativo automaticamente captura as horas de início e término de todas as consultas e chamadas de procedimento armazenadas.

Cuidado

Publicar um aplicativo com a propriedade trace_level definida com um valor diferente de OFF pode expor chamadas para procedimentos armazenados ocultos a qualquer usuário na conta do consumidor que possa visualizar a tabela de eventos.

Se você não definir um valor para essa propriedade, os eventos de rastreamento não serão capturados.

Para os valores compatíveis da propriedade trace_level, consulte Definição de níveis para registro, métricas e rastreamento.

metric_level:

Especifica o nível de métrica a ser usado para o aplicativo. Quando um provedor ativa as métricas, o aplicativo emite automaticamente pontos de dados de métricas de recursos autoinstrumentados para a tabela de eventos.

Consulte Definição dos níveis de log e rastreamento para um aplicativo para obter mais informações.

Para os valores compatíveis da propriedade metric_level, consulte Definição de níveis para registro, métricas e rastreamento.

grant_callback:

Especifica o esquema e o nome da função de retorno de chamada para um aplicativo com contêineres. A função de retorno de chamada é um procedimento armazenado que pode criar pools de computação, serviços e executar outras tarefas de configuração exigidas pelo aplicativo.

Este campo é necessário para um aplicativo com contêineres.

Para obter mais informações, consulte Criação de um serviço usando a propriedade grant_callback.

Exemplo: grant_callback: my_schema.my_grant_callback

Exemplo de configuration

configuration:
  log_level: INFO
  trace_level: OFF
  metric_level: BASIC
  grant_callback: my_schema.my_grant_callback
Copy

Campo privileges:

Define um bloco com os privilégios que o aplicativo solicita em uma conta de consumidor.

Este campo é obrigatório se o aplicativo solicitar privilégios na conta do consumidor.

<privilege_name>:

Especifica o nome de um privilégio que o aplicativo solicita em uma conta de consumidor.

Este campo é obrigatório se a propriedade privileges for especificada.

description:

Fornece uma descrição do privilégio que está sendo solicitado. O texto especificado em description é exibido ao consumidor quando o privilégio é exibido no Snowsight usando o Python Permission SDK, ou quando o comando SHOW PRIVILEGES é executado.

Como provedor, você deve incluir o máximo de informações possível sobre o motivo pelo qual o Snowflake Native App precisa desse privilégio e se o privilégio é obrigatório ou opcional.

Este campo é obrigatório se o campo privileges for especificado.

Exemplo de privileges:

privileges:
- CREATE TABLE:
  description: 'Required to create tables in the consumer account.'
- 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.'
Copy

Campo references:

Define um bloco com as referências que o aplicativo está solicitando em uma conta de consumidor. O consumidor deve vincular essas referências aos objetos em sua conta.

Este campo é necessário se o aplicativo solicitar referências na conta do consumidor.

- <reference_name>:

Especifica o nome de uma referência que o aplicativo está solicitando em uma conta de consumidor.

Este campo é obrigatório se a propriedade references for especificada.

label:

Especifica um rótulo para a referência exibida aos consumidores.

Este campo é obrigatório se a propriedade references for especificada.

Exemplo: label: "Orders table"

description:

Fornece uma descrição da referência solicitada. O texto especificado em description é exibido ao consumidor quando o privilégio é mostrado na Snowsight usando Python Permission SDK, ou quando o comando SHOW REFERENCES é executado.

Este campo é obrigatório se a propriedade references for especificada.

privileges:

Especifica uma lista de privilégios que o aplicativo exige no objeto ao qual a referência está vinculada na conta do consumidor.

Este campo é obrigatório se a propriedade references for especificada.

Exemplo:

privileges:
  - SELECT
  - INSERT
Copy

object_type

Especifica o tipo de objeto associado à referência, por exemplo, um esquema e uma tabela ou uma integração de API.

Este campo é obrigatório se o campo references for especificado.

Exemplo: object_type: TABLE

Para obter mais informações, consulte Tipos de objeto e privilégios que uma referência pode conter.

multi_valued:

Permite que mais de um objeto seja associado à referência. Use esta propriedade para vincular vários objetos de consumidor à mesma referência. Quando essa propriedade é especificada, as mesmas operações são executadas em objetos com uma única referência de valor. A propriedade também pode ser usada com objetos com referências de vários valores.

Este campo é opcional. O valor padrão é false.

Para obter mais informações, consulte Solicitação de referências e privilégios de nível de objeto de consumidores

Exemplo: multi_valued: true

register_callback

Especifica o esquema e o nome da função de retorno de chamada executada quando o consumidor vincula a referência a um objeto em sua conta.

Este campo é obrigatório se a propriedade references for especificada.

Exemplo: register_callback: my_schema.my_register_callback

configuration_callback

Especifica o nome da função de retorno de chamada que fornece a configuração desejada para o objeto ser vinculado a esta referência.

Esta propriedade é necessária se object_type for EXTERNAL ACCESS INTEGRATION ou SECRET. Esta propriedade não se aplica a outros tipos de objetos.

required_at_setup

Indica que as referências devem ser vinculadas quando o aplicativo é instalado.

Exemplo: required_at_setup: true

Exemplo de references

references:
- ORDERS_TABLE:
    label: "Orders table"
    description: "Orders table in TPC-H samples"
    privileges:
      - SELECT
    object_type: VIEW
    multi_valued: false
    register_callback: v1.register_single_callback

- EXTERNAL_ENDPOINT_EAI:
    label: "Allows egress to an external API"
    description: "EAI for Egress from NA+SPCS"
    privileges: [USAGE]
    object_type: EXTERNAL_ACCESS_INTEGRATION
    register_callback: v1.register_single_callback
    configuration_callback: v1.get_configuration
    required_at_setup: true
Copy

Campo restricted_callers_rights:

Especifica as propriedades de configuração relacionadas aos direitos restritos do autor da chamada.

Este campo é necessário se o aplicativo criar procedimentos armazenados ou serviços Snowpark Container Services que são executados com direitos restritos de autor da chamada.

Para obter mais informações, consulte Usar os direitos do proprietário e os direitos restritos do chamador em um aplicativo.

enabled:

Especifica se o aplicativo tem permissão para criar executáveis com direitos restritos de autor da chamada.

Os provedores devem definir essa propriedade como true se o aplicativo cria procedimentos armazenados ou serviços Snowpark Container Services executados com direitos restritos de autor da chamada.

description:

Descreve o motivo pelo qual o aplicativo precisa criar executáveis com direitos restritos de autor da chamada.

Exemplo de restricted_callers_rights:

restricted_callers_rights:
  enabled: true
  description: "Required to create stored procedures that run with restricted caller's rights."
Copy