|sf-intelligence|のリソース予算

リソース予算を使用すると、アカウントの|sf-intelligence|の支出を監視し、支出のしきい値を超えた場合にアクションを実行できます。これにより、|sf-intelligence|のコストを制御し、支出が設定した制限を超えた場合にアクセスを取り消すなどの自動化されたアクションを実行できます。リソース予算を使用すると、|sf-intelligence|サービス全体によって集計されたレベルで消費されるクレジットを制御できます。

リソース予算の仕組み

リソース予算はSnowflakeのタグベースのコスト帰属モデルを使用します。タグを作成して|sf-intelligence|オブジェクトに適用し、そのタグを予算に関連付けます。Snowflakeは、タグ付けされたオブジェクトのクレジット消費を追跡し、定期的に予算上限に対する支出を評価します。リソース予算は、アカウント全体で集計された|sf-intelligence|の支出を制限するのに役立ちます。

Snowflakeは、次のフローでリソース予算を実行します。

  1. タグを作成します。

  2. タグを|sf-intelligence|オブジェクトに適用します。

  3. 予算を作成し、支出を追跡するタグを指定する。予算を作成する一環として、クレジットで毎月の支出制限も設定する。

  4. 支出が設定された予算のしきい値に達したときに実行される、ストアドプロシージャを追加する。たとえば、80%でアラートを発生させるストアドプロシージャと、100%でアクセスを取り消す別のストアドプロシージャを呼び出すことができる。

  5. Snowflakeは、タグ付きオブジェクトのクレジット消費を追跡する。

  6. 支出が予算の80%や100%など、設定されたしきい値に達すると、Snowflakeはそのしきい値に対して定義されたストアドプロシージャを実行する。

Snowflakeは使用量を計算し、しきい値を評価し、設定されたアクションを定期的にトリガーします。予算の超過後、予算が強制適用されるまでに最大8時間かかる場合があります。

タグを作成します。

  1. |sf-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. タグを|sf-intelligence|オブジェクトに適用して、コストセンターに関連付けます。

    -- 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';
    

リソース予算の設定

|sf-web-interface|またはSQLのいずれかを使用して予算を作成し、|sf-intelligence|オブジェクトに関連付けることができます。

  1. Snowsight にサインインします。

  2. ナビゲーションメニューで Admin » Cost management を選択します。

  3. Budgets を選択します。

  4. + Budget を選択します。

  5. :ui:`Location to store`には、予算を作成するデータベースとスキーマの名前を選択します。

  6. Name には、 my_budget を使用します。

  7. :ui:`Budget (credits per month)`には、予算の支出制限として10000と入力します。

  8. 予算更新間隔 を減らして支出をより密接に観察できるようにするには、 Enable low latency budget を選択します。

  9. :ui:`Threshold`には、通知しきい値として80と入力します。

  10. :ui:`Notify`には、通知メールを受け取るメールアドレスを入力します。

  11. Next を選択します。

  12. :ui:`Budget scope`には、|sf-intelligence|オブジェクトのタグをリソース予算に追加します。

  13. Create を選択します。

これで、Snowflakeは10,000クレジットの月額制限がある``my_budget``予算に対する``si_instance_1``のクレジット消費を追跡します。

しきい値アクションの構成

支出が特定のしきい値に達したときに実行されるストアドプロシージャをアタッチできます。これは、支出制限の割合として表され、毎月の予算期間に適用されます。詳細については、 予算のカスタムアクション をご参照ください。

通知を送信

支出がしきい値に達すると、通知を送信できます。詳細については、 予算に関する通知 をご参照ください。

  1. 通知を送信するメールアドレスを設定します。

    CALL my_budget!SET_EMAIL_NOTIFICATIONS(
      'budgets_notification_integration',
       'costadmin@example.com, budgetadmin@example.com'
    );
    
  2. 通知のしきい値を設定します。

    CALL my_budget!SET_NOTIFICATION_THRESHOLD(80);
    

アクセス権を取り消す

  1. |sf-intelligence|へのアクセスを取り消すストアドプロシージャを作成します。ストアドプロシージャでは、特定のロールへのアクセスを制限して、そのロールのUSAGEを取り消すことができます。

    -- 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;
    

    重要

    :code:`role_name`およびユーザーが他のロールを通じて|sf-intelligence|にアクセスできないようにします。ロールと権限を正しく構成する方法について詳しくは、:ref:`label-snowflake-intelligence-user-privileges`を参照してください。

  2. 予算の100%が使用されたときにアクセスをブロックするカスタムアクションを設定します。

    -- 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);
    

注釈

また、カスタムアクションを使用して、通知したり、支出が予算の制限を超えると予測された場合にアクションを実行したりすることもできます。詳細については、 予算のカスタムアクション をご参照ください。

支出制限の例外処理

場合によっては、決算期やその他のピーク時など、予算の制限に達した後にアクセスを回復する必要があります。これらの例外シナリオを処理するために、100%を超えて最大500%までのしきい値を設定できます。

ワークフローでは、支出が予算のしきい値に達すると、構成されたストアドプロシージャを使用してアクセスが取り消されることを前提としています。次の例では、支出が100%のしきい値に達した後、アクセスが取り消されています。管理者は一部のユーザーを復元し、アクセス権を再度付与します。支出が200%に達すると、失効プロシージャが強制停止として再実行されます。

  1. ロールへのアクセスを復元するストアドプロシージャを作成します。

    -- 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. アクセスを復元するストアドプロシージャで、100%を超えるしきい値を構成します。これにより、例外期間の有効な予算を引き上げることができます。支出が予算の200%に達すると、アクセスは再び取り消されます。

    -- 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
    );
    

アクセスの復元

次の予算期間の開始時にユーザーが再び|sf-intelligence|にアクセスできるようにするには、予算サイクルが再開したときに呼び出されるように次のストアドプロシージャを設定します。

  1. ロールへのアクセスを復元するストアドプロシージャを作成します。

    -- 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. 予算のサイクル開始アクションを設定します。

    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')
    );
    

支出予測に基づくアラートの設定

アラートを受信したり、実際の支出ではなく予測支出に基づいてアクションを実行したりするには、トリガータイプを``PROJECTED``に設定します。たとえば、予測消費量が予算制限の75%に達したときに``alert_team``という名前のストアドプロシージャを呼び出すには、以下のコマンドを実行します。

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);

カスタムアクションのリスト

  • 予算で構成されたすべてのカスタムアクションをリストするには、:doc:`GET_CUSTOM_ACTIONS </sql-reference/classes/budget/methods/get_custom_actions>`メソッドを使用します。

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

詳細については、 予算のカスタムアクション をご参照ください。

使用状況のモニター

  • |sf-intelligence|オブジェクトごとのクレジット消費量を表示するには、予算の使用状況レポートメソッドを使用します。

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

    出力には次の列が含まれます。

    説明

    サービスタイプ

    サービスカテゴリ(AI)

    エンティティタイプ

    オブジェクト型(SI)

    エンティティID

    |sf-intelligence|オブジェクトの一意の識別子。

    名前

    |sf-intelligence|オブジェクトの表示名。

    使用済みクレジット

    指定された期間中に消費されたクレジットの合計

    クラウドのクレジット

    使用したクラウドサービスのクレジット数

予算適用のレイテンシ

予算の計算としきい値の適用は定期的に行われます。

  1. Snowflakeは、タグ付けされた|sf-intelligence|オブジェクトのクレジット消費量を計算します。

  2. システムは、構成されたすべてのしきい値に対して支出を評価します。

  3. しきい値に達すると、関連するストアドプロシージャが実行されます。

  4. 使用状況ダッシュボードが更新され、最新の図表になります。

低レイテンシ予算が有効になっている場合、予算超過から2時間以内に予算が強制されます。それ以外の場合、予算を超過してから適用までに最大8時間かかる可能性があります。:ref:`リフレッシュ間隔<label-budgets_refresh_interval>`を短縮するために、60分ごとなど、より頻繁に予算の実行をトリガーできます。

警告

クレジットが消費されてから予算システムがしきい値違反を検出するまでの間には、固有の遅延があります。適用間隔の間に、アクションが実行される前に設定されたしきい値を支出が超える可能性があります。それに応じてしきい値を計画してください。たとえば、80%にアラートを設定して、100%のアクションがトリガーされる前に応答する時間を与えます。

制限事項

|sf-intelligence|のリソース予算には以下の制限が適用されます。

  • **シングルチームリソースのみ:**リソース予算は|sf-intelligence|オブジェクト全体に適用されます。

  • **強制のレイテンシ:**予算の強制は定期的なサイクルで実行されるため、予算を超過した後、予算が強制されるまでに最大8時間かかる場合があります。アクションがトリガーされるまでの間隔で、支出はしきい値を超える可能性があります。

  • **ロールベースのアクセス取り消し:**しきい値でアクセスを取り消すには、|sf-intelligence|オブジェクト専用のロールを作成する必要があります。オブジェクトに対する直接のブロックアクションはまだサポートされていません。

  • 月次期間:予算は月間サイクルで動作します。リソース予算の期間は設定できません。

  • タグのレイテンシ:オブジェクトのタグを変更すると、タグを使用する予算に変更が反映されるまでに最大8時間かかる場合があります。詳細については、 カスタム予算 をご参照ください。