❄️

Cortex AIのResource Budgetsによるコスト管理(2026/5/18更新済み)

に公開

1. はじめに

2026年3月11日、SnowflakeはAI機能のコスト管理を強化する新機能「Resource Budgets for Cortex Agents」と「Resource Budgets for Snowflake Intelligence」をリリースしました。本記事では、これらの機能を実際に検証し、AI機能の月次クレジット消費を制御する方法を解説します。

なぜResource Budgetsが必要なのか

Cortex AgentsやSnowflake Intelligenceは強力な機能ですが、以下のような課題があります:

  • 予測困難なコスト: LLM呼び出し回数やトークン消費量は事前予測が難しい
  • 急激なコスト増加: 利用が広がると想定外のコスト増加が発生しうる
  • 部門別管理の難しさ: どのチームがどれだけ消費しているか把握しにくい

Resource Budgetsは、タグベースのコスト帰属モデルにより、これらの課題を解決します。

2. 機能概要

対象サービス

サービス 説明
Cortex Agents LLMを活用したAIエージェント
Snowflake Intelligence 自然言語でデータ分析を行うサービス

主要な特徴

項目 説明
コスト帰属 タグベースでリソースをグループ化
アクション 閾値到達時にストアドプロシージャを自動実行
閾値タイプ ACTUAL(実際の消費)と PROJECTED(予測消費)の2種類
データ更新 標準: 最大8時間 / TIER_1H: 最大1時間

カスタムアクションの仕組み

Budget使用量 → 閾値到達 → ストアドプロシージャ実行 → 通知/アクセス制御

カスタムアクションフロー

3. SNOWFLAKE.CORE.BUDGET クラス詳解

Resource Budgets の中核となる SNOWFLAKE.CORE.BUDGET クラスのメソッドについて解説します。

3.1 主要メソッド一覧

カテゴリ メソッド 説明
設定 SET_SPENDING_LIMIT 月次クレジット上限を設定
設定 SET_RESOURCE_TAGS タグベースのスコープを設定
設定 SET_REFRESH_TIER データ更新間隔を設定
アクション ADD_CUSTOM_ACTION 閾値到達時のアクションを追加
アクション SET_CYCLE_START_ACTION サイクル開始時のアクションを設定
モニタリング GET_SERVICE_TYPE_USAGE_V2 サービス別使用量を取得
モニタリング GET_SPENDING_HISTORY 支出履歴を取得
モニタリング GET_CUSTOM_ACTIONS 設定済みアクションを確認
操作 REFRESH_USAGE 使用量データを強制更新

3.2 SET_SPENDING_LIMIT - 支出上限の設定

月次のクレジット消費上限を設定します。

CALL <budget_name>!SET_SPENDING_LIMIT( <spending_limit> )
パラメータ 説明
spending_limit INTEGER 月次クレジット上限(正の整数のみ
-- 月次100クレジットの上限を設定
CALL my_budget!SET_SPENDING_LIMIT(100);

-- 上限を確認
CALL my_budget!GET_SPENDING_LIMIT();

3.3 SET_RESOURCE_TAGS - タグベースのスコープ設定

タグ付けされたリソースをBudgetの追跡対象に設定します。

CALL <budget_name>!SET_RESOURCE_TAGS( <tag_pairs>, <operation_mode> )
パラメータ 説明
tag_pairs ARRAY タグ参照と値のペア配列
operation_mode STRING 'UNION'(OR条件)または 'INTERSECTION'(AND条件)

operation_mode の違い:

モード 説明 使用例
UNION いずれかのタグに一致するリソースを含む(OR) 複数チームの合計を追跡
INTERSECTION すべてのタグに一致するリソースのみ含む(AND) 特定チーム×特定環境のみ追跡
-- cortex-agent タグが付いたリソースを追跡(UNION)
CALL my_budget!SET_RESOURCE_TAGS(
  [
    [(SELECT SYSTEM$REFERENCE('TAG', 'DB.TAGS.COST_CENTER', 'SESSION', 'APPLYBUDGET')), 'cortex-agent']
  ],
  'UNION'
);

-- 複数タグの組み合わせ(両方のタグを持つリソースのみ: INTERSECTION)
CALL my_budget!SET_RESOURCE_TAGS(
  [
    [(SELECT SYSTEM$REFERENCE('TAG', 'DB.TAGS.COST_CENTER', 'SESSION', 'APPLYBUDGET')), 'production'],
    [(SELECT SYSTEM$REFERENCE('TAG', 'DB.TAGS.TEAM', 'SESSION', 'APPLYBUDGET')), 'data-science']
  ],
  'INTERSECTION'
);

3.4 SET_REFRESH_TIER - データ更新間隔の設定

Budget使用量データの更新頻度を設定します。

CALL <budget_name>!SET_REFRESH_TIER( '<refresh_interval>' )
更新間隔 コスト 用途
TIER_6H 最大6.5時間 標準 通常運用(デフォルト)
TIER_1H 最大1時間 12倍 リアルタイム監視が必要な場合
-- 1時間間隔に設定(検証用)
CALL my_budget!SET_REFRESH_TIER('TIER_1H');

-- 標準に戻す
CALL my_budget!SET_REFRESH_TIER('TIER_6H');

-- 現在の設定を確認
CALL my_budget!GET_REFRESH_TIER();

3.5 ADD_CUSTOM_ACTION - カスタムアクションの追加

閾値到達時に自動実行されるストアドプロシージャを設定します。

CALL <budget_name>!ADD_CUSTOM_ACTION(
  <stored_procedure_reference>,
  <array_of_arguments>,
  <trigger_type>,
  <threshold>
)
パラメータ 説明
stored_procedure_reference REFERENCE SYSTEM$REFERENCE() で取得したプロシージャ参照
array_of_arguments ARRAY プロシージャに渡す引数の配列
trigger_type STRING 'ACTUAL'(実消費)または 'PROJECTED'(予測消費)
threshold INTEGER 閾値(0〜1000、パーセンテージ)

trigger_type の違い:

タイプ 説明 トリガー条件
ACTUAL 実際の消費に基づく 実消費が閾値に到達した時点
PROJECTED 予測消費に基づく 月末までの予測消費が閾値に到達見込みの時点
-- 80%実消費で警告(ACTUAL)
CALL my_budget!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'DB.SCH.ALERT_PROC(string, string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', '80', 'admin@example.com'),
  'ACTUAL',
  80
);

-- 50%予測到達で早期警告(PROJECTED)
CALL my_budget!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'DB.SCH.ALERT_PROC(string, string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', '50_PROJECTED', 'admin@example.com'),
  'PROJECTED',
  50
);

3.6 SET_CYCLE_START_ACTION - サイクル開始時アクション

月初め(Budgetサイクル開始時)に自動実行されるアクションを設定します。100%到達でアクセスを取り消した場合の自動復旧に活用できます。

CALL <budget_name>!SET_CYCLE_START_ACTION(
  <stored_procedure_reference>,
  <array_of_arguments>
)
-- 月初めにアクセスを自動復旧
CALL my_budget!SET_CYCLE_START_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'DB.SCH.REINSTATE_ACCESS(string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', 'USER_ROLE')
);

-- 設定を確認
CALL my_budget!GET_CYCLE_START_ACTION();

-- 設定を削除
CALL my_budget!REMOVE_CYCLE_START_ACTION();

3.7 GET_SERVICE_TYPE_USAGE_V2 - サービス別使用量の取得

Budget対象リソースのサービス別クレジット使用量を取得します。

CALL <budget_name>!GET_SERVICE_TYPE_USAGE_V2( '<start_month>', '<end_month>' )

戻り値のカラム:

カラム 説明
SERVICE_TYPE VARCHAR クレジットを消費したサービス種別
ENTITY_TYPE VARCHAR オブジェクトの種類
ENTITY_ID NUMBER オブジェクトの内部ID
NAME VARCHAR オブジェクト名
CREDITS_USED FLOAT 合計クレジット使用量
CREDITS_COMPUTE FLOAT コンピュートクレジット
CREDITS_CLOUD FLOAT クラウドサービスクレジット
-- 2026年3月の使用量を取得
CALL my_budget!GET_SERVICE_TYPE_USAGE_V2('2026-03', '2026-03');

-- 結果例:
-- SERVICE_TYPE      | NAME           | CREDITS_USED
-- CORTEX_AGENT      | TPCH_ASSISTANT | 0.3456
-- AI_SERVICES       | -              | 0.1234

3.8 REFRESH_USAGE - 使用量の強制更新

Budget使用量データを即時更新します(通常は TIER_6H で最大6.5時間、TIER_1H で最大1時間の遅延あり)。

CALL <budget_name>!REFRESH_USAGE()

3.9 その他の便利なメソッド

-- Budget設定の一覧を取得
CALL my_budget!GET_CONFIG();

-- カスタムアクション一覧を取得
CALL my_budget!GET_CUSTOM_ACTIONS();

-- スコープ(追跡対象)を確認
CALL my_budget!GET_BUDGET_SCOPE();

-- 支出履歴を取得
CALL my_budget!GET_SPENDING_HISTORY();

-- カスタムアクションを削除
CALL my_budget!REMOVE_CUSTOM_ACTIONS();

4. ハンズオン: 環境構築

本章では、検証用で使用するDBやTagsを作成します。

4.1 データベース・スキーマ作成

USE ROLE ACCOUNTADMIN;

CREATE DATABASE IF NOT EXISTS BUDGET_DEMO_DB;
CREATE SCHEMA IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS;
CREATE SCHEMA IF NOT EXISTS BUDGET_DEMO_DB.TAGS;
CREATE SCHEMA IF NOT EXISTS BUDGET_DEMO_DB.AGENTS;

4.2 タグ作成

AI機能をグループ化するためのタグを作成します:

CREATE OR REPLACE TAG BUDGET_DEMO_DB.TAGS.COST_CENTER
  ALLOWED_VALUES 'cortex-agent', 'snowflake-intelligence'
  COMMENT = 'AI機能のコスト管理用タグ';

4.3 ログテーブル作成

アラートやアクセス制御の履歴を記録するテーブルを用意します:

CREATE TABLE IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS (
  ALERT_TIME TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP(),
  SERVICE_TYPE STRING,
  OBJECT_NAME STRING,
  THRESHOLD_PCT STRING,
  MESSAGE STRING
);

CREATE TABLE IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS.ACCESS_REVOKE_LOG (
  REVOKE_TIME TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP(),
  SERVICE_TYPE STRING,
  OBJECT_NAME STRING,
  ROLE_NAME STRING,
  ACTION STRING
);

5. ハンズオン: Cortex Agent のコスト管理

次にCortex AgentやSnowflake IntelligencewやBudget機能で使用するストアドプロシージャーを作成します。

5.1 Cortex Agent 作成

検証用のCortex Agentを作成します:

-- 検索用データの準備
CREATE OR REPLACE TABLE BUDGET_DEMO_DB.AGENTS.PRODUCT_DOCS AS
SELECT 
  P_PARTKEY AS DOC_ID,
  P_NAME AS TITLE,
  P_NAME || ' - ' || P_MFGR || ' - ' || P_BRAND AS CONTENT
FROM SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.PART
LIMIT 1000;

-- Cortex Search Service 作成
CREATE OR REPLACE CORTEX SEARCH SERVICE BUDGET_DEMO_DB.AGENTS.PRODUCT_SEARCH
  ON CONTENT
  WAREHOUSE = BUDGET_DEMO_WH
  TARGET_LAG = '1 hour'
  AS (SELECT DOC_ID, TITLE, CONTENT FROM BUDGET_DEMO_DB.AGENTS.PRODUCT_DOCS);

-- Cortex Agent 作成
CREATE OR REPLACE AGENT BUDGET_DEMO_DB.AGENTS.TPCH_ASSISTANT
  COMMENT = 'TPCH製品情報検索アシスタント'
  FROM SPECIFICATION
  $$
  models:
    orchestration: claude-4-sonnet

  instructions:
    system: |
      あなたはTPCH製品カタログの検索アシスタントです。
      ユーザーの質問に対して、製品情報を検索して回答してください。
      回答は日本語で行ってください。

  tools:
    - tool_spec:
        type: "cortex_search"
        name: "ProductSearch"
        description: "TPCH製品カタログを検索します"

  tool_resources:
    ProductSearch:
      name: "BUDGET_DEMO_DB.AGENTS.PRODUCT_SEARCH"
      max_results: "5"
  $$;

-- タグ適用(重要: Budget追跡のために必須)
ALTER AGENT BUDGET_DEMO_DB.AGENTS.TPCH_ASSISTANT
  SET TAG BUDGET_DEMO_DB.TAGS.COST_CENTER = 'cortex-agent';

5.2 通知用ストアドプロシージャ

CREATE OR REPLACE PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_ALERT_AGENT_BUDGET(
  AGENT_NAME STRING, 
  THRESHOLD_PCT STRING,
  ADMIN_EMAIL STRING
)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER  -- 重要: EXECUTE AS OWNER が必須
AS
'
var insert_sql = `INSERT INTO BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS 
  (ALERT_TIME, SERVICE_TYPE, OBJECT_NAME, THRESHOLD_PCT, MESSAGE)
VALUES (
  CURRENT_TIMESTAMP(), 
  ''CORTEX_AGENT'', 
  ''` + AGENT_NAME + `'', 
  ''` + THRESHOLD_PCT + `'',
  ''Budget threshold ` + THRESHOLD_PCT + `% reached for agent: ` + AGENT_NAME + `''
)`;
snowflake.execute({sqlText: insert_sql});
return "Alert logged for " + AGENT_NAME + " at " + THRESHOLD_PCT + "%";
';

-- APPLICATION SNOWFLAKEへの権限付与(重要)
GRANT USAGE ON PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_ALERT_AGENT_BUDGET(STRING, STRING, STRING) 
  TO APPLICATION SNOWFLAKE;

5.3 アクセス取消用ストアドプロシージャ

CREATE OR REPLACE PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_REVOKE_AGENT_ACCESS(
  AGENT_NAME STRING, 
  ROLE_NAME STRING
)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS
'
var revoke_sql = "REVOKE USAGE ON AGENT BUDGET_DEMO_DB.AGENTS." + AGENT_NAME + " FROM ROLE " + ROLE_NAME;
try {
  snowflake.execute({sqlText: revoke_sql});
} catch(e) {}

var insert_sql = `INSERT INTO BUDGET_DEMO_DB.BUDGETS.ACCESS_REVOKE_LOG 
  (REVOKE_TIME, SERVICE_TYPE, OBJECT_NAME, ROLE_NAME, ACTION)
VALUES (
  CURRENT_TIMESTAMP(), 
  ''CORTEX_AGENT'', 
  ''` + AGENT_NAME + `'', 
  ''` + ROLE_NAME + `'',
  ''REVOKED''
)`;
snowflake.execute({sqlText: insert_sql});
return "Access revoked for " + AGENT_NAME + " from role " + ROLE_NAME;
';

GRANT USAGE ON PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_REVOKE_AGENT_ACCESS(STRING, STRING) 
  TO APPLICATION SNOWFLAKE;

5.4 Budget 作成と設定

-- SNOWFLAKEアプリケーションへの基本権限付与
GRANT USAGE ON DATABASE BUDGET_DEMO_DB TO APPLICATION SNOWFLAKE;
GRANT USAGE ON SCHEMA BUDGET_DEMO_DB.BUDGETS TO APPLICATION SNOWFLAKE;
GRANT SELECT, INSERT ON TABLE BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS TO APPLICATION SNOWFLAKE;
GRANT SELECT, INSERT ON TABLE BUDGET_DEMO_DB.BUDGETS.ACCESS_REVOKE_LOG TO APPLICATION SNOWFLAKE;

-- Budget 作成
CREATE SNOWFLAKE.CORE.BUDGET IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET()
  WITH COMMENT = 'Budget for Cortex Agents';

-- 月次上限設定(正の整数のみ)
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!SET_SPENDING_LIMIT(100);

-- タグベースのスコープ設定
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!SET_RESOURCE_TAGS(
  [
    [(SELECT SYSTEM$REFERENCE('TAG', 'BUDGET_DEMO_DB.TAGS.COST_CENTER', 'SESSION', 'APPLYBUDGET')), 'cortex-agent']
  ],
  'UNION');

-- 低遅延オプション有効化(1時間間隔で更新)
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!SET_REFRESH_TIER('TIER_1H');

5.5 カスタムアクション設定

-- 80%で通知アラート
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_ALERT_AGENT_BUDGET(string, string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', '80', 'admin@example.com'),
  'ACTUAL',
  80
);

-- 100%でアクセス取消
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_REVOKE_AGENT_ACCESS(string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', 'CORTEX_AGENT_USER_ROLE'),
  'ACTUAL',
  100
);

6. 高度な設定

6.1 200%閾値(緊急シャットダウン)

100%で一度アクセスを取り消しても、管理者が手動で復旧させる場合があります。200%閾値を設けることで、緊急時のハードストップを実現できます:

CREATE OR REPLACE PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_EMERGENCY_AGENT_SHUTDOWN(
  AGENT_NAME STRING, 
  THRESHOLD_PCT STRING,
  ADMIN_EMAIL STRING
)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS
'
var insert_sql = `INSERT INTO BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS 
  (ALERT_TIME, SERVICE_TYPE, OBJECT_NAME, THRESHOLD_PCT, MESSAGE)
VALUES (
  CURRENT_TIMESTAMP(), 
  ''CORTEX_AGENT'', 
  ''` + AGENT_NAME + `'', 
  ''` + THRESHOLD_PCT + `'',
  ''[EMERGENCY] Budget exceeded 200%! Immediate shutdown required for agent: ` + AGENT_NAME + `''
)`;
snowflake.execute({sqlText: insert_sql});

// すべてのロールからアクセスを取り消し
var revoke_sql = `REVOKE USAGE ON CORTEX AGENT BUDGET_DEMO_DB.AGENTS.` + AGENT_NAME + ` FROM ROLE PUBLIC`;
try {
  snowflake.execute({sqlText: revoke_sql});
} catch (e) {}
return "[EMERGENCY] 200% threshold exceeded - agent " + AGENT_NAME + " access revoked";
';

GRANT USAGE ON PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_EMERGENCY_AGENT_SHUTDOWN(VARCHAR, VARCHAR, VARCHAR) 
  TO APPLICATION SNOWFLAKE;

-- 200%閾値でのカスタムアクション追加
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_EMERGENCY_AGENT_SHUTDOWN(VARCHAR, VARCHAR, VARCHAR)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', '200', 'admin@example.com'),
  'ACTUAL',
  200
);

6.2 予測ベースアラート(PROJECTED)

PROJECTED 閾値を使うと、現在の消費ペースから月末までの予測消費量を計算し、早期に警告を発することができます:

CREATE OR REPLACE PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_PROJECTED_ALERT_AGENT(
  AGENT_NAME STRING, 
  THRESHOLD_PCT STRING,
  ADMIN_EMAIL STRING
)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS
'
var insert_sql = `INSERT INTO BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS 
  (ALERT_TIME, SERVICE_TYPE, OBJECT_NAME, THRESHOLD_PCT, MESSAGE)
VALUES (
  CURRENT_TIMESTAMP(), 
  ''CORTEX_AGENT'', 
  ''` + AGENT_NAME + `'', 
  ''PROJECTED_` + THRESHOLD_PCT + `'',
  ''[PROJECTED] Budget is projected to reach ` + THRESHOLD_PCT + `% by end of cycle for agent: ` + AGENT_NAME + `''
)`;
snowflake.execute({sqlText: insert_sql});
return "[PROJECTED] Alert logged - budget projected to reach " + THRESHOLD_PCT + "% for " + AGENT_NAME;
';

GRANT USAGE ON PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_PROJECTED_ALERT_AGENT(VARCHAR, VARCHAR, VARCHAR) 
  TO APPLICATION SNOWFLAKE;

-- 50%予測到達時に早期警告
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_PROJECTED_ALERT_AGENT(VARCHAR, VARCHAR, VARCHAR)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', '50', 'admin@example.com'),
  'PROJECTED',
  50
);

-- 100%予測到達時に警告
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_PROJECTED_ALERT_AGENT(VARCHAR, VARCHAR, VARCHAR)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', '100', 'admin@example.com'),
  'PROJECTED',
  100
);

6.3 サイクル開始時の自動復旧

月初めに自動的にアクセスを復旧させることで、運用負荷を軽減できます:

CREATE OR REPLACE PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_REINSTATE_AGENT_ACCESS(
  AGENT_NAME STRING, 
  ROLE_NAME STRING
)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS
'
var grant_sql = "GRANT USAGE ON AGENT BUDGET_DEMO_DB.AGENTS." + AGENT_NAME + " TO ROLE " + ROLE_NAME;
try {
  snowflake.execute({sqlText: grant_sql});
} catch(e) {}
return "Access reinstated for " + AGENT_NAME + " to role " + ROLE_NAME;
';

GRANT USAGE ON PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_REINSTATE_AGENT_ACCESS(STRING, STRING) 
  TO APPLICATION SNOWFLAKE;

-- サイクル開始時の自動復旧設定
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!SET_CYCLE_START_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_REINSTATE_AGENT_ACCESS(string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('TPCH_ASSISTANT', 'CORTEX_AGENT_USER_ROLE')
);

7. テストとモニタリング

先月リリースされたDATA_AGENT_RUNを用いて作成したCortex Agentを実行してみます。Snowsight UIやAPI/MCPでもテストは可能ですが、SQLで実行できるのは手間が掛からないです。使用量が特定の閾値を超えるまで以下のコマンドを何回か実行してみましょう。

7.1 DATA_AGENT_RUN による Agent 呼び出し

-- Cortex Agent への問い合わせ
SELECT
  TRY_PARSE_JSON(
    SNOWFLAKE.CORTEX.DATA_AGENT_RUN(
      'BUDGET_DEMO_DB.AGENTS.TPCH_ASSISTANT',
      $${ 
        "messages": [
          {
            "role": "user",
            "content": [
              { "type": "text", "text": "Manufacturer#1 の製品を3つ教えてください" }
            ]
          }
        ]
      }$$
    )
  ) AS response;

7.2 使用量モニタリング

以下のコマンドを利用し、使用量を取得してみます。

-- Budget 使用量確認
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_SERVICE_TYPE_USAGE_V2(
  '2026-03',
  '2026-03'
);

-- 強制リフレッシュ(使用量を即時反映)
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!REFRESH_USAGE();

-- カスタムアクション設定確認
CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_CUSTOM_ACTIONS();

-- アラートログ確認
SELECT * FROM BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS ORDER BY ALERT_TIME DESC;

8. 検証結果

実際に検証した結果、以下のカスタムアクションが正常に動作することを確認しました:

閾値 戦略 アクション 検証結果
50% PROJECTED 早期警告アラート ✅ 自動トリガー確認
80% ACTUAL 警告アラート ✅ 動作確認
100% ACTUAL アクセス取消 ✅ 動作確認
100% PROJECTED 予測アラート ✅ 自動トリガー確認
200% ACTUAL 緊急シャットダウン ✅ 設定完了

8.1 Budget設定の確認(GET_CONFIG)

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_CONFIG();
NOTIFICATION_EMAIL LAST_NOTIFICATION_TIME SPEND_LIMIT NOTIFICATION_MUTE_FLAG BUDGET_TYPE
(空) -1 1 false USER_BUDGET

8.2 カスタムアクション設定の確認(GET_CUSTOM_ACTIONS)

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_CUSTOM_ACTIONS();
PROCEDURE_FQN PROCEDURE_ARGS SPEND_STRATEGY THRESHOLD LAST_TRIGGER_ATTEMPT_TIME
SP_PROJECTED_ALERT_AGENT TPCH_ASSISTANT,100,admin@example.com PROJECTED 100 2026/03/14 06:03:02
SP_PROJECTED_ALERT_AGENT TPCH_ASSISTANT,50,admin@example.com PROJECTED 50 2026/03/14 05:33:02
SP_EMERGENCY_AGENT_SHUTDOWN TPCH_ASSISTANT,200,admin@example.com ACTUAL 200 (未トリガー)
SP_REVOKE_AGENT_ACCESS TPCH_ASSISTANT,CORTEX_AGENT_USER_ROLE ACTUAL 100 (未トリガー)
SP_ALERT_AGENT_BUDGET TPCH_ASSISTANT,80,admin@example.com ACTUAL 80 (未トリガー)

PROJECTED アクション(50%、100%)が実際にトリガーされていることが LAST_TRIGGER_ATTEMPT_TIME で確認できます。

8.3 アラートログの確認(BUDGET_ALERTS テーブル)

SELECT * FROM BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS ORDER BY ALERT_TIME DESC;
ALERT_TIME SERVICE_TYPE OBJECT_NAME THRESHOLD_PCT MESSAGE
2026/03/14 06:03:23 CORTEX_AGENT TPCH_ASSISTANT PROJECTED_100 [PROJECTED] Budget is projected to reach 100% by end of cycle
2026/03/14 05:33:23 CORTEX_AGENT TPCH_ASSISTANT PROJECTED_50 [PROJECTED] Budget is projected to reach 50% by end of cycle
2026/03/14 05:29:45 CORTEX_AGENT TPCH_ASSISTANT 200 [EMERGENCY] Budget exceeded 200%! (手動テスト)

予測アラート(PROJECTED 50%、100%)が自動的にトリガーされ、ログに記録されています。

8.4 サービス別使用量の確認(GET_SERVICE_TYPE_USAGE_V2)

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_SERVICE_TYPE_USAGE_V2('2026-03', '2026-03');
SERVICE_TYPE ENTITY_TYPE NAME CREDITS_USED CREDITS_COMPUTE CREDITS_CLOUD
AI_SERVICES CORTEX AGENT TPCH_ASSISTANT 0.4522 0.4522 0

Budget上限1クレジットに対して約0.45クレジット(45%)を消費していることが確認できます。

8.5 支出履歴の確認(GET_SPENDING_HISTORY)

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_SPENDING_HISTORY();
MEASUREMENT_DATE SERVICE_TYPE CREDITS_SPENT
2026-03-13 AI_SERVICES 0.3399
2026-03-14 AI_SERVICES 0.1123

日別のクレジット消費推移を確認できます。

8.6 サイクル開始時アクションの確認(GET_CYCLE_START_ACTION)

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_CYCLE_START_ACTION();
PROCEDURE_FQN PROCEDURE_ARGS LAST_TRIGGER_ATTEMPT_TIME
SP_REINSTATE_AGENT_ACCESS TPCH_ASSISTANT,CORTEX_AGENT_USER_ROLE (月初に実行予定)

月初めに自動的にアクセス復旧が実行されるよう設定されています。

8.7 更新間隔の確認(GET_REFRESH_TIER)

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_REFRESH_TIER();
-- 結果: TIER_1H

1時間間隔の低遅延オプションが有効になっています。

Snowsight UI での確認

Budget設定は Snowsight の Admin > Cost Management > Budgets から確認できます。

Budget一覧画面
Budget詳細画面

カスタムアクションの設定も GUI から確認可能です。右上にある「Budget Details」のボタンを押すと、右側のペインに設定されたカスタムアクションを確認ができます:

カスタムアクション設定画面

9. Shared Resource Budget(ユーザータグベースの予算管理)

9.1 Resource Budget との違い

これまでのセクションで紹介した Resource Budget は、AIオブジェクト自体にタグを付与してコスト追跡を行うモデルでした。一方、Shared Resource Budget はユーザーにタグを付与し、複数チームが同じAI機能を共有しながらチームごとに独立した予算管理を行うモデルです。

項目 Resource Budget Shared Resource Budget
タグ付与先 AIオブジェクト ユーザー
設定メソッド SET_RESOURCE_TAGS SET_USER_TAGS + ADD_SHARED_RESOURCE
ユースケース オブジェクト単位の予算管理 チーム/部門単位の予算管理
マルチチーム 非対応 対応(同じリソースを複数Budgetで追跡)
対象ドメイン Cortex Agent, SI Cortex Agent, SI, AI Function, Cortex Code

9.2 仕組み

Shared Resource Budget は以下のワークフローで動作します:

1. ユーザーにタグを付与(ALTER USER ... SET TAG)
2. SET_USER_TAGS でBudgetにユーザータグを紐づけ
3. ADD_SHARED_RESOURCE でAI機能を共有リソースとして追加
4. タグ付きユーザーのAI利用量が独立して追跡される
5. 閾値到達時にカスタムアクションが発火

9.3 セットアップ

ユーザー用タグ作成とタグ付与

-- ユーザー用コストセンタータグ作成
CREATE OR REPLACE TAG BUDGET_DEMO_DB.TAGS.USER_COST_CENTER
  ALLOWED_VALUES 'finance_dept', 'marketing_dept', 'engineering_dept'
  COMMENT = 'ユーザーベースのコスト管理用タグ(Shared Resource Budget用)';

-- ユーザーにタグを付与
ALTER USER ADMIN SET TAG BUDGET_DEMO_DB.TAGS.USER_COST_CENTER = 'finance_dept';

-- 付与されたタグを確認
SELECT SYSTEM$GET_TAG('BUDGET_DEMO_DB.TAGS.USER_COST_CENTER', 'ADMIN', 'USER');
-- → finance_dept

Budget作成と SET_USER_TAGS

-- Shared Resource Budget 作成
CREATE SNOWFLAKE.CORE.BUDGET IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET()
  WITH COMMENT = 'Shared Resource Budget for finance_dept';

-- 月次上限設定
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!SET_SPENDING_LIMIT(50);

-- ユーザータグをBudgetに紐づけ(SET_USER_TAGS)
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!SET_USER_TAGS(
  [
    [(SELECT SYSTEM$REFERENCE('TAG', 'BUDGET_DEMO_DB.TAGS.USER_COST_CENTER', 'SESSION', 'APPLYBUDGET')),
    'finance_dept']
  ],
  'UNION');
-- → Successfully removed 0 and set 1 user tag(s) for budget

共有リソースの追加(ADD_SHARED_RESOURCE)

Shared Resource Budget の対象となるAI機能ドメインは4種類あります:

ドメイン 説明
CORTEX AGENT Cortex Agent
SNOWFLAKE INTELLIGENCE Snowflake Intelligence
AI FUNCTION AI_CLASSIFY, AI_COMPLETE等
CORTEX CODE Cortex Code(CLI, Snowsight)
-- Cortex Agent を共有リソースとして追加(特定のAgent)
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!ADD_SHARED_RESOURCE(
  'CORTEX AGENT',
  (SELECT SYSTEM$REFERENCE('CORTEX AGENT', 'BUDGET_DEMO_DB.AGENTS.TPCH_ASSISTANT'))
);

-- Snowflake Intelligence を共有リソースとして追加(全SI)
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!ADD_SHARED_RESOURCE(
  'SNOWFLAKE INTELLIGENCE'
);

-- AI Function を共有リソースとして追加(全AI関数)
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!ADD_SHARED_RESOURCE(
  'AI FUNCTION'
);

-- Cortex Code を共有リソースとして追加
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!ADD_SHARED_RESOURCE(
  'CORTEX CODE'
);

設定確認

-- 追加済みの共有リソースを確認
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!GET_SHARED_RESOURCES();
RESOURCE_ID NAME DOMAIN
NULL [ALL-CORTEX AI FUNCTIONS] AI_FUNCTION
91 TPCH_ASSISTANT CORTEX_AGENT
NULL [ALL-SNOWFLAKE INTELLIGENCES] SNOWFLAKE_INTELLIGENCE
NULL [ALL-CORTEX CODES] CORTEX_CODE
-- Budget設定を確認
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!GET_CONFIG();
NOTIFICATION_EMAIL LAST_NOTIFICATION_TIME SPEND_LIMIT NOTIFICATION_MUTE_FLAG BUDGET_TYPE
(空) -1 50 false USER_BUDGET

9.4 カスタムアクション設定

Resource Budget と同様に、閾値到達時のアクションを設定できます:

-- 通知用プロシージャ(EXECUTE AS OWNER 必須)
CREATE OR REPLACE PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_ALERT_SHARED_BUDGET(
  DEPT_NAME STRING, THRESHOLD_PCT STRING, ADMIN_EMAIL STRING
)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS
'
var insert_sql = "INSERT INTO BUDGET_DEMO_DB.BUDGETS.BUDGET_ALERTS "
  + "(ALERT_TIME, SERVICE_TYPE, OBJECT_NAME, THRESHOLD_PCT, MESSAGE) "
  + "VALUES (CURRENT_TIMESTAMP(), ''SHARED_RESOURCE'', ''" + DEPT_NAME
  + "'', ''" + THRESHOLD_PCT + "'', ''[SHARED] Budget threshold "
  + THRESHOLD_PCT + "% reached for dept: " + DEPT_NAME + "'')";
snowflake.execute({sqlText: insert_sql});
return "Shared budget alert logged for " + DEPT_NAME + " at " + THRESHOLD_PCT + "%";
';

GRANT USAGE ON PROCEDURE BUDGET_DEMO_DB.BUDGETS.SP_ALERT_SHARED_BUDGET(STRING, STRING, STRING)
  TO APPLICATION SNOWFLAKE;

-- 80%で通知
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!ADD_CUSTOM_ACTION(
  SYSTEM$REFERENCE('PROCEDURE', 'BUDGET_DEMO_DB.BUDGETS.SP_ALERT_SHARED_BUDGET(string, string, string)', 'SESSION', 'USAGE'),
  ARRAY_CONSTRUCT('finance_dept', '80', 'admin@example.com'),
  'ACTUAL',
  80
);

9.5 マルチチーム検証

Shared Resource Budget の最大の特長は、同じAI機能を複数チームで共有しながら独立に予算管理できる点です。

-- marketing_dept 用のBudget作成
CREATE SNOWFLAKE.CORE.BUDGET IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS.MARKETING_SHARED_BUDGET()
  WITH COMMENT = 'Shared Resource Budget for marketing_dept';

CALL BUDGET_DEMO_DB.BUDGETS.MARKETING_SHARED_BUDGET!SET_SPENDING_LIMIT(30);

CALL BUDGET_DEMO_DB.BUDGETS.MARKETING_SHARED_BUDGET!SET_USER_TAGS(
  [
    [(SELECT SYSTEM$REFERENCE('TAG', 'BUDGET_DEMO_DB.TAGS.USER_COST_CENTER', 'SESSION', 'APPLYBUDGET')),
    'marketing_dept']
  ],
  'UNION');

-- finance_dept と同じリソースを共有リソースとして追加
CALL BUDGET_DEMO_DB.BUDGETS.MARKETING_SHARED_BUDGET!ADD_SHARED_RESOURCE(
  'CORTEX AGENT',
  (SELECT SYSTEM$REFERENCE('CORTEX AGENT', 'BUDGET_DEMO_DB.AGENTS.TPCH_ASSISTANT'))
);

CALL BUDGET_DEMO_DB.BUDGETS.MARKETING_SHARED_BUDGET!ADD_SHARED_RESOURCE('AI FUNCTION');

これにより、以下のような構成が実現できます:

Budget 部門 上限 共有リソース
FINANCE_SHARED_BUDGET finance_dept 50クレジット Agent, AI Function, SI, Cortex Code
MARKETING_SHARED_BUDGET marketing_dept 30クレジット Agent, AI Function

各Budgetは独立して評価されるため、finance_dept の消費が marketing_dept の予算に影響を与えることはありません。

9.6 INTERSECTION モード(複数タグのAND条件)

SET_USER_TAGSoperation_mode'INTERSECTION' を指定すると、すべてのタグを持つユーザーのみがBudget対象になります:

-- プロジェクト用タグを追加
CREATE OR REPLACE TAG BUDGET_DEMO_DB.TAGS.PROJECT
  ALLOWED_VALUES 'project_alpha', 'project_beta';

-- ユーザーに両方のタグを付与
ALTER USER ADMIN SET TAG BUDGET_DEMO_DB.TAGS.PROJECT = 'project_alpha';

-- INTERSECTION用Budget作成
CREATE SNOWFLAKE.CORE.BUDGET IF NOT EXISTS BUDGET_DEMO_DB.BUDGETS.INTERSECTION_BUDGET()
  WITH COMMENT = 'INTERSECTION mode - finance_dept AND project_alpha';

CALL BUDGET_DEMO_DB.BUDGETS.INTERSECTION_BUDGET!SET_SPENDING_LIMIT(20);

-- INTERSECTION: finance_dept AND project_alpha の両方を持つユーザーのみ対象
CALL BUDGET_DEMO_DB.BUDGETS.INTERSECTION_BUDGET!SET_USER_TAGS(
  [
    [(SELECT SYSTEM$REFERENCE('TAG', 'BUDGET_DEMO_DB.TAGS.USER_COST_CENTER', 'SESSION', 'APPLYBUDGET')), 'finance_dept'],
    [(SELECT SYSTEM$REFERENCE('TAG', 'BUDGET_DEMO_DB.TAGS.PROJECT', 'SESSION', 'APPLYBUDGET')), 'project_alpha']
  ],
  'INTERSECTION');
-- → Successfully removed 0 and set 2 user tag(s) for budget

CALL BUDGET_DEMO_DB.BUDGETS.INTERSECTION_BUDGET!ADD_SHARED_RESOURCE('AI FUNCTION');
モード 動作 使用例
UNION いずれかのタグを持つユーザーが対象(OR) 部門単位の管理
INTERSECTION すべてのタグを持つユーザーのみ対象(AND) 部門×プロジェクトのクロス管理

9.7 Budget優先度

ユーザーが複数のBudget(Resource Budget と Shared Resource Budget の両方)の対象になっている場合、各Budgetは独立して評価され、先に閾値に到達した方のアクションが発火します。

-- 両方のBudget設定を確認
CALL BUDGET_DEMO_DB.BUDGETS.FINANCE_SHARED_BUDGET!GET_CONFIG();
-- → SPEND_LIMIT: 50

CALL BUDGET_DEMO_DB.BUDGETS.CORTEX_AGENT_BUDGET!GET_CONFIG();
-- → SPEND_LIMIT: 1 (検証用に低く設定)

例えば、ADMIN ユーザーが finance_dept タグを持ち、かつ TPCH_ASSISTANT Agent に cortex-agent タグが付いている場合:

  • CORTEX_AGENT_BUDGET(1クレジット)の閾値に先に到達 → こちらのアクションが発火
  • FINANCE_SHARED_BUDGET(50クレジット)は独立して追跡を継続

9.8 検証結果サマリー

検証項目 結果
ユーザーへのタグ付与 (ALTER USER ... SET TAG) ✅ 成功
SET_USER_TAGS (UNION モード) ✅ 成功
SET_USER_TAGS (INTERSECTION モード) ✅ 成功
ADD_SHARED_RESOURCE (4ドメイン: Agent, SI, AI Function, Cortex Code) ✅ 全て成功
SYSTEM$SHOW_BUDGET_SHARED_RESOURCE_CANDIDATES('AI_FUNCTION') ✅ 15関数を返却
GET_SHARED_RESOURCES で追加済みリソース確認 ✅ 4リソース確認
マルチチーム構成(finance 50 credits / marketing 30 credits) ✅ 独立管理
カスタムアクション設定(80%通知, 100%アクセス取消) ✅ 正常動作
AI機能利用テスト(Cortex Agent, AI_CLASSIFY, COMPLETE(claude-sonnet-4-6)) ✅ 全て成功

10. 注意点と制限事項

10.1 Shared Resource Budget の制限事項

制限 詳細
個別ユーザータグ付け 一括タグ付け機能なし。各ユーザーを個別に ALTER USER する必要あり
タグ反映遅延 ユーザータグの変更がBudgetに反映されるまで最大8時間
月次サイクル固定 カスタムの予算期間は設定不可
ロールベース取消のみ 個別ユーザーの直接ブロックは未対応。専用ロールの作成が必要

10.2 データ更新の遅延

Tier 最大遅延 用途
標準 8時間 通常運用
TIER_1H 1時間 リアルタイム監視が必要な場合

10.3 カスタムアクション プロシージャの要件

カスタムアクションで使用するストアドプロシージャには以下の要件があります:

  1. EXECUTE AS OWNER で作成する必要がある
  2. APPLICATION SNOWFLAKEUSAGE 権限を付与する必要がある
-- 正しい例
CREATE PROCEDURE my_proc(...) ... EXECUTE AS OWNER ...;
GRANT USAGE ON PROCEDURE my_proc(...) TO APPLICATION SNOWFLAKE;

-- 誤り例(動作しない)
CREATE PROCEDURE my_proc(...) ... EXECUTE AS CALLER ...;  -- NG

10.4 SET_SPENDING_LIMIT の制約

-- 正の整数のみ有効
CALL budget!SET_SPENDING_LIMIT(100);  -- OK
CALL budget!SET_SPENDING_LIMIT(0.5);  -- NG: エラー
CALL budget!SET_SPENDING_LIMIT(0);    -- NG: エラー

10.5 SI経由のAgent呼び出し時のコスト帰属

Snowflake Intelligence が内部で Cortex Agent を呼び出す場合、コストは Snowflake Intelligence 側に帰属します。

11. ベストプラクティス

11.1 Resource Budget と Shared Resource Budget の使い分け

シナリオ 推奨
単一チームが専用のAI機能を利用 Resource Budget(シンプル)
複数チームが同じAI機能を共有 Shared Resource Budget(チーム別管理)
部門×プロジェクトのクロス管理 Shared Resource Budget(INTERSECTIONモード)
AI Function / Cortex Code の予算管理 Shared Resource Budget(対応ドメインが広い)

11.2 多層防御の閾値設定

50% PROJECTED  → 早期警告(計画見直しの検討)
80% ACTUAL     → 警告(利用状況の確認)
100% ACTUAL    → 一般ユーザーのアクセス取消
100% PROJECTED → 予測警告
200% ACTUAL    → 緊急シャットダウン(全ユーザー)

11.3 自動復旧の活用

月初めの SET_CYCLE_START_ACTION で自動復旧を設定することで:

  • 運用負荷を軽減
  • ユーザー体験の向上(月初から利用可能)

11.4 アラートログの活用

BUDGET_ALERTS テーブルを監視ダッシュボードと連携することで:

  • Slack/Teams への通知
  • メールアラート
  • ダッシュボードでの可視化

12. まとめ

Resource Budgets for Cortex Agents と Snowflake Intelligence、そして Shared Resource Budget により、AI機能のコスト管理が大幅に強化されました。

主なメリット:

  • タグベースの柔軟なスコープ設定 - 部門別、プロジェクト別の管理が可能
  • 多段階の閾値設定 - ACTUAL と PROJECTED を組み合わせた多層防御
  • 自動化されたアクセス制御 - 閾値到達時の自動対応
  • サイクル単位の管理 - 月初めの自動リセット/復旧
  • Shared Resource Budget - ユーザータグベースで複数チームが同じAI機能を独立管理
  • 幅広いAIドメイン対応 - Cortex Agent, SI に加え AI Function, Cortex Code も予算管理可能

AI機能を本番環境で安心して活用するために、Resource Budgets の活用を強くお勧めします。

参考リンク

Snowflake Japan

Discussion