예산 알림

크레딧 사용액이 지출 한도를 초과할 것으로 예상될 때 알림을 받으려면 원하는 대상에게 알림이 전송될 수 있도록 예산을 설정해야 합니다. 다음 방법을 통해 알림을 받을 수 있습니다.

  • 이메일.

  • 클라우드 서비스(Amazon SNS, Azure Event Grid 또는 Google Cloud PubSub)에서 제공하는 큐로 푸시된 메시지.

  • Slack, Microsoft Teams 또는 PagerDuty 에 대한 웹훅 호출.

참고

이메일 알림은 AWS Simple Email Service(SES)를 사용하여 Snowflake의 Amazon Web Services(AWS) 배포를 통해 처리됩니다. AWS를 사용하여 보낸 이메일 메시지의 내용은 메시지 전달을 관리하기 위해 Snowflake에서 최대 30일간 보관할 수 있습니다. 이 기간이 지나면 메시지 내용이 삭제됩니다.

알림 전송 시점 제어

기본적으로, 예상되는 지출이 예산의 지출 한도를 10% 이상 초과하면 알림이 시작됩니다.

예산 지출 한도의 백분율인 알림 임계값을 정의하여 이 기본값을 재정의할 수 있습니다. Snowflake가 지출이 임계값을 초과할 것으로 예측하면 알림이 전송됩니다.

예를 들어, 예상 지출이 예산 지출 한도의 50%를 초과할 때 알림을 보내려는 경우를 가정해 보겠습니다. 계정 예산에 대해 이 알림 임계값을 설정하려면 다음 명령을 실행하세요.

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_THRESHOLD(50);
Copy

사용자 지정 예산에 대한 알림 임계값을 설정할 수도 있습니다.

알림 임계값을 기본값으로 재설정하려면 ``110``을 인자로 사용하여 <budget_name>!SET_NOTIFICATION_THRESHOLD 메서드를 호출하세요.

이메일 알림 설정하기

이메일 알림을 설정하려면 다음을 수행합니다.

  1. (선택 사항) 나만의 알림 통합을 사용하려면 알림 통합을 만들거나 사용할 기존 알림 통합을 선택합니다. 알림 통합을 통해 Snowflake는 서드 파티 시스템에 알림을 보낼 수 있습니다.

    1. TYPE = EMAIL 및 ALLOWED_RECIPIENTS 를 수신자의 확인된 이메일 주소 목록으로 설정하여 알림 통합을 생성합니다. 자세한 내용은 이메일 알림 통합 만들기알림을 받을 수 있는 이메일 주소 목록 제한 섹션을 참조하십시오.

      참고

      예산 알림을 위해 추가한 각 이메일 주소는 확인 과정을 거쳐야 합니다. 목록에 있는 이메일 주소가 확인되지 않으면 이메일 알림 설정이 실패합니다.

      예:

      CREATE NOTIFICATION INTEGRATION budgets_notification_integration
        TYPE = EMAIL
        ENABLED = TRUE
        ALLOWED_RECIPIENTS = ('costadmin@example.com','budgetadmin@example.com');
      
      Copy
    2. SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저를 호출하여 테스트 메시지를 전송하여 알림 통합이 예상대로 작동하는지 확인합니다.

      예를 들어, JSON 형식으로 테스트 메시지를 보낼 수 있습니다.

      CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
        SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
        SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
      );
      
      Copy
    3. SNOWFLAKE 애플리케이션으로의 알림 통합에 대한 USAGE 권한을 부여합니다. USAGE 권한을 사용하면 예산에서 알림 통합 기능을 사용하여 알림을 보낼 수 있습니다. 예:

      GRANT USAGE ON INTEGRATION budgets_notification_integration
        TO APPLICATION snowflake;
      
      Copy
  2. 알림을 받을 이메일 주소를 지정합니다. 사용할 알림 통합을 만들었거나 선택한 경우 알림 통합을 예산과 연결합니다.

    이렇게 하려면 <budget_name>!SET_EMAIL_NOTIFICATIONS 메서드를 호출하고 다음을 지정합니다.

    • 사용할 알림 통합 기능이 없는 경우 쉼표로 구분된 인증된 이메일 주소 목록을 전달하십시오. 예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
    • 사용할 알림 통합 기능이 있는 경우 해당 통합 기능의 이름과 쉼표로 구분된 인증된 이메일 주소 목록을 전달합니다. 예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

      CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy

      사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

      CALL my_budget!SET_EMAIL_NOTIFICATIONS(
        'budgets_notification_integration',
        'costadmin@example.com, budgetadmin@example.com'
      );
      
      Copy
  3. 알림 통합을 예산과 연결한 경우 <budget_name>!GET_NOTIFICATION_INTEGRATION_NAME 메서드를 호출하여 예산이 알림 통합과 연결되어 있는지 확인할 수 있습니다. 이 메서드는 예산과 연결된 이메일 알림 통합의 이름을 반환합니다.

    예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

    사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

    CALL my_budget!GET_NOTIFICATION_INTEGRATION_NAME();
    
    Copy

큐 알림 설정하기

큐 알림을 설정하려면 다음을 수행합니다.

  1. 알림 통합을 만들거나 사용할 기존 알림 통합을 선택합니다. 알림 통합을 통해 Snowflake는 서드 파티 시스템에 알림을 보낼 수 있습니다.

    TYPE=QUEUE, DIRECTION=OUTBOUND 및 클라우드 공급자에게 필수 추가 속성을 사용하여 알림 통합을 만듭니다. 자세한 내용은 다음 섹션을 참조하십시오.

    참고

    사용자의 계정은 클라우드 공급자 큐와 동일한 클라우드 플랫폼 에 있어야 합니다.

    예:

    CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration
      ENABLED = TRUE
      TYPE = QUEUE
      DIRECTION = OUTBOUND
      NOTIFICATION_PROVIDER = AWS_SNS
      AWS_SNS_TOPIC_ARN = '<ARN_for_my_SNS_topic>'
      AWS_SNS_ROLE_ARN = '<ARN_for_my_IAM_role>';
    
    Copy

    참고

    큐 및 웹훅 알림의 경우 최대 10개의 알림 통합을 예산과 연결할 수 있습니다.

  2. SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저를 호출하여 테스트 메시지를 전송하여 알림 통합이 예상대로 작동하는지 확인합니다.

    예를 들어, JSON 형식으로 테스트 메시지를 보낼 수 있습니다.

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{"name": "value"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. SNOWFLAKE 애플리케이션으로의 알림 통합에 대한 USAGE 권한을 부여합니다. USAGE 권한을 사용하면 예산에서 알림 통합 기능을 사용하여 알림을 보낼 수 있습니다. 예:

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. 알림 통합을 예산과 연결합니다. <budget_name>!ADD_NOTIFICATION_INTEGRATION 메서드를 호출하여 통합 이름을 전달합니다.

    예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  5. 알림 통합이 예산과 연결되어 있는지 확인합니다.

    <budget_name>!GET_NOTIFICATION_INTEGRATIONS 메서드를 호출하여 예산과 관련된 알림 통합 목록을 인쇄합니다.

    예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    이 메서드는 통합의 이름, 알림을 보내는 데 마지막으로 사용된 시간 및 추가된 날짜가 나열된 테이블을 출력합니다.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

웹훅 알림 설정하기

웹훅 알림을 설정하려면 다음을 수행합니다.

  1. 알림 통합을 만들거나 사용할 기존 알림 통합을 선택합니다. 알림 통합을 통해 Snowflake는 서드 파티 시스템에 알림을 보낼 수 있습니다.

    TYPE=WEBHOOK 및 웹훅에 필요한 추가 속성을 사용하여 알림 통합을 만듭니다. 자세한 내용은 웹훅 알림 보내기 섹션을 참조하십시오.

    알림 메시지는 JSON 형식이므로 이를 처리하도록 알림 통합을 구성해야 합니다. 예를 들어, 다음 문은 Slack 웹훅에 대한 시크릿 및 알림 통합을 만듭니다.

    CREATE OR REPLACE SECRET my_database.my_schema.slack_secret
      TYPE = GENERIC_STRING
      SECRET_STRING = '... secret in my Slack webhook URL ...';
    
    CREATE OR REPLACE NOTIFICATION INTEGRATION budgets_notification_integration
      ENABLED = TRUE
      TYPE = WEBHOOK
      WEBHOOK_URL = 'https://hooks.slack.com/services/SNOWFLAKE_WEBHOOK_SECRET'
      WEBHOOK_BODY_TEMPLATE='{"text": "SNOWFLAKE_WEBHOOK_MESSAGE"}'
      WEBHOOK_HEADERS=('Content-Type'='application/json')
      WEBHOOK_SECRET = slack_secret;
    
    Copy

    참고

    큐 및 웹훅 알림의 경우 최대 10개의 알림 통합을 예산과 연결할 수 있습니다.

  2. SYSTEM$SEND_SNOWFLAKE_NOTIFICATION 저장 프로시저를 호출하여 테스트 메시지를 전송하여 알림 통합이 예상대로 작동하는지 확인합니다.

    예를 들어, JSON 형식으로 테스트 메시지를 보낼 수 있습니다. JSON 문자열의 큰따옴표와 백슬래시는 반드시 이스케이프 처리해야 합니다.

    CALL SYSTEM$SEND_SNOWFLAKE_NOTIFICATION(
      SNOWFLAKE.NOTIFICATION.APPLICATION_JSON('{\\\"name\\\": \\\"value\\\"}'),
      SNOWFLAKE.NOTIFICATION.INTEGRATION('budgets_notification_integration')
    );
    
    Copy
  3. SNOWFLAKE 애플리케이션으로의 알림 통합에 대한 USAGE 권한을 부여합니다. USAGE 권한을 사용하면 예산에서 알림 통합 기능을 사용하여 알림을 보낼 수 있습니다. 예:

    GRANT USAGE ON INTEGRATION budgets_notification_integration
      TO APPLICATION snowflake;
    
    Copy
  4. 시크릿에 의존하는 웹훅 알림 통합을 사용하는 경우 SNOWFLAKE 애플리케이션에 다음 권한을 부여하십시오.

    • 그 시크릿에 대한 READ 권한.

    • 해당 시크릿이 포함된 스키마에 대한 USAGE 권한.

    • 해당 스키마를 포함하는 데이터베이스에 대한 USAGE 권한.

    예:

    GRANT READ ON SECRET slack_secret TO APPLICATION snowflake;
    GRANT USAGE ON SCHEMA my_schema TO APPLICATION snowflake;
    GRANT USAGE ON DATABASE my_database TO APPLICATION snowflake;
    
    Copy
  5. 알림 통합을 예산과 연결합니다.

    <budget_name>!ADD_NOTIFICATION_INTEGRATION 메서드를 호출하고 통합 이름을 전달합니다.

    예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy

    사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

    CALL my_budget!ADD_NOTIFICATION_INTEGRATION(
      'budgets_notification_integration',
    );
    
    Copy
  6. 알림 통합이 예산과 연결되어 있는지 확인합니다.

    <budget_name>!GET_NOTIFICATION_INTEGRATIONS 메서드를 호출하면 예산과 관련된 알림 통합 목록을 인쇄합니다.

    예를 들어, 계정 예산에 대한 알림을 구성하는 경우입니다.

    CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    사용자 지정 예산에 대한 알림을 구성하는 경우 사용자 지정 예산의 오브젝트에서 메서드를 호출하십시오. 예를 들어, my_budget 이라는 사용자 지정 예산을 생성한 경우:

    CALL my_budget!GET_NOTIFICATION_INTEGRATIONS();
    
    Copy

    이 메서드는 통합의 이름, 알림을 보내는 데 마지막으로 사용된 시간 및 추가된 날짜가 나열된 테이블을 출력합니다.

    +----------------------------------+------------------------+------------+
    |  INTEGRATION_NAME                | LAST_NOTIFICATION_TIME | ADDED_DATE |
    +----------------------------------+------------------------+------------+
    | budgets_notification_integration | -1                     | 2024-09-23 |
    +----------------------------------+------------------------+------------+
    

JSON 알림 메시지 해석하기

클라우드 공급자 큐 또는 웹훅으로 알림을 보내도록 예산을 구성하는 경우 알림 메시지에는 다음과 유사한 JSON 오브젝트가 포함됩니다.

{
  "account_name": "MY_ACCOUNT",
  "budget_name": "MY_BUDGET_NAME",
  "type": "BUDGET_LIMIT_WARNING",
  "limit": "100",
  "spending": "67.42",
  "spending_percent": "67.42",
  "spending_trend_percent": "130.63",
  "time_percent":"51.61"
}
Copy

JSON 오브젝트에는 다음과 같은 키-값 페어가 포함되어 있습니다.

설명

account_name

계정 이름.

budget_name

예산 이름. 계정 예산의 경우 이름은 ACCOUNT_ROOT_BUDGET 입니다.

type

알림 유형(예: BUDGET_LIMIT_WARNING).

limit

예산에 대해 설정한 지출 한도.

spending

이번 달의 크레딧 사용 금액.

spending_percent

이미 사용한 지출 한도의 비율(spending / limit).

spending_trend_percent

월말까지 지출 한도의 예상 사용 비율(spending_percent / time_percent * 100).

time_percent

해당 월이 경과한 시간의 백분율(예: 한 달이 절반이 지난 경우 50.00).

예산에 대한 알림 기록 확인

예산에 대한 알림 기록을 보려면 NOTIFICATION_HISTORY 함수를 호출하고 통합 이름을 필터링합니다. 예:

SELECT * FROM TABLE(
  INFORMATION_SCHEMA.NOTIFICATION_HISTORY(
    INTEGRATION_NAME=>'budgets_notification_integration'
  )
);
Copy

message_source 열에는 예산 알림을 나타내는 행에 대한 BUDGET 이 포함됩니다.

예산에 대한 알림 비활성화하기

예산에 대한 알림을 비활성화하려면 SET_NOTIFICATION_MUTE_FLAG 메서드를 호출하고 TRUE 를 인자로 전달합니다. 예:

CALL SNOWFLAKE.LOCAL.ACCOUNT_ROOT_BUDGET!SET_NOTIFICATION_MUTE_FLAG(TRUE);
Copy

예산에서 알림 통합 제거하기

예산에서 알림 통합을 제거하려면 <budget_name>!REMOVE_NOTIFICATION_INTEGRATION 메서드를 호출하여 통합 이름을 전달합니다. 예:

CALL my_budget!REMOVE_NOTIFICATION_INTEGRATION(
  'budgets_notification_integration',
);
Copy