Diretrizes e requisitos para listar apps no Snowflake Marketplace¶
Visão geral¶
Estas diretrizes definem os padrões obrigatórios para a publicação de aplicativos (tanto Snowflake Native Apps quanto apps conectados) no Snowflake Marketplace.
Aplicativos nativos¶
Publicar no Snowflake Marketplace¶
Quando o pacote do seu aplicativo estiver pronto para ser publicado no Snowflake Marketplace, você deve enviá-lo ao Snowflake para análise e aprovação.
Nota
O processo de aprovação necessário para publicar um aplicativo no Snowflake Marketplace é um acréscimo à verificação de segurança automatizada que é executada quando a propriedade DISTRIBUTION de um pacote de aplicativo é definida como EXTERNAL. Consulte Fluxo de aprovação de listagens do Snowflake Native App para obter mais detalhes.
Antes de criar uma listagem, verifique se você entende os requisitos obrigatórios e certifique-se de que o pacote do seu aplicativo atenda a cada requisito. Se um pacote de aplicativo não atender a esses requisitos, seu envio poderá ser rejeitado.
Se você receber uma notificação de rejeição para o pacote de aplicativo enviado, faça as alterações recomendadas e reenvie seu pacote de aplicativo para aprovação.
Padrões para Snowflake Native Apps no Snowflake Marketplace¶
O processo de revisão funcional do Snowflake Native App garante a qualidade dos apps publicados no Snowflake Marketplace. Para esclarecer o que é avaliado durante esse processo, os seguintes padrões se aplicam a todos os Snowflake Native Apps distribuídos pelo Snowflake Marketplace.
Utilidade imediata
A funcionalidade do aplicativo deve ser fornecida na conta do consumidor e o aplicativo deve estar operacional após a instalação.
Autonomia
Os aplicativos devem oferecer a experiência do produto no Snowflake e facilitar os requisitos externos por meio da funcionalidade do Snowflake.
Centrado em dados
Os aplicativos devem ser baseados em casos de uso centrados em dados que aproveitam os dados armazenados no Snowflake.
Transparente, simples e seguro
Os aplicativos devem usar os recursos do Snowflake para divulgar os requisitos de recursos e acesso do aplicativo e simplificar o processo de configuração para o consumidor.
Padrões aplicados¶
O Snowflake usa os seguintes requisitos para determinar se um Snowflake Native App atende aos padrões de publicação no Snowflake Marketplace. Esses requisitos são verificados quando você envia uma listagem com um pacote de aplicativo anexado para o Snowflake Marketplace.
Utilidade imediata
Os aplicativos não devem ser do tipo shell que anunciam funcionalidade. Os aplicativos devem oferecer a funcionalidade anunciada.
Os aplicativos devem incluir uma estrutura clara e instruções para a utilização da funcionalidade do aplicativo.
Os aplicativos não devem travar, congelar ou funcionar de forma anormal.
Os aplicativos devem listar todas as credenciais necessárias e os provedores devem compartilhar as credenciais necessárias com a Snowflake no momento do envio para teste.
Se os aplicativos não forem imediatamente utilizáveis, eles devem documentar o fluxo de trabalho esperado para que o consumidor possa instalar e configurar o aplicativo completamente.
Autonomia
Os aplicativos não devem ser pass-through. Por exemplo, eles não devem redirecionar os consumidores para um serviço externo para ativar a funcionalidade principal do aplicativo.
As interfaces de aplicativos devem estar acessíveis após a instalação diretamente do Snowflake.
Os apps não podem usar o Snowflake Marketplace como plataforma de distribuição para venda cruzada de aplicativos ou serviços externos.
Os apps que acessam serviços externos e utilizam autenticação de usuário devem estar em conformidade com os seguintes padrões:
Os apps podem solicitar que os consumidores criem um usuário de serviço na conta Snowflake somente para habilitar o acesso a um serviço externo.
Os métodos de autenticação aceitáveis são tokens de acesso programático (programmatic access tokens, PAT), OAuth ou par de chaves. O usuário do serviço deve receber apenas as permissões mínimas necessárias para o funcionamento do app.
Os apps que exigem autenticação de usuário nunca devem exigir que o consumidor faça o seguinte para se autenticar:
Inserir o nome de usuário e a senha do Snowflake do consumidor.
Criar uma chave privada/pública e compartilhar a chave privada.
Centrado em dados
Os aplicativos devem aproveitar os dados do Snowflake de uma das seguintes maneiras:
Compartilhe os dados da conta do provedor do aplicativo.
Use conjuntos de dados do Snowflake Marketplace.
Acesse os dados na conta do consumidor.
Transparente e simples
Todos os privilégios e referências de nível de conta que o aplicativo requer devem ser listados no arquivo de manifesto do pacote do aplicativo.
Todos os requisitos de recursos para o Snowflake Native App devem ser listados no arquivo marketplace.yml do app. O aplicativo deve criar esses recursos como parte da instalação e configuração.
Todos os privilégios e referências em nível de conta listados no arquivo de manifesto do pacote de aplicativo devem ser solicitados ao consumidor por meio do Snowsight ou do Python Permission SDK.
Os aplicativos devem fornecer um arquivo readme. Os aplicativos que não incluem uma interface de usuário personalizada ou Streamlit devem incluir as seguintes informações no arquivo readme:
Uma descrição do que o aplicativo faz.
As etapas que o consumidor deve realizar para configurar o aplicativo após sua instalação.
Os procedimentos armazenados e funções definidas pelo usuário que o aplicativo usa.
Os privilégios que o aplicativo exige.
Exemplo de comandos SQL que mostram aos consumidores como usar o aplicativo.
Todos os comandos SQL necessários devem ser fornecidos usando o Snowflake e formatados como blocos de código.
Se o aplicativo fornecer dados de amostra, você deverá incluir procedimentos sobre como usar os dados de amostra.
Se um pacote do aplicativo contiver um app Streamlit, mas não contiver um arquivo readme, você deverá configurar um app Streamlit padrão.
Práticas recomendadas ao publicar um Snowflake Native App¶
Além dos requisitos para enviar um pacote de aplicativos para o Snowflake Marketplace, o Snowflake também recomenda as seguintes práticas recomendadas ao publicar um Snowflake Native App:
Certifique-se de que todos os arquivos necessários sejam carregados no estágio nomeado para a versão do aplicativo que você está enviando, incluindo:
O arquivo de manifesto.
O script de configuração.
O arquivo README.
Quaisquer procedimentos armazenados externos ou funções definidas pelo usuário exigidas pelo pacote de aplicativos.
Quaisquer arquivos Streamlit exigidos pelo pacote de aplicativos.
Qualquer código-fonte externo, incluindo Python, Java etc.
Certifique-se de que a versão do aplicativo que você está desenvolvendo passe na verificação de segurança automatizada.
Teste a nova versão do seu pacote de aplicativos criando o objeto do aplicativo localmente usando o comando CREATE APPLICATION.
Não adicione uma nova versão ao pacote do aplicativo nem defina a propriedade DISTRIBUTION como EXTERNAL enquanto estiver desenvolvendo e testando um aplicativo. Essas ações acionam a verificação de segurança automatizada. Em vez disso, crie o objeto do aplicativo usando arquivos em um estágio nomeado.
Se seu aplicativo incluir um aplicativo Streamlit, teste-o em Snowsight para garantir que ele funcione conforme o esperado.
Verifique se as interações entre o aplicativo Streamlit e as planilhas Snowflake são perfeitas e se o consumidor não precisa navegar excessivamente entre os dois.
Revise todas as partes de uma listagem antes de enviá-la para aprovação.
Certifique-se de que não haja erros de digitação ou outros erros de texto na listagem, no arquivo readme e no app Streamlit.
Recomendações para listagens de testes¶
Quando uma listagem de teste de aplicativo expira, a Snowflake suspende o aplicativo automaticamente para evitar que os consumidores incorram em custos extras de consumidor. O Snowflake suspende apenas os objetos de propriedade do aplicativo que estão ativos no momento. O Snowflake não modifica o status de objetos que já estão suspensos.
Quando uma listagem de teste é convertida em uma listagem completa ou paga, o Snowflake tenta reativar o aplicativo retomando tarefas, contêineres e pools de computação. O Snowflake só retoma serviços e pools de computação que tenham a propriedade
auto_resumedefinida como false.
Recomendações para aplicativos com contêineres¶
Os pools de computação devem ser configurados para suspender automaticamente em combinação com trabalhos do Snowpark Container Services e evitar nós de computação ociosos.
Para maior disponibilidade durante atualizações e para reduzir a latência de inicialização a frio, a Snowflake recomenda que você defina o parâmetro
MIN_NODEScom um valor maior que 1.Se forem necessárias conexões entre diferentes serviços no mesmo aplicativo, use o nome DNS do serviço em vez de configurar uma integração de acesso externo.
Recomendações para compartilhamento de evento¶
Os provedores devem configurar um aplicativo para emitir mensagens de log e rastrear eventos que estejam em conformidade com as definições de evento compatíveis para garantir que os consumidores entendam quais informações são coletadas.
As definições de evento obrigatórias devem ser limitadas às mensagens de log e eventos de rastreamento exigidos pelo aplicativo. Definições de evento obrigatórias excessivas ou desnecessárias devem ser evitadas.
Adicionar novas definições de evento obrigatórias em uma atualização de versão deve exigir que o consumidor reative as definições de evento para o aplicativo.
Use o SDK de permissões do Python para permitir que os consumidores compartilhem eventos opcionais.
Apps conectados¶
O Snowflake permite que provedores SaaS listem os apps conectados no Snowflake Marketplace. Os apps conectados são aplicativos SaaS integrados que se conectam com segurança à conta de um cliente Snowflake para ler ou ingerir dados específicos como parte do fluxo de trabalho. Os apps conectados permitem que os consumidores interajam com os dados do Snowflake diretamente por uma UI externa.
Requisitos para publicar um app conectado no Snowflake Marketplace¶
Nível da rede de parceiros: os provedores devem ser membros da rede de parceiros Snowflake (snowflake partner network, SPN) e ter a designação de nível Select, Premier ou Elite.
Requisito do CSID: cada app conectado deve usar um identificador de cadeia de conexão (connection string identifier, CSID) para habilitar a telemetria completa e o rastreamento de uso. Os provedores são incentivados a consolidar em um único CSID por aplicativo; no entanto, vários CSIDs também são compatíveis quando necessário. Os CSID devem ser enviados inicialmente por SPN e serão posteriormente exigidos no envio da sua listagem e verificados durante o processo de revisão.
Transparência de segurança: os provedores devem preencher uma breve Declaração de segurança e tratamento de dados como parte do processo de listagem.
Tipo de listagem: todas as listagens de apps conectados devem utilizar uma listagem pública paga e concluir negócios usando ofertas padrão ou privadas.
Padrões contínuos para apps conectados no Snowflake Marketplace¶
Contribuição para o ecossistema: os apps conectados devem contribuir significativamente para o ecossistema Snowflake Data Cloud, ajudando a impulsionar a colaboração, o consumo ou a adoção de cargas de trabalho de dados.
Parceria ativa: os provedores devem ser colaboradores ativos do ecossistema Snowflake. Para permanecer listado no Marketplace, os provedores devem manter sua posição na Rede de Parceiros no nível Select ou superior, e o aplicativo deles deve continuar a beneficiar o ecossistema. A Snowflake poderá remover uma listagem se o provedor não estiver mais contribuindo para o ecossistema (a critério da Snowflake) ou não atender mais aos padrões de elegibilidade de parceiros.