자습서: 예산 시작하기

소개

이 자습서에서는 계정 예산을 설정하고 지정된 오브젝트 그룹을 모니터링하는 사용자 지정 예산을 만드는 방법을 통해 예산을 사용하여 계정 수준의 크레딧 사용을 모니터링하는 방법을 소개합니다.

예산을 사용하면 백그라운드 유지 관리 작업 및 서버리스 기능에 대한 크레딧 사용 등 지원되는 오브젝트의 컴퓨팅 비용에 대한 크레딧 사용을 모니터링할 수 있습니다. 예산을 사용하면 각 예산에 대한 월별 지출 한도를 설정하고 현재 지출이 월별 지출 한도를 초과할 것으로 예상되면 알림 이메일을 받게 됩니다.

이 자습서는 Snowsight 의 워크시트를 사용하거나 SnowSQL 같은 CLI 클라이언트를 사용하여 완료할 수 있습니다. 이 자습서의 일부는 Snowsight 를 사용하여 완료할 수 있습니다.

이 자습서를 마치면 다음 작업을 수행하는 방법을 배우게 됩니다.

  • 예산을 모니터링하고 관리하기 위한 사용자 지정 역할을 만듭니다.

  • 사용자 지정 예산에 오브젝트를 추가하는 데 필요한 권한을 부여합니다.

  • 계정 예산을 활성화하고 설정합니다.

  • 사용자 지정 예산을 만들고 여기에 오브젝트를 추가합니다.

전제 조건

이 자습서를 완료하려면 다음과 같은 필수 조건이 필요합니다.

  • 이 자습서에 사용된 역할을 생성하려면 ACCOUNTADMIN 역할을 사용할 수 있어야 합니다.

  • 이메일 주소를 확인 해야 합니다. 검증된 이메일 주소만 예산 알림 목록에 추가할 수 있습니다.

알림 통합 만들기

Budgets는 알림 통합을 사용하여 현재 크레딧 사용이 월별 지출 한도를 초과할 것으로 예상될 때 알림 이메일을 보냅니다. 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 권한을 부여합니다. 이 권한은 Budgets에서 알림 통합을 사용하여 이메일을 보내는 데 필요합니다.

    다음 문을 실행하여 알림 통합에 대한 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. 스키마 budgets_db.budgets_schema 에서 사용자 지정 예산을 생성하는 데 필요한 역할과 권한이 있는 사용자 지정 역할 budget_owner 를 생성합니다.

    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. 사용자 지정 예산을 관리하고 모니터링하기 위해 두 가지 사용자 지정 역할을 만듭니다. 이러한 역할에는 사용자 지정 예산이 생성된 후 자습서에서 나중에 추가 권한이 부여됩니다. 사용자 지정 역할을 만들려면 다음 단계를 따르십시오.

    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 권한도 부여했습니다. 이제 예산을 활성화하고, 만들고, 설정할 준비가 되었습니다.

계정 예산 활성화 및 설정

계정 예산은 백그라운드 유지 관리 작업(예: 자동 클러스터링) 및 서버리스 기능을 포함하여 계정에서 지원되는 모든 예산 오브젝트의 컴퓨팅 비용에 대한 크레딧 사용을 모니터링합니다. 크레딧 사용 모니터링을 시작하려면 먼저 계정 예산을 활성화해야 합니다. 활성화가 완료되면 해당 계정의 월 지출 한도와 알림 수신자 이메일 목록을 설정할 수 있습니다. 현재 크레딧 사용이 월 지출 한도를 초과할 것으로 예상되면 Budgets가 알림 이메일을 보냅니다.

다음 단계에 따라 계정 예산을 활성화하고 설정합니다.

  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_budget 예산에 데이터베이스 na_finance_db 및 웨어하우스 na_finance_wh 를 추가합니다:

      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 역할에 VIEWER 인스턴스 역할을 부여하여 budget_monitor 역할이 사용자 지정 예산 na_finance_budget 을 모니터링할 수 있도록 합니다.

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

이 섹션에서는 사용자 지정 예산을 만들고, 예산에서 모니터링할 오브젝트를 추가하고, 예산 알림을 받을 이메일 주소를 설정했습니다.

크레딧 사용 모니터링

자습서의 모든 단계를 완료하여 계정 예산을 활성화하고, 사용자 지정 예산을 만들고, 계정과 사용자 지정 예산을 모니터링하고 관리하기 위한 사용자 지정 역할을 만들었습니다. 예산에 대한 크레딧 사용 데이터를 입력하는 데는 다소 시간이 걸립니다.

Budgets는 서버리스 작업을 사용하여 계정의 Budgets에 대한 크레딧 사용 데이터를 수집합니다. 계정 예산을 활성화하거나 사용자 지정 예산을 생성한 후에는 서버리스 작업을 실행하는 데 시간이 걸립니다. 크레딧 사용량 데이터를 사용할 수 있게 되면 Snowsight 를 사용하여 예산의 크레딧 사용을 모니터링할 수 있습니다.

사용량 데이터가 제공된 후에 크레딧 사용을 모니터링하려면 다음 단계를 따르십시오.

이전 단계에서 생성한 account_budget_monitor 역할을 사용해 다음 문을 실행하여 지난 한 주 동안의 계정 예산 지출 기록을 확인합니다.

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

서비스 유형별로 지출 기록을 모니터링할 수 있습니다. 지난주 계정 예산에 대한 검색 최적화 서버리스 기능에 대한 지출 기록을 보려면 다음 명령문을 실행합니다.

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 의 지난 주 지출 기록을 확인합니다.

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를 사용하여 예산 모니터링하기 섹션을 참조하십시오.

요약 및 주요 사항

요약하면, 다음 방법에 대해 배웠습니다.

  • 예산을 관리하고 모니터링하기 위한 사용자 지정 역할을 만듭니다.

    사용자 지정 역할을 통해 계정 관리자가 아닌 관리자도 예산에 대한 크레딧 사용을 모니터링하고 예산 설정을 수정할 수 있습니다. 자세한 내용은 예산 역할 및 권한 섹션을 참조하십시오.

  • 사용자 지정 예산에 오브젝트를 추가하는 데 필요한 권한을 부여합니다.

    사용자 지정 예산에서 오브젝트를 추가하거나 제거하려면 해당 오브젝트에 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에 대해 계속 알아보십시오.