Snowflake Intelligence 에 대한 리소스 예산

리소스 예산을 사용하면 계정에 대한 Snowflake Intelligence 지출을 모니터링하고 지출 임계값을 초과하면 조치를 취할 수 있습니다. 이를 통해 Snowflake Intelligence 에 대한 비용을 관리하고 지출이 구성된 한도를 초과하는 경우 액세스 취소와 같은 자동화된 작업을 수행합니다. 리소스 예산을 사용하면 전체 Snowflake Intelligence 서비스에 의해 집계된 수준에서 사용된 크레딧을 제어할 수 있습니다.

리소스 예산의 작동 방식

리소스 예산은 Snowflake의 태그 기반 비용 귀속 모델을 사용합니다. 태그를 생성하여 Snowflake Intelligence 오브젝트에 적용한 후 해당 태그를 예산과 연결합니다. Snowflake는 태그가 지정된 오브젝트의 크레딧 사용량을 추적하고 예산 한도에 대한 지출을 주기적으로 평가합니다. 리소스 예산은 전체 계정에서 집계된 Snowflake Intelligence 에 대한 지출을 제한하는 데 유용합니다.

Snowflake는 다음 흐름으로 리소스 예산을 적용합니다.

  1. 태그를 생성합니다.

  2. 태그를 Snowflake Intelligence 오브젝트에 적용합니다.

  3. 예산을 생성하고 지출을 추적할 태그를 지정합니다. 예산 생성의 일부로 월별 지출 한도도 크레딧으로 설정합니다.

  4. 지출이 예산의 구성된 임계값에 도달할 때 실행할 저장 프로시저를 추가합니다. 예를 들어, 80%에서 경고하기 위해 저장 프로시저를 호출하고 100%에서 액세스를 취소하기 위해 다른 저장 프로시저를 호출할 수 있습니다.

  5. Snowflake는 태그가 지정된 오브젝트의 크레딧 사용량을 추적합니다.

  6. 지출이 예산의 구성된 임계값(예: 80% 또는 100%)에 도달하면 Snowflake는 해당 임계값에 대해 정의된 저장 프로시저를 실행합니다.

Snowflake는 사용량을 계산하고, 임계값을 평가하며, 구성된 작업을 주기적으로 트리거합니다. 예산이 초과된 후 예산이 적용되는 데는 최대 8시간이 걸릴 수 있습니다.

태그를 생성합니다.

  1. 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. Snowflake 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';
    

리소스 예산 설정

Snowsight 또는 SQL 중 하나를 사용하여 예산을 생성하고 Snowflake 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)`에서 예산의 지출 한도에 10,000을 입력합니다.

  8. 지출을 더 자세히 살펴볼 수 있도록 :ref:`예산 새로 고침 간격<label-budgets_refresh_interval>`을 줄이려면 :ui:`Enable low latency budget`을 선택합니다.

  9. :ui:`Threshold`에서 알림 임계값으로 80을 입력합니다.

  10. :ui:`Notify`에서 알림 이메일을 받을 이메일 주소를 입력합니다.

  11. Next 을 선택합니다.

  12. :ui:`Budget scope`에서 Snowflake 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. Snowflake 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;
    

    중요

    role_name 및 해당 사용자가 다른 역할을 통해 Snowflake Intelligence 에 액세스할 수 없도록 합니다. 역할과 권한을 올바르게 구성하는 방법에 대한 지침은 사용자 권한 및 액세스 제어 섹션을 참조하세요.

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

액세스 복원

다음 예산 기간이 시작될 때 사용자가 Snowflake 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``로 설정하면 됩니다. 예를 들어, 이름이 ``alert_team``인 저장 프로시저를 호출하려면 예상 사용량이 예산 한도의 75%에 도달할 때 다음 명령을 실행합니다.

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

사용자 지정 작업 나열

  • 예산에 구성된 모든 사용자 지정 작업을 나열하려면 GET_CUSTOM_ACTIONS 메서드를 사용합니다.

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

자세한 내용은 예산에 대한 사용자 지정 작업 섹션을 참조하십시오.

사용량 모니터링

  • Snowflake 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

    Snowflake Intelligence 오브젝트의 고유 식별자

    이름

    Snowflake Intelligence 오브젝트의 표시 이름

    사용된 크레딧

    지정된 기간 동안 사용된 총 크레딧

    크레딧 클라우드

    사용된 클라우드 서비스 크레딧 수

예산 적용 대기 시간

예산 계산 및 임계값 적용은 주기적으로 수행됩니다.

  1. Snowflake는 태그가 지정된 Snowflake Intelligence 오브젝트에 대한 크레딧 사용량을 계산합니다.

  2. 시스템은 구성된 모든 임계값에 대해 지출을 평가합니다.

  3. 임계값에 도달하면 연결된 저장 프로시저가 실행됩니다.

  4. 사용량 대시보드가 최신 수치로 업데이트됩니다.

짧은 대기 시간 예산이 활성화된 경우 예산이 초과된 후 2시간 후에 예산이 적용됩니다. 그렇지 않으면 예산이 초과된 후 적용되기까지 최대 8시간이 걸릴 수 있습니다. :ref:`새로 고침 간격 <label-budgets_refresh_interval>`을 줄이려면 60분마다와 같이 예산 실행을 더 자주 트리거하면 됩니다.

경고

크레딧이 사용되는 시점과 예산 시스템이 임계값 위반을 감지하는 시점 사이에는 본질적으로 지연이 있습니다. 적용 간격 동안 지출은 작업이 실행되기 전에 구성된 임계값을 초과할 수 있습니다. 이에 따라 임계값을 계획합니다. 예를 들어, 경고를 80%로 설정하여 100% 동작이 트리거되기 전에 응답할 시간을 제공합니다.

제한 사항

Snowflake Intelligence 의 리소스 예산에는 다음 제한 사항이 적용됩니다.

  • 단일 팀 리소스만 해당: 리소스 예산은 전체 Snowflake Intelligence 오브젝트에 적용됩니다.

  • 적용 대기 시간: 예산 적용은 주기적으로 실행되며, 예산 초과 후 예산을 적용하는 데 최대 8시간이 걸릴 수 있습니다. 작업이 트리거되기 전의 간격 동안 지출이 임계값을 초과할 수 있습니다.

  • 역할 기반 액세스 취소: 임계값에서 액세스를 취소하려면 Snowflake Intelligence 오브젝트에 대한 전용 역할을 생성해야 합니다. 오브젝트에 대한 직접 차단 작업은 아직 지원되지 않습니다.

  • 월별 기간: 예산은 월별 주기로 작동합니다. 리소스 예산 기간은 구성할 수 없습니다.

  • 태그 대기 시간: 오브젝트의 태그를 변경할 때 태그를 사용하는 예산에 변경 사항이 반영되는 데 최대 8시간이 걸릴 수 있습니다. 자세한 내용은 사용자 지정 예산 섹션을 참조하십시오.