チュートリアル: 予算の作成を始める

概要

このチュートリアルでは、アカウント予算を設定し、指定したオブジェクトのグループを監視するカスタム予算を作成することで、バジェットを使用したアカウントレベルのクレジット使用状況の監視について紹介します。

バジェットを使用すると、バックグラウンドメンテナンスタスクやサーバーレス機能のクレジット使用状況を含め、サポートされているオブジェクトのコンピューティングコストのクレジット使用状況を監視できます。バジェットでは、予算ごとに毎月の支出上限を設定することができ、現在の支出が毎月の支出上限を超えると予測される場合に通知メールを送信します。

このチュートリアルは、 Snowsight のワークシートを使用するか、 SnowSQL などの CLI クライアントを使用して完了できます。このチュートリアルの一部は、 Snowsight を使用して完了できます。

このチュートリアルが終わるまでに、以下の方法を習得できます。

  • 予算を監視および管理するためのカスタムロールを作成します。

  • カスタム予算にオブジェクトを追加するために必要な権限を付与します。

  • アカウント予算をアクティブ化および設定します。

  • カスタム予算を作成し、オブジェクトを追加します。

前提条件

このチュートリアルを完了するには、以下の前提条件が必要です。

  • このチュートリアルで使用するロールを作成するには、ACCOUNTADMINロールを使用する必要があります。

  • メールアドレスを確認する する必要があります。予算通知リストに追加できるのは、認証済みのメールアドレスのみです。

通知統合を作成する

予算は、通知統合を使用して、現在のクレジット使用状況が月間使用限度額を超えると予想される場合に通知メールを送信します。 ALLOWED_RECIPIENTS リストには、予算通知を受け取るために、検証済みのユーザーのメールアドレスが含まれている 必要があります

SQLを使用してチュートリアルを完了する場合は、通知の統合が必要です。以下の手順に従って作成してください。

Snowsight を使用して予算を設定すると、通知の統合が自動的に作成されます。 Snowsight を使って予算を設定する場合は、次のステップに進んでください。

  1. 以下のステートメントを実行して、通知統合を作成します。ALLOWED_RECIPIENTS リストには、認証済みのメールアドレスを使用してください。

    USE ROLE ACCOUNTADMIN;
    
    CREATE NOTIFICATION INTEGRATION budgets_notification_integration
      TYPE=EMAIL
      ENABLED=TRUE
      ALLOWED_RECIPIENTS=('<YOUR_EMAIL_ADDRESS>');
    
    Copy
  2. 通知統合を作成したら、SNOWFLAKEアプリケーションにUSAGE権限を付与します。この権限は、予算が通知統合を使用してメールを送信するために必要です。

    次のステートメントを実行して、通知統合にUSAGE権限を付与します。

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy

データベース、スキーマ、カスタムロールを作成する

このステップでは、チュートリアルが予算を作成、管理、監視するために、以下のオブジェクトを作成します。

  • カスタム予算を作成するためのデータベースとスキーマ。

  • アカウント予算を管理するカスタムロール。

  • アカウント予算を監視するカスタムロール。

  • カスタム予算を作成するカスタムロール。

  1. 以下の手順でカスタム予算を作成するデータベースとスキーマを作成します。

    1. カスタム予算を作成するデータベースとスキーマを作成します。

      USE ROLE ACCOUNTADMIN;
      
      CREATE DATABASE budgets_db;
      
      CREATE SCHEMA budgets_db.budgets_schema;
      
      Copy
  2. アカウント予算管理者のカスタムロール account_budget_admin を作成します。アカウント予算管理者は、アカウント予算に対して以下のアクションを行うことができます。

    • アカウント予算をアクティブ化します。

    • 支出制限を設定します。

    • 通知設定を編集します。

    • アカウントのクレジット使用状況を監視します。

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE account_budget_admin;
    
    GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_ADMIN TO ROLE account_budget_admin;
    
    GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_admin;
    
    Copy
  3. アカウント予算モニターに付与されるカスタムロール account_budget_monitor を作成します。アカウント予算モニターは、アカウント予算に対して以下のアクションを行うことができます。

    • アカウントのクレジット使用状況を監視します。

    • メール通知設定を表示します。

    • アカウントの月間支出制限を表示します。

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE account_budget_monitor;
     
    GRANT APPLICATION ROLE SNOWFLAKE.BUDGET_VIEWER TO ROLE account_budget_monitor;
    
    GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO ROLE account_budget_monitor;
    
    Copy
  4. 必要なロールと権限でカスタムロール budget_owner を作成し、スキーマ budgets_db.budgets_schema でカスタム予算を作成します。

    USE ROLE ACCOUNTADMIN;
       
    CREATE ROLE budget_owner;
      
    GRANT USAGE ON DATABASE budgets_db TO ROLE budget_owner;
    GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_owner;
    
    GRANT DATABASE ROLE SNOWFLAKE.BUDGET_CREATOR TO ROLE budget_owner;
    
    GRANT CREATE SNOWFLAKE.CORE.BUDGET ON SCHEMA budgets_db.budgets_schema
      TO ROLE budget_owner;
    
    Copy
  5. カスタム予算を管理および監視する2つのカスタムロールを作成します。これらのロールには、カスタム予算が作成された後、チュートリアルの後半で追加の権限が付与されます。カスタムロールを作成するには、以下の手順に従います。

    1. カスタム予算を管理および監視できるカスタム budget_admin ロールを作成します。

      USE ROLE ACCOUNTADMIN;
      
      CREATE ROLE budget_admin;
      
      GRANT USAGE ON DATABASE budgets_db TO ROLE budget_admin;
      
      GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_admin;
      
      GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_admin;
      
      Copy
    1. カスタム予算を監視できるカスタム budget_monitor ロールを作成します。

    USE ROLE ACCOUNTADMIN;
    
    CREATE ROLE budget_monitor;
    
    GRANT USAGE ON DATABASE budgets_db TO ROLE budget_monitor;
    
    GRANT USAGE ON SCHEMA budgets_db.budgets_schema TO ROLE budget_monitor;
    
    GRANT DATABASE ROLE SNOWFLAKE.USAGE_VIEWER TO ROLE budget_monitor;
    
    Copy
  6. チュートリアルの今後のステップで使用するカスタム予算ロールを自分に付与します。

    1. 自分に account_budget_admin ロールを付与します。

      GRANT ROLE account_budget_admin
        TO USER <YOUR_USER_NAME>;
      
      Copy
    2. 自分に account_budget_monitor ロールを付与します。

      GRANT ROLE account_budget_monitor
        TO USER <YOUR_USER_NAME>;
      
      Copy
    3. 自分に budget_owner ロールを付与します。

      GRANT ROLE budget_owner
        TO USER <YOUR_USER_NAME>;
      
      Copy
    4. 自分に budget_monitor ロールを付与します。

      GRANT ROLE budget_monitor
        TO USER <YOUR_USER_NAME>;
      
      Copy

このセクションでは、予算を管理および監視し、カスタム予算を作成するためのカスタムロールを作成しました。

カスタム予算用のオブジェクトを作成する

このステップでは、カスタム予算に追加するオブジェクトを作成し、前のステップで作成したカスタムロールに権限を付与します。以下のオブジェクトを作成します。

  • カスタム予算に追加するウェアハウス。

  • カスタム予算に追加するデータベース。

  1. ウェアハウスを作成し、作成したカスタムロールにウェアハウスのUSAGEおよびAPPLYBUDGET権限を付与します。オブジェクトを予算に追加するには、APPLYBUDGET権限が必要です。

    1. ウェアハウス na_finance_wh を作成します。

      CREATE WAREHOUSE na_finance_wh;
      
      Copy
    2. カスタム予算ロールに USAGE 権限を付与します。

      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE account_budget_admin;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE account_budget_monitor;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_admin;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_owner;
      GRANT USAGE ON WAREHOUSE na_finance_wh TO ROLE budget_monitor;
      
      Copy
    3. ロール budget_owner にウェアハウスの APPLYBUDGET 権限を付与します。

      GRANT APPLYBUDGET ON WAREHOUSE na_finance_wh TO ROLE budget_owner;
      
      Copy
  2. データベースを作成し、作成したカスタム予算所有者ロールにウェアハウスのAPPLYBUDGET権限を付与します。オブジェクトを予算に追加するには、APPLYBUDGET権限が必要です。

    1. データベースを作成します。

      CREATE DATABASE na_finance_db;
      
      Copy
    2. データベースでロール budget_owner に APPLYBUDGET 権限を付与します。

      GRANT APPLYBUDGET ON DATABASE  na_finance_db TO ROLE budget_owner;
      
      Copy

このセクションでは、カスタム予算に追加するオブジェクトを作成し、それらのオブジェクトを予算に追加するために必要な APPLYBUDGET 権限を付与しました。また、カスタム予算を作成するデータベースとスキーマを作成し、スキーマに予算を作成するために必要な USAGE 権限を付与しました。これで、予算の有効化、作成、設定の準備が整いました。

アカウント予算をアクティブ化および設定する

アカウント予算は、バックグラウンドメンテナンスタスク(自動クラスタリングなど)やサーバーレス機能など、アカウントで予算対応オブジェクトのコンピューティングコストのクレジット使用状況を監視します。クレジット使用状況の監視を開始するには、アカウント予算を有効にする必要があります。アクティブ化したら、アカウントの月間利用限度額と通知先メールリストを設定できます。予算は、現在のクレジット使用状況が月間利用限度額を超えると予想される場合、通知メールを送信します。

次のステップを使ってアカウント予算をアクティブ化して設定します。

  1. 前のステップで作成した account_budget_admin ロールを使用して、アカウント予算をアクティブ化します。

    USE ROLE account_budget_admin;
    
    CALL snowflake.local.account_root_budget!ACTIVATE();
    
    Copy
  2. アカウント予算の支出制限を500クレジット/月に設定します。

    CALL snowflake.local.account_root_budget!SET_SPENDING_LIMIT(500);
    
    Copy
  3. メール通知リストを設定するには、認証済みのメールアドレスと、チュートリアルで以前に作成した通知統合を使用します。

    CALL snowflake.local.account_root_budget!SET_EMAIL_NOTIFICATIONS(
       'budgets_notification_integration',
       '<YOUR_EMAIL_ADDRESS>');
    
    Copy

このセクションでは、アカウント予算を有効にし、支出制限と予算通知を受け取るメールアドレスを設定します。

カスタム予算の作成

アカウント予算の有効化と設定が完了したら、カスタム予算を作成して、指定したオブジェクトグループのアカウントのクレジット使用状況を監視します。このチュートリアルでは、カスタム予算に na_finance_wh ウェアハウスと na_finance_db を追加します。

以下のステップでカスタム予算を作成します。

  1. budget_owner ロールを使用して、 budgets_db.budgets_schema に予算 na_finance_budget を作成します。

    USE ROLE budget_owner;
    USE SCHEMA budgets_db.budgets_schema;
    USE WAREHOUSE na_finance_wh;
    
    CREATE SNOWFLAKE.CORE.BUDGET na_finance_budget();
    
    Copy
  2. 以下のステップで、予算(na_finance_budget)の月間支出限度額とメール通知リストを設定します。

    1. 毎月の支出制限を500クレジットに設定します。

      CALL na_finance_budget!SET_SPENDING_LIMIT(500);
      
      Copy
    2. 通知リストを設定するには、認証済みメールアドレスとチュートリアルの最初のステップで作成した通知統合を使用します。

      CALL na_finance_budget!SET_EMAIL_NOTIFICATIONS('budgets_notification_integration',
                                                     '<YOUR_EMAIL_ADDRESS>');
      
      Copy
    3. データベース na_finance_db とウェアハウス na_finance_wh を予算 na_finance_budget に追加します。

      CALL na_finance_budget!ADD_RESOURCE(
        SYSTEM$REFERENCE('database', 'na_finance_db', 'SESSION', 'applybudget'));
      
      CALL na_finance_budget!ADD_RESOURCE(
        SYSTEM$REFERENCE('warehouse', 'na_finance_wh', 'SESSION', 'applybudget'));
      
      Copy
  3. 前の手順で作成したカスタムロールにインスタンスロールを付与します。

    1. budget_admin ロールに必要なロールと権限を付与して、 budget_admin ロールがカスタム予算 na_finance_budget を変更および監視できるようにします。

      USE ROLE budget_owner;
      
      GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.na_finance_budget!ADMIN
        TO ROLE budget_admin;
      
      Copy
    2. budget_monitor ロールがカスタム予算 na_finance_budget を監視できるように、 VIEWER インスタンスロールを budget_monitor ロールに付与します。

      USE ROLE budget_owner;
      
      GRANT SNOWFLAKE.CORE.BUDGET ROLE budgets_db.budgets_schema.na_finance_budget!VIEWER
        TO ROLE budget_monitor;
      
      Copy

このセクションでは、カスタム予算を作成し、監視する予算のオブジェクトを追加し、予算通知を受け取るメールアドレスを設定します。

クレジット使用状況のモニタリング

アカウント予算の有効化、カスタム予算の作成、アカウント予算とカスタム予算の両方を監視および管理するためのカスタムロールの作成は、チュートリアルのすべてのステップを完了しました。予算のクレジット使用状況データを入力するには時間がかかります。

予算はサーバーレスタスクを使用して、アカウント内の予算のクレジット使用状況を収集します。アカウント予算を有効にするか、カスタム予算を作成すると、サーバーレスタスクが実行されるまでしばらく時間がかかります。クレジット使用状況データが利用可能になった後、 Snowsight を使って予算のクレジット使用状況を監視することができます。

利用データが利用可能になった後にクレジット使用状況を監視するには、以下のステップを使用します。

前のステップで作成した account_budget_monitor ロールを使用し、以下のステートメントを実行して過去1週間のアカウント予算の支出履歴を表示します。

USE ROLE account_budget_monitor;

CALL snowflake.local.account_root_budget!GET_SPENDING_HISTORY(
  TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
  TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Copy

サービスの種類別に支出履歴を監視できます。過去1週間のアカウント予算の検索最適化サーバーレス機能の支出履歴を表示するには、次のステートメントを実行します。

USE ROLE account_budget_monitor;

CALL snowflake.local.account_root_budget!GET_SERVICE_TYPE_USAGE(
   SERVICE_TYPE => 'SEARCH_OPTIMIZATION',
   TIME_DEPART => 'day',
   USER_TIMEZONE => 'UTC',
   TIME_LOWER_BOUND => DATEADD('day', -7, CURRENT_TIMESTAMP()),
   TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Copy

budget_monitor ロールを使用して、カスタム予算 na_finance_budget の過去1週間の支出履歴を表示します。

USE ROLE budget_monitor;

CALL budgets_db.budgets_schema.na_finance_budget!GET_SPENDING_HISTORY(
  TIME_LOWER_BOUND => DATEADD('days', -7, CURRENT_TIMESTAMP()),
  TIME_UPPER_BOUND => CURRENT_TIMESTAMP()
);
Copy

クリーンアップ、まとめ、追加リソース

おめでとうございます。このチュートリアルを修了しました。

クレジット使用状況がアカウント予算とカスタム予算に入力された後に、 Snowsightを使用した予算のモニター をご参照ください。

概要と重要なポイント

まとめると、以下の方法を学習しました。

  • 予算を管理および監視するためのカスタムロールを作成します。

    カスタムロールを使用すると、アカウント管理者以外のユーザーが予算のクレジット使用状況を監視したり、予算設定を変更したりできるようになります。詳細については、 Budgetのロールと権限 をご参照ください。

  • カスタム予算にオブジェクトを追加するために必要な権限を付与します。

    カスタム予算からオブジェクトを追加または削除するには、 APPLYBUDGET 権限をオブジェクトに付与する必要があります。オブジェクトの追加や削除は、 参照 によって行われます。詳細については、 カスタム予算に対してオブジェクトを追加および削除する をご参照ください。

  • アカウント予算をアクティブ化および設定する

    アカウントのクレジット使用状況の監視を開始するには、アカウント予算を有効にして設定する必要があります。アカウント予算は、バックグラウンドメンテナンスタスクやサーバーレス機能を含むコンピューティングコストを監視し、現在の支出が月間支出上限を超えると予想される場合にメールで通知を送信します。

    詳細については、 アカウント予算のアクティブ化 をご参照ください。

  • カスタム予算を作成して、アカウント内の指定されたオブジェクトグループを監視します。

    カスタム予算は、アカウント内のオブジェクトグループのクレジット使用状況を監視します。カスタム予算は、バックグラウンドメンテナンスタスクやサーバーレス機能を含む、グループ内のオブジェクトの計算コストに対するクレジット使用状況を監視します。

    詳細については、 カスタム予算の作成 をご参照ください。

詳細については、次のトピックをご参照ください。

チュートリアルで作成したオブジェクトを削除する

クレジット使用状況を監視するために、チュートリアルで作成したカスタムロールとカスタム予算を維持することを選択できます。そうでない場合は、予算と関連するカスタムロールを削除します。

チュートリアルで作成したカスタム予算を削除するには、以下のステートメントを実行します。

USE ROLE budget_owner;

DROP SNOWFLAKE.CORE.BUDGET budgets_db.budgets_schema.na_finance_budget;
Copy

このチュートリアルで作成したオブジェクトを削除するには、以下のステートメントを実行します。

USE ROLE ACCOUNTADMIN;

DROP DATABASE na_finance_db;
DROP WAREHOUSE na_finance_wh;
DROP DATABASE budgets_db;
Copy

カスタム予算を管理および監視するために作成されたカスタムロールを削除するには、以下のステートメントを実行します。

USE ROLE ACCOUNTADMIN;

DROP ROLE budget_monitor;
DROP ROLE budget_admin;
DROP ROLE budget_owner;
Copy

Snowflakeは、アカウント予算を有効にしておくことをお勧めします。ただし、非アクティブ化する場合は、 アカウント予算を非アクティブ化する をご参照ください。

アカウント予算モニターおよび管理者ロールを削除するには、以下のステートメントを実行します。

USE ROLE ACCOUNTADMIN;

DROP ROLE account_budget_monitor;
DROP ROLE account_budget_admin;
Copy

通知統合を削除するには、以下のステートメントを実行します。

USE ROLE ACCOUNTADMIN;

DROP NOTIFICATION INTEGRATION budgets_notification_integration;
Copy

追加のリソース

次のリソースを使用して、予算とSnowflakeについて引き続き学習しましょう。