Orçamentos de recursos para o Snowflake Intelligence

Um orçamento de recursos permite monitorar os gastos com o Snowflake Intelligence em sua conta e tomar medidas quando eles excederem os limites de gastos. Isso permite controlar os custos do Snowflake Intelligence e executar ações automatizadas, como revogar o acesso quando os gastos excederem os limites configurados. Os orçamentos de recursos permitem controlar os créditos consumidos em um nível agregado por todo o serviço do Snowflake Intelligence.

Como funcionam os orçamentos de recursos

Os orçamentos de recursos usam o modelo de atribuição de custos com base em tags do Snowflake. Você cria uma tag, a aplica a um objeto do Snowflake Intelligence e, em seguida, associa essa tag a um orçamento. O Snowflake rastreia o consumo de crédito do objeto marcado e avalia os gastos em relação ao limite de orçamento periodicamente. O orçamento de recursos é útil para limitar os gastos com o Snowflake Intelligence agregados em toda a conta.

O Snowflake aplica os orçamentos de recursos com o seguinte fluxo:

  1. Você cria uma tag.

  2. Você aplica a tag ao objeto do Snowflake Intelligence.

  3. Você cria um orçamento e especifica a tag para rastrear os gastos. Como parte da criação do orçamento, você também define um limite de gastos mensal em créditos.

  4. Você adiciona um procedimento armazenado a ser executado quando os gastos atingem um limite configurado do orçamento. Por exemplo, você pode invocar um procedimento armazenado para enviar um alerta ao atingir 80% e outro procedimento armazenado para revogar o acesso ao atingir 100%.

  5. O Snowflake rastreia o consumo de crédito do objeto marcado.

  6. Quando os gastos atingem um limite configurado do orçamento, como 80% ou 100%, o Snowflake executa o procedimento armazenado definido para esse limite.

O Snowflake calcula o uso, avalia os limites e aciona periodicamente as ações configuradas. Após o orçamento ser excedido, pode levar até oito horas para que ele seja aplicado.

Crie uma tag

  1. Crie uma tag para identificar o centro de custo associado ao objeto do Snowflake Intelligence:

    -- Create a tag with allowed cost center values
    CREATE TAG cost_mgmt_db.tags.cost_center
       ALLOWED_VALUES 'org-level'
       COMMENT = 'cost_center tag';
    
  2. Aplique a tag ao objeto do Snowflake Intelligence para associá-lo a um centro de custo:

    -- Apply the cost center tag to the Snowflake Intelligence object
    ALTER SNOWFLAKE INTELLIGENCE IF EXISTS si_instance_1
       SET TAG cost_mgmt_db.tags.cost_center = 'org-level';
    

Configurar um orçamento de recursos

Você pode usar o Snowsight ou SQL para criar um orçamento e associá-lo a um objeto do Snowflake Intelligence.

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Admin » Cost management.

  3. Selecione Budgets.

  4. Selecione + Budget.

  5. Em Location to store, selecione o nome do banco de dados e do esquema em que você deseja criar o orçamento.

  6. Para Name, use my_budget:

  7. Em Budget (credits per month), insira 10000 como o limite de gastos do orçamento.

  8. Para diminuir o intervalo de atualização do orçamento para que você possa monitorar os gastos em mais detalhes, selecione Enable low latency budget.

  9. Em Threshold, insira 80 como limite de notificação.

  10. Em Notify, insira os endereços de e-mail para receber as mensagens de notificação.

  11. Selecione Next.

  12. Em Budget scope, adicione a tag no objeto do Snowflake Intelligence ao orçamento de recursos.

  13. Selecione Create.

Agora o Snowflake rastreia o consumo de crédito de si_instance_1 em relação ao orçamento my_budget com um limite mensal de 10.000 créditos.

Configurar ações de limite

Você pode anexar procedimentos armazenados que são executados quando os gastos atingem limites específicos, que são expressos como uma porcentagem do limite de gastos e aplicados ao período de orçamento mensal. Para obter mais informações, consulte Ações personalizadas para orçamentos.

Enviar notificações

Você pode enviar notificações quando os gastos atingirem um limite. Para obter mais informações, consulte Notificações sobre orçamentos.

  1. Defina o e-mail para o qual enviar as notificações:

    CALL my_budget!SET_EMAIL_NOTIFICATIONS(
      'budgets_notification_integration',
       'costadmin@example.com, budgetadmin@example.com'
    );
    
  2. Defina o limite de notificação:

    CALL my_budget!SET_NOTIFICATION_THRESHOLD(80);
    

Revogar acesso

  1. Criar um procedimento armazenado que revogue o acesso ao Snowflake Intelligence No procedimento armazenado, você pode limitar o acesso a uma função específica para revogar USAGE para essa função.

    -- Create a stored procedure that revokes access to the SI object
    CREATE OR REPLACE PROCEDURE budgets_db.budgets_schema.sp_revoke_si_access(
       si_name STRING, role_name STRING
    )
    RETURNS STRING
    LANGUAGE SQL
    AS
    BEGIN
       EXECUTE IMMEDIATE 'REVOKE ROLE si_' || si_name || '_role FROM ROLE ' || role_name;
       RETURN 'Access revoked for ' || si_name;
    END;
    

    Importante

    Certifique-se de que role_name e o usuário não tenham acesso ao Snowflake Intelligence por meio de outras funções. Para obter orientação sobre como configurar corretamente as funções e os privilégios, consulte Privilégios de usuário e controle de acesso.

  2. Defina uma ação personalizada que bloqueie o acesso quando 100% do orçamento for gasto:

    -- Provide access to the stored procedures
    GRANT USAGE ON DATABASE budgets_db TO APPLICATION SNOWFLAKE;
    GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO APPLICATION SNOWFLAKE;
    GRANT USAGE ON PROCEDURE budgets_db.budgets_schema.sp_revoke_si_access(STRING, STRING)
       TO APPLICATION SNOWFLAKE;
    
    -- Block access at 100% of the budget
    CALL budgets_db.budgets_schema.my_budget!ADD_CUSTOM_ACTION(
       SYSTEM$REFERENCE('PROCEDURE',
          'budgets_db.budgets_schema.sp_revoke_si_access(string, string)'),
       ARRAY_CONSTRUCT('SI_NAME', 'ROLE_NAME'),
       'ACTUAL',
       100);
    

Nota

Você também pode usar ações personalizadas para notificações ou para tomar medidas quando a previsão de gastos exceder o limite do orçamento. Para obter mais informações, consulte Ações personalizadas para orçamentos.

Lidando com exceções aos limites de gastos

Em alguns casos, você precisa restabelecer o acesso após o limite do orçamento ser atingido, como durante o período de balanço financeiro ou outras temporadas de pico. Você pode configurar limites acima de 100%, até 500%, para abordar esses cenários de exceção.

O fluxo de trabalho pressupõe que o acesso seja revogado usando o procedimento armazenado configurado quando os gastos atingirem um limite de orçamento. No exemplo a seguir, o acesso foi revogado depois que os gastos atingiram o limite de 100%. O administrador restabelece um subconjunto dos usuários e concede o acesso de volta. Quando os gastos atingem 200%, o procedimento de revogação é executado novamente como uma parada obrigatória.

  1. Crie um procedimento armazenado para restabelecer o acesso à função:

    -- Create a stored procedure that reinstates access to the SI object
    CREATE OR REPLACE PROCEDURE budgets_db.budgets_schema.sp_reinstate_si_access(
       si_name STRING, role_name STRING
    )
    RETURNS STRING
    LANGUAGE SQL
    AS
    BEGIN
       EXECUTE IMMEDIATE 'GRANT ROLE si_' || si_name || '_role TO ROLE ' || role_name;
       RETURN 'Access reinstated for ' || si_name;
    END;
    
  2. Configure um limite acima de 100% com um procedimento armazenado que restabeleça o acesso. Isso permite aumentar o orçamento efetivo nos períodos de exceção. O acesso é revogado novamente quando os gastos atingem 200% do orçamento:

    -- Add grants for this procedure
    GRANT USAGE ON DATABASE budgets_db TO APPLICATION SNOWFLAKE;
    GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO APPLICATION SNOWFLAKE;
    GRANT USAGE ON PROCEDURE budgets_db.budgets_schema.sp_revoke_si_access(STRING, STRING)
       TO APPLICATION SNOWFLAKE;
    
    -- Issue a reinstatement for a subset of users
    CALL budgets_db.budgets_schema.sp_reinstate_si_access('si_instance_1', 'power_user_role');
    
    -- Set another threshold at 200% as a hard stop
    CALL budgets_db.budgets_schema.my_budget!ADD_CUSTOM_ACTION(
       SYSTEM$REFERENCE(
          'PROCEDURE',
          'budgets_db.budgets_schema.sp_revoke_si_access(string, string)'
       ),
       ARRAY_CONSTRUCT('si_instance_1', 'power_user_role'),
       'ACTUAL',
       200
    );
    

Restabelecer o acesso

Para garantir que os usuários possam acessar o Snowflake Intelligence novamente no início do próximo período orçamentário, defina o seguinte procedimento armazenado para ser chamado quando o ciclo orçamentário for reiniciado.

  1. Crie um procedimento armazenado para restabelecer o acesso à função:

    -- Create a stored procedure that reinstates access to the SI object
    CREATE OR REPLACE PROCEDURE budgets_db.budgets_schema.sp_reinstate_si_access(
       si_name STRING, role_name STRING
    )
    RETURNS STRING
    LANGUAGE SQL
    AS
    BEGIN
       EXECUTE IMMEDIATE 'GRANT ROLE si_' || si_name || '_role TO ROLE ' || role_name;
       RETURN 'Access reinstated for ' || si_name;
    END;
    
  2. Defina a ação de início do ciclo para o orçamento:

    GRANT USAGE ON DATABASE budgets_db TO APPLICATION SNOWFLAKE;
    GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO APPLICATION SNOWFLAKE;
    GRANT USAGE ON PROCEDURE budgets_db.budgets_schema.sp_reinstate_si_access(STRING, STRING)
       TO APPLICATION SNOWFLAKE;
    
    CALL budgets_db.budgets_schema.my_budget!SET_CYCLE_START_ACTION(
       SYSTEM$REFERENCE('PROCEDURE', 'budgets_db.budgets_schema.sp_reinstate_si_access(string, string)'),
       ARRAY_CONSTRUCT('si_instance_1', 'power_user_role')
    );
    

Configurando alertas com base em gastos projetados

Para receber um alerta ou executar uma ação com base nos gastos previstos em vez dos gastos reais, você pode definir o tipo de acionador como PROJECTED. Por exemplo, para chamar um procedimento armazenado chamado alert_team quando o consumo projetado atingir 75% do limite de orçamento, execute o seguinte comando:

CALL budget_db.sch1.my_budget!ADD_CUSTOM_ACTION(
   SYSTEM$REFERENCE('PROCEDURE', 'code_db.sch1.alert_team(string, string, string)'),
   ARRAY_CONSTRUCT('admin@example.com', 'Budget Alert', 'Spending at 75% of budget limit'),
   'PROJECTED',
   75);

Listar ações personalizadas

  • Para listar todas as ações personalizadas configuradas em um orçamento, use o método GET_CUSTOM_ACTIONS:

    -- View all custom actions on the budget
    CALL budgets_db.budgets_schema.my_budget!GET_CUSTOM_ACTIONS();
    

Para obter mais informações, consulte Ações personalizadas para orçamentos.

Monitorar o uso

  • Para visualizar o consumo de créditos por objeto do Snowflake Intelligence, use o método de relatório de uso do orçamento:

    -- View usage for the current month
    CALL budgets_db.budgets_schema.my_budget!GET_SERVICE_TYPE_USAGE_V2(
       '2026-02',
       '2026-03'
    );
    

    A saída inclui as seguintes colunas:

    Coluna

    Descrição

    Tipo de serviço

    A categoria do serviço (AI)

    Tipo de entidade

    O tipo de objeto (SI)

    ID da entidade

    O identificador exclusivo do objeto do Snowflake Intelligence

    Nome

    O nome de exibição do objeto do Snowflake Intelligence

    Créditos utilizados

    O total de créditos consumidos durante o período especificado

    Nuvem de créditos

    Número de créditos de serviço de nuvem usados

Latência da aplicação do orçamento

Os cálculos de orçamento e a aplicação de limites são realizados periodicamente:

  1. O Snowflake calcula o consumo de créditos para o objeto do Snowflake Intelligence marcado.

  2. O sistema avalia os gastos em relação a todos os limites configurados.

  3. Se um limite for atingido, o procedimento armazenado associado será executado.

  4. Os painéis de uso são atualizados com os números mais recentes.

Se o orçamento de baixa latência estiver ativado, os orçamentos serão aplicados em até duas horas depois que o orçamento é excedido. Caso contrário, a aplicação poderá levar até oito horas depois que o orçamento for excedido. Para reduzir o intervalo de atualização, você pode acionar a execução do orçamento com mais frequência, como a cada 60 minutos.

Aviso

Há um atraso inerente entre o momento em que os créditos são consumidos e o momento em que o sistema de orçamento detecta a violação de limite. Durante o intervalo de aplicação, os gastos podem exceder o limite configurado antes que a ação seja executada. Planeje seus limites de acordo com isso. Por exemplo, defina um alerta quando atingir 80% para que você tenha tempo de responder antes que a ação de 100% seja executada.

Limitações

As seguintes limitações se aplicam aos orçamentos de recursos para o Snowflake Intelligence:

  • Somente recursos de equipe única: os orçamentos de recursos se aplicam ao objeto inteiro do Snowflake Intelligence.

  • Latência de aplicação: a aplicação do orçamento é executada em um ciclo periódico e pode levar até oito horas para aplicar o orçamento depois que o orçamento é excedido. Os gastos podem exceder um limite durante o intervalo antes que a ação seja acionada.

  • Revogação de acesso baseada em função: para revogar o acesso em um limite, você deve criar uma função dedicada para o objeto do Snowflake Intelligence. Ações de bloqueio direto no objeto ainda não são compatíveis.

  • Período mensal: os orçamentos operam em um ciclo mensal. Não é possível configurar períodos de orçamento de recursos.

  • Latência de tag: quando você altera uma tag em um objeto, pode levar até oito horas para que a alteração seja refletida nos orçamentos que usam a tag. Para obter mais informações, consulte Orçamentos personalizados.