작업 소개

작업은 사용자 정의 함수를 사용하여 비즈니스 프로세스를 자동화하고 일정을 정합니다. 단일 작업으로 데이터 파이프라인에서 간단한 함수부터 복잡한 함수까지 수행할 수 있습니다. 작업 그래프 를 사용하면 여러 작업을 조합하여 복잡한 사용 사례를 처리하는 데이터 파이프라인을 만들 수 있습니다. 또한 작업을 테이블 스트림 과 결합하여 최근 변경된 데이터를 처리하는 연속 ELT 워크플로를 만들 수도 있습니다.

작업은 다음 유형의 함수 중 하나를 실행할 수 있습니다.

  • 단일 SQL 문

  • 저장 프로시저 호출

  • Snowflake Scripting 을 사용한 프로시저 논리

트리거된 작업과 테이블 스트림 을 함께 사용하여 연속 ELT 워크플로를 통해 최근에 변경된 테이블 행을 처리할 수 있습니다.

작업을 독립적으로 사용하여 보고서 테이블에 행을 삽입하거나 병합하여 정기적인 보고서를 생성하거나 기타 정기적인 작업을 수행할 수도 있습니다. 작업으로 복잡한 비즈니스 프로세스를 실행하려면 작업 그래프 를 사용하여 여러 작업을 서로 연결하는 것이 좋습니다.

참고

테이블 스키마 진화 은 작업에서 지원되지 않습니다.

이 항목의 내용:

작업 생성 워크플로

이 섹션에서는 작업 설정 워크플로에 대한 개요를 제공합니다.

  1. 다음 단계에 따라 명령을 실행할 수 있는 작업 관리자 역할 을 만듭니다.

  2. CREATE TASK 사용하여 작업 만들기 작업은 기본적으로 일시 중단됩니다. 작업 생성에 대한 자세한 내용은 다음 섹션을 검토하십시오.

  3. 수동 작업 실행 을 사용하여 작업을 테스트합니다.

  4. ALTER TASK … RESUME를 실행하면 작업 정의에 지정된 매개 변수를 기반으로 작업이 실행됩니다. 작업 실행에 대한 자세한 내용은 다음 섹션을 검토하십시오.

컴퓨팅 리소스

작업에서는 SQL 코드 실행을 위한 컴퓨팅 리소스가 필요합니다. 개별 작업에 대해 다음 컴퓨팅 모델 중 하나를 선택할 수 있습니다.

  • 서버리스 컴퓨팅 모델

  • 사용자 관리 가상 웨어하우스

서버리스 작업

작업을 위한 서버리스 컴퓨팅 모델을 사용하면 사용자 관리 가상 웨어하우스 대신 Snowflake에서 관리하는 컴퓨팅 리소스에 의존할 수 있습니다. Snowflake는 각 워크로드에 필요한 서버리스 컴퓨팅 리소스의 크기를 자동으로 조정합니다. Snowflake는 동일한 작업의 가장 최근 실행에 대한 통계의 동적 분석을 기반으로 주어진 실행에 대한 서버리스 컴퓨팅 리소스의 이상적인 크기를 결정합니다. 서버리스 작업의 최대 컴퓨팅 크기는 XXLARGE 사용자 관리 가상 웨어하우스와 동일합니다. 계정의 여러 워크로드가 공통 컴퓨팅 리소스 세트를 공유합니다.

서버리스 컴퓨팅 모델을 사용하려면 CREATE TASK 를 사용하여 작업을 만들 때 WAREHOUSE 매개 변수를 생략합니다. CREATE TASK 명령을 실행하는 역할은 전역 EXECUTE MANAGED TASK 권한이 있어야 합니다. 작업의 액세스 제어 요구 사항에 대한 자세한 내용은 작업 보안 섹션을 참조하십시오.

서버리스 작업 실행 요금 청구는 컴퓨팅 리소스를 위해 가상 웨어하우스에 의존하는 작업의 표준 크레딧 소비 모델과 다릅니다. 자세한 내용은 작업 비용 섹션을 참조하십시오.

사용자 관리 작업

또는 작업을 생성할 때 기존 가상 웨어하우스를 지정하여 개별 작업에 대한 컴퓨팅 리소스를 관리할 수도 있습니다. 이 옵션을 사용하려면 작업에 의해 실행되는 SQL 동작에 알맞은 크기의 웨어하우스를 선택해야 합니다.

웨어하우스 크기 선택하기

기존 웨어하우스를 사용하여 개별 작업에 컴퓨팅 리소스를 제공하기로 선택한 경우 웨어하우스 고려 사항 에 설명된 모범 사례를 따르십시오. 작업의 컴퓨팅 요구 사항을 파악하려면 웨어하우스 크기와 클러스터링을 기반으로 다양한 웨어하우스를 사용하여 단일 작업의 평균 실행 시간 또는 작업 그래프 를 분석합니다. 또한 웨어하우스가 여러 프로세스에 의해 공유되는지 여부도 고려해야 합니다.

작업의 평균 실행 시간을 분석하려면 TASK_HISTORY Account Usage 뷰 를 쿼리합니다. 작업의 예정 시간과 완료 시간 간의 평균 차이는 작업의 예상 평균 실행 시간입니다. 이 차이에는 다른 프로세스가 웨어하우스에서 컴퓨팅 리소스를 사용하는 동안 작업이 큐에서 대기된 시간이 포함됩니다.

작업 그래프의 경우, 이전 작업의 실행이 끝나고 하위 작업이 시작되면 잠시 지연이 발생합니다. 동시에 실행되는 여러 하위 작업을 수용할 수 있을 만큼 충분히 큰 웨어하우스 크기를 선택합니다.

다음 다이어그램은 단일 작업이 20초 동안 대기한 다음 40초 동안 실행된 1분의 윈도우를 보여줍니다. 이는 작업이 예약된 후 처음 20초 동안 다른 프로세스가 웨어하우스 리소스를 사용했음을 의미합니다.

작업 배치 윈도우 예시

다음 다이어그램은 각 실행을 완료하는 데 평균 5분이 필요한 작업 그래프를 보여줍니다. 다이어그램은 완료할 작업 그래프의 2회 실행에 대한 창을 보여줍니다. 이 윈도우는 루트 작업이 시작되도록 예약된 시간부터 마지막 하위 작업의 실행이 완료될 때까지 계산됩니다.

이 예제에서, 작업 그래프가 실행되는 웨어하우스는 다른 동시 작업과 공유됩니다. 이러한 동시 작업은 작업 그래프의 각 작업 실행이 완료되고 다음 작업 실행이 시작되기 전에 사용 가능한 모든 리소스를 소비합니다. 결과적으로, 각 작업의 윈도우에는 다른 작업이 완료되고 컴퓨팅 리소스를 확보할 때까지 기다리는 동안 약간의 큐가 포함됩니다.

작업 그래프 배치 윈도우 예시

컴퓨팅 모델 선택 권장 사항

다음 표에서는 서버리스 작업과 사용자 관리 작업을 사용할 시점을 결정하는 데 도움이 될 수 있는 다양한 요소를 설명합니다.

카테고리

서버리스 작업

사용자 관리 작업

참고

동시 작업 워크로드의 수, 지속 기간, 예측 가능성

동시에 실행되는 작업이 너무 적거나 완료 속도가 너무 빨라 활용도가 낮은 웨어하우스에 권장됩니다.

비교적 안정적으로 실행되는 작업은 서버리스 작업에 적합한 후보입니다.

여러 동시 작업이 진행되고 활용도가 높은 웨어하우스에 권장됩니다.

컴퓨팅 리소스에 대한 부하가 예측할 수 없을 때도 권장됩니다. 자동 일시 중단 및 자동 재개 가 활성화된 멀티 클러스터 웨어하우스 는 크레딧 소비를 조정하는 데 도움이 될 수 있습니다.

서버리스 작업의 경우 Snowflake는 실제 컴퓨팅 리소스 사용량을 기준으로 계정에 대한 요금을 청구합니다.

사용자 관리 작업의 경우 웨어하우스에 대한 청구는 웨어하우스 규모를 기준으로 하며, 웨어하우스가 재개될 때마다 최소 60초 단위로 청구됩니다.

예약 간격

예약 간격 준수가 매우 중요할 때 권장됩니다.

독립 실행형 작업이나 예약된 작업 그래프의 실행이 간격을 초과하면 Snowflake가 컴퓨팅 리소스의 크기를 늘립니다.

예약 간격 준수가 덜 중요할 때 권장됩니다.

예약 간격 은 작업 그래프에서 독립 실행형 작업 또는 루트 작업의 예약 실행 간 시간 간격을 나타냅니다.

컴퓨팅 리소스를 늘리면 전부는 아니지만 일부 SQL 코드의 실행 시간이 단축될 수 있지만 배치 윈도우 내에서 작업 실행이 완료되지는 않습니다.

서버리스 작업 실행의 최대 크기는 XXLARGE 웨어하우스에 해당하는 크기입니다. 작업 워크로드에 더 큰 웨어하우스가 필요한 경우, 필요한 크기의 웨어하우스로 사용자 관리 작업을 만듭니다.

작업 실행하기

이 섹션에서는 작업을 예약하고 실행하는 다양한 방법, 작업 실패가 처리되는 방법, 작업 버전이 결정되는 방법에 대해 설명합니다.

작업 일정 예약

작업은 일반적으로 일정에 따라 실행됩니다. CREATE TASK 를 사용하여 작업을 생성할 때 일정을 정의할 수 있으며, 이후에는 ALTER TASK 를 사용하여 일정을 정의할 수 있습니다.

독립 실행형 작업 또는 작업 그래프의 루트 작업은 일반적으로 일정에 따라 실행됩니다. CREATE TASK 를 사용하여 작업을 생성할 때 일정을 정의할 수 있으며, 이후에는 ALTER TASK 를 사용하여 일정을 정의할 수 있습니다.

Snowflake는 일정에 따라 한 번에 하나의 작업 인스턴스만 실행되도록 보장합니다. 다음으로 예약된 실행 시간이 발생할 때 작업이 계속 실행 중이면 예약된 시간을 건너뜁니다.

Snowflake는 서버리스 작업을 위해 자동으로 컴퓨팅 리소스의 크기를 조정하고 확장합니다. 사용자 관리 작업의 경우 일정 내에서 워크로드를 완료할 수 있도록 작업에 적합한 웨어하우스 크기를 선택합니다. 자세한 내용은 웨어하우스 크기 선택하기 섹션을 참조하십시오.

작업 예약 및 일광 절약 시간제

작업 정의의 cron 식은 타임존 지정을 지원합니다. 표준 시간에서 일광 절약 시간제(또는 그 반대로)로 전환되는 날의 특정 시간에 예약된 작업에서는 예기치 않은 동작이 수행될 수 있습니다.

예:

  • 서머타임에서 표준시로 변경하는 동안 미국/로스앤젤레스 타임존(0 1 * * * America/Los_Angeles)에서 AM 1시에 시작하도록 예약된 작업은 두 번 실행됩니다. 1 AM 이후에 현지 시간으로 1:59:59 AM이 1:00:00 AM으로 바뀌면 다시 1 AM이 됩니다.

  • 표준 시간에서 일광 절약 시간제로 변경 기간 동안에는 현지 시간이 AM 1:59:59에서 AM 3:00:00로 변경되므로 미국/로스_앤젤레스 타임존(0 2 * * * America/Los_Angeles) AM 2시에 시작하도록 예약된 작업은 실행되지 않습니다.

일광 절약 시간제로 인한 예기치 않은 작업이 실행되지 않도록 하려면 다음을 고려하십시오.

  • 1 AM에서 3 AM 사이에서 실행되도록 작업을 예약하지 마십시오.

  • 시간 변경을 보정하기 위해 매년 두 번씩 1 AM에서 3 AM 사이에 예약된 작업의 cron 식을 수동으로 조정하십시오.

  • UTC와 같이 일광 절약 시간제를 적용하지 않는 시간 형식을 사용하십시오.

트리거된 작업

트리거 작업을 사용하면 정의된 스트림에 새 데이터가 있을 때만 작업을 실행할 수 있습니다. 이를 통해 예측할 수 없는 새 데이터가 있는 소스를 자주 폴링하는 일반적인 사용 사례가 간소화되고, 새 데이터가 있을 때 즉시 처리하여 지연 시간이 줄어듭니다.

트리거된 작업은 정의된 스트림에 데이터가 있고 작업 실행을 트리거할 때까지 컴퓨팅 리소스를 사용하지 않습니다.

트리거 작업에 대한 실행 조건은 다음과 같습니다.

  • 연관된 스트림이 추적하는 테이블의 데이터가 변경되는 경우.

  • 작업이 처음 재개될 때 스트림에 이미 있는 모든 데이터를 사용합니다.

  • 트리거된 작업은 스트림이 부실 해지는 것을 방지하기 위해 12시간마다 자동으로 상태 검사를 실행합니다. 스트림에 데이터가 없으면 Snowflake는 컴퓨팅 리소스를 사용하지 않고 실행을 건너뜁니다.

트리거된 작업 만들기

트리거된 작업을 새로 만들려면 SCHEDULE 매개 변수를 생략하고 WHEN 절에 대상 스트림을 포함시킵니다.

CREATE TASK triggeredTask  WAREHOUSE = my_warehouse
  WHEN system$stream_has_data('my_stream')
  AS
    INSERT INTO my_downstream_table
    SELECT * FROM my_stream;

ALTER TASK triggeredTask RESUME;
Copy

기존 작업을 예약된 작업에서 트리거된 작업으로 마이그레이션하려면 SCHEDULE 매개 변수를 설정 취소합니다. 기존 작업에는 WHEN 절에 정의된 대상 스트림이 있어야 합니다.

ALTER TASK task SUSPEND;
ALTER TASK task UNSET SCHEDULE;
ALTER TASK task RESUME;
Copy

트리거된 작업 매개 변수에 대한 세부 정보와 제한 사항은 다음과 같습니다.

  • 기본적으로 트리거 작업은 최대 30초마다 실행됩니다. USER_TASK_MINIMUM_TRIGGER_INTERVAL_IN_SECONDS 매개 변수를 수정하여 최대 15초마다 실행되도록 더 자주 실행할 수 있습니다.

  • 트리거된 작업 WHEN 조건은 데이터 변경을 기반으로 해야 합니다.

  • when 조건문은 ANDOR 문의 사용을 지원합니다. AND 조건으로 인해 정의된 스트림 중 하나에만 데이터가 있는 경우 작업을 건너뛸 수 있습니다.

트리거된 작업 고려 사항

트리거 작업의 관리, 구성 및 모니터링에 대한 세부 정보는 다음과 같습니다.

  • SHOW TASKSDESC TASK 출력에서 SCHEDULE 속성은 트리거된 작업에 대해 NULL 을 표시합니다.

  • information_schema 및 account_usage 스키마에서 task_history 뷰의 출력에서 SCHEDULED_FROM 열에 TRIGGER가 표시됩니다.

  • 스트림이 추적하고 있는 스트림이나 테이블이 삭제되거나 다시 생성되면 트리거된 작업은 자동으로 일시 중단됩니다. 테이블 또는 스트림이 다시 생성된 후 사용자는 ALTER TASK <task_name> RESUME 을 실행하여 트리거된 처리를 재개할 수 있습니다.

트리거된 작업 제한 사항

트리거 작업의 제한 사항은 다음과 같습니다.

  • 데이터 공유, 디렉터리 테이블, 외부 테이블 및 하이브리드 테이블의 스트림은 지원되지 않습니다.

  • 서버리스 작업은 지원되지 않습니다.

수동으로 작업 실행하기

EXECUTE TASK 명령은 수동으로 단일 작업 실행을 트리거합니다. 이 SQL 명령은 프로덕션에서 SQL 코드를 실행하도록 설정하기 전에 새 작업이나 수정된 작업을 테스트하는 데 유용합니다.

스크립트나 저장 프로시저에서 이 SQL 명령을 직접 호출할 수 있습니다. 또한 이 명령은 외부 데이터 파이프라인에서 작업 통합을 지원합니다. Snowflake 계정을 인증하고 SQL 작업을 승인할 수 있는 모든 서드 파티 서비스는 EXECUTE TASK 명령을 실행하여 작업을 실행할 수 있습니다.

작업 실행의 버전 관리

독립 실행형 작업을 처음 재개하거나 수동으로 실행하면 작업의 초기 버전이 설정됩니다. 독립 실행형 작업은 이 버전을 사용하여 실행됩니다. 작업이 일시 중단 및 수정된 후 독립 실행형 작업이 다시 시작되거나 수동으로 실행될 때 새 버전이 설정됩니다.

작업이 일시 중단되면 향후 예정된 모든 작업 실행이 취소되지만, 현재 실행 중인 작업은 현재 버전을 사용하여 계속 실행됩니다.

예를 들어, 작업이 일시 중단되었지만 이 작업의 예약된 실행이 이미 시작되었다고 가정하겠습니다. 작업의 소유자는 작업이 실행 중인 동안 작업에서 호출하는 SQL 코드를 수정합니다. 작업은 작업 실행을 시작할 때 최신 버전의 작업을 사용하여 정의에 있는 SQL 코드를 실행하고 실행합니다. 작업이 다시 시작되거나 수동으로 실행된 후의 새 작업 버전이 설정됩니다. 이 새 버전에는 작업에 대한 수정 사항이 포함됩니다.

작업 버전 기록을 검색하려면 SNOWFLAKE 공유 데이터베이스에서 TASK_VERSIONS Account Usage 뷰 를 쿼리하십시오.

실행 실패 후 작업 자동 일시 중단하기

선택적으로, 지정된 횟수의 연속 실행이 실패하거나 시간 초과되면 작업을 자동으로 일시 중단합니다. 이 기능을 사용하면 Snowflake 크레딧을 소비하지만 완료에 실행 완료에 실패하는 작업을 일시 중단함으로써 비용을 절감할 수 있습니다.

작업에 SUSPEND_TASK_AFTER_NUM_FAILURES = num 매개 변수를 설정합니다. 매개 변수를 0 보다 큰 값으로 설정하면 지정된 횟수의 연속 작업 실행이 실패하거나 시간 초과되면 작업이 자동으로 일시 중단됩니다.

매개 변수는 CREATE TASK 를 사용하여 작업을 생성할 때 설정하거나 나중에 ALTER TASK 를 사용하여 설정할 수 있습니다. 이 값은 Snowsight 에서 변경할 수도 있습니다.

SUSPEND_TASK_AFTER_NUM_FAILURES 매개 변수는 계정, 데이터베이스 또는 스키마 수준에서도 설정할 수 있습니다. 이 설정은 수정된 오브젝트에 포함된 모든 작업에 적용됩니다. 매개 변수를 더 낮은 수준에서 명시적으로 설정하면 더 높은 수준에서 설정된 매개 변수 값이 재정의됩니다.

실패한 작업 실행 자동 재시도

작업 그래프가 FAILED 상태에서 완료되면 Snowflake는 작업을 자동으로 다시 시도할 수 있습니다. 자동 작업 재시도는 기본적으로 비활성화됩니다. 이 기능을 사용하려면 TASK_AUTO_RETRY_ATTEMPTS 를 0보다 큰 값으로 설정합니다.

오류 알림을 사용하는 작업은 실패한 재시도 시도에 대해 알림을 보냅니다. 자세한 내용은 오류 알림을 보내도록 작업 구성하기 섹션을 참조하십시오.

계정, 데이터베이스 또는 스키마 수준에서 TASK_AUTO_RETRY_ATTEMPTS 매개 변수 값을 설정하면 다음 예약된 실행 중에 수정된 오브젝트에 포함된 작업에 변경 사항이 적용됩니다.

작업에 대한 세션 매개 변수 설정하기

작업이 실행되는 세션에 대한 세션 매개 변수를 설정할 수 있습니다. 이를 수행하려면 ALTER TASKSET session_parameter = value[, session_parameter = value ... ] 를 사용하거나 Snowsight 에서 작업을 편집하여 기존 작업을 수정하고 원하는 매개 변수 값을 설정합니다.

작업은 모든 세션 매개 변수를 지원합니다. 전체 목록은 매개 변수 를 참조하십시오. 작업은 계정 또는 사용자 매개 변수를 지원하지 않습니다.

계정의 작업 로드 내역 보기

SQL 또는 Snowsight 를 사용하여 계정의 작업 기록을 볼 수 있습니다. Snowsight 에서 작업 기록을 보려면 Snowsight 의 작업 및 작업 그래프 보기 섹션을 참조하십시오. 필요한 권한에 대한 정보는 작업 기록 뷰 섹션을 참조하십시오.

단일 작업의 실행 기록을 보는 방법은 다음과 같습니다.

SQL:

Snowflake Information SchemaTASK_HISTORY 테이블 함수를 쿼리합니다.

현재 예약되었거나 실행 중인 작업 그래프 실행에 대한 세부 정보를 보는 방법은 다음과 같습니다.

SQL:

Snowflake Information SchemaCURRENT_TASK_GRAPHS 테이블 함수를 쿼리합니다.

지난 60분 동안 성공, 실패 또는 취소된 작업 그래프 실행의 세부 정보를 보는 방법은 다음과 같습니다.

SQL:

Snowflake Information SchemaCOMPLETE_TASK_GRAPHS 테이블 함수를 쿼리합니다.

(Account Usage 에서) COMPLETE_TASK_GRAPHS 뷰 뷰를 쿼리합니다.

작업 비용

SQL 코드 실행을 위한 작업 수행과 관련된 비용은 작업을 위한 컴퓨팅 리소스의 출처에 따라 다릅니다.

사용자 관리 웨어하우스

Snowflake는 클라이언트 또는 Snowflake 웹 인터페이스에서 같은 SQL 문을 실행하기 위한 웨어하우스 사용량과 유사하게, 작업이 실행되는 동안의 웨어하우스 사용량을 기준으로 크레딧 사용 에 대해 계정에 요금을 청구합니다. 초당 크레딧 청구 및 웨어하우스 자동 일시 중단을 사용하여 더 큰 웨어하우스 크기로 시작한 후 작업 워크로드에 따라 크기를 조정할 수 있는 유연성이 제공됩니다.

서버리스 컴퓨팅 모델

Snowflake는 컴퓨팅 리소스 사용량에 따라 계정에 요금을 청구합니다. 요금은 컴퓨팅 시간 크레딧 사용으로 측정되는 클라우드 서비스 사용량을 포함한 총 리소스 사용량을 기준으로 계산됩니다. 컴퓨팅 시간 비용은 웨어하우스 크기와 쿼리 런타임에 따라 달라집니다. 자세한 내용은 서버리스 크레딧 사용 또는 쿼리: 총 작업 비용 섹션을 참조하십시오.

Snowflake는 작업 기록에서 작업 실행을 분석하여 서버리스 컴퓨팅 리소스의 올바른 크기와 수를 동적으로 결정합니다. Snowflake가 작업 실행을 관리하기 위해 리소스를 자동으로 확장하거나 축소하므로 작업 실행을 실행하는 데 드는 비용도 비례하여 증가합니다.

작업에서 사용하는 크레딧 수를 알아보려면 Snowflake 서비스 사용 테이블 에서 “서버리스 기능 크레딧 테이블”을 참조하십시오.

작업을 생성할 때 비용을 최적화하려면 다음 모범 사례를 고려하십시오.

  • SCHEDULE을 실행 빈도를 줄이도록 설정합니다.

  • 자동 일시 중단 및 자동 재시도 매개 변수를 사용하여 작업 실패로 인한 리소스 낭비를 방지합니다.

  • 서버리스 기능에 대한 예산을 생성하고 지출 한도에 대한 경고를 생성합니다. 자세한 내용은 예산을 사용하여 크레딧 사용 모니터링하기 섹션을 참조하십시오.

특정 작업에 대한 현재 크레딧 사용을 검색하려면 SERVERLESS_TASK_HISTORY 테이블 함수를 쿼리하십시오. 작업 소유자로 다음 문을 실행합니다. 여기서, <database_name> 은 작업이 포함된 데이터베이스이고 <task_name> 은 작업의 이름입니다.

SET num_credits = (SELECT SUM(credits_used)
  FROM TABLE(<database_name>.information_schema.serverless_task_history(
    date_range_start=>dateadd(D, -1, current_timestamp()),
    date_range_end=>dateadd(D, 1, current_timestamp()),
    task_name => '<task_name>')
    )
  );
Copy

모든 서버리스 작업에 대한 현재 크레딧 사용을 검색하려면 SERVERLESS_TASK_HISTORY 뷰를 쿼리하십시오. 계정 관리자로서 다음 문을 실행합니다.

SELECT start_time,
  end_time,
  task_id,
  task_name,
  credits_used,
  schema_id,
  schema_name,
  database_id,
  database_name
FROM snowflake.account_usage.serverless_task_history
ORDER BY start_time, task_id;
Copy

작업 보안

작업을 시작하려면 올바른 액세스 권한이 있어야 합니다. 이 섹션에서는 작업에 대한 액세스를 관리하는 방법을 설명합니다.

작업 그래프 소유권에 대한 정보는 작업 그래프 소유권 관리 섹션을 참조하십시오.

액세스 제어 권한

작업 만들기

작업을 만들려면 최소한으로 다음의 권한이 있는 역할이 필요합니다.

오브젝트

권한

참고

계정

EXECUTE MANAGED TASK

서버리스 컴퓨팅 리소스에 의존하는 작업에만 필요합니다.

데이터베이스

USAGE

스키마

USAGE, CREATE TASK

웨어하우스

USAGE

사용자 관리 웨어하우스를 사용하는 작업에만 필수입니다.

작업 실행하기

작업이 생성된 후 작업을 실행하려면 작업 소유자에게 다음 권한이 있어야 합니다.

오브젝트

권한

참고

계정

EXECUTE TASK

역할이 소유한 모든 작업을 실행하기 위해 필요합니다. 역할에 대한 EXECUTE TASK 권한을 취소하면 모든 후속 작업이 해당 역할에서 시작되지 않습니다.

계정

EXECUTE MANAGED TASK

서버리스 컴퓨팅 리소스에 의존하는 작업에만 필요합니다.

데이터베이스

USAGE

스키마

USAGE

작업

USAGE

웨어하우스

USAGE

사용자 관리 웨어하우스를 사용하는 작업에만 필수입니다.

또한 역할은 작업에서 실행되는 SQL 문을 실행하기 위해 필요한 권한이 있어야 합니다.

작업 기록 뷰

작업을 보려면 다음 권한 중 하나 이상이 있어야 합니다.

  • ACCOUNTADMIN 역할

  • 작업에 대한 OWNERSHIP 권한

  • 전역 MONITOR EXECUTION 권한

작업 다시 시작 또는 일시 중단하기

작업 소유자 외에도 작업에 대한 OPERATE 권한이 있는 역할은 작업을 일시 중단하거나 재개할 수 있습니다. 이 역할은 작업을 포함하는 데이터베이스 및 스키마에 대한 USAGE 권한이 있어야 합니다. 다른 권한은 필요하지 않습니다.

작업이 재개되면 Snowflake는 작업 소유자 역할이 작업 실행하기 에 나열된 권한이 있는지 확인합니다.

작업 권한을 관리하기 위한 사용자 지정 역할 만들기

사용자 지정 역할을 사용하면 Snowflake에서 각 계정이나 역할에 부여된 권한을 쉽게 관리할 수 있습니다. 사용자 지정 역할을 사용하여 모든 계정 또는 역할에 대한 권한을 변경하려면 사용자 지정 역할을 업데이트합니다. 또는 사용자 지정 역할을 제거하여 권한을 취소합니다.

작업을 생성하기 위한 사용자 지정 역할 만들기

Snowflake에서는 서버리스 작업과 사용자 관리 작업을 만들려면 서로 다른 권한이 필요합니다.

예를 들어, 사용자 지정 작업을 생성하려면 warehouse_task_creation 사용자 지정 역할을 만들고 해당 역할에 해당 역할이 작업을 생성할 수 있는 웨어하우스에 대한 CREATE TASK 및 USAGE 권한을 부여합니다.

USE SYSADMIN;

CREATE ROLE warehouse_task_creation
  COMMENT = 'This role can create user-managed tasks.';
Copy
USE ACCOUNTADMIN;

GRANT CREATE TASK
  ON SCHEMA schema1
  TO ROLE warehouse_task_creation;
Copy
GRANT USAGE
  ON WAREHOUSE warehouse1
  TO ROLE warehouse_task_creation;
Copy

서버리스 작업을 만들 수 있는 역할의 예제로, 이름이 serverless_task_creation 인 사용자 지정 역할을 만들고 이 역할에 CREATE TASK 권한과 계정 수준 EXECUTE MANAGED TASK 권한을 부여합니다.

USE SYSADMIN;

CREATE ROLE serverless_task_creation
  COMMENT = 'This role can create serverless tasks.';
Copy
USE ACCOUNTADMIN;

GRANT CREATE TASK
  ON SCHEMA schema1
  TO ROLE serverless_task_creation;
Copy
GRANT EXECUTE MANAGED TASK ON ACCOUNT
  TO ROLE serverless_task_creation;
Copy

작업을 관리하기 위한 사용자 지정 역할 만들기

사용자 지정 역할을 만들고 EXECUTE TASK 권한으로 이 사용자 지정 역할을 모든 작업 소유자 역할에 부여하여 자신의 작업을 변경할 수 있도록 합니다. 작업 소유자 역할이 작업을 실행할 수 있는 기능을 제거하려면 작업 소유자 역할에서 이 사용자 지정 역할을 취소합니다.

예를 들어, 사용자 지정 역할 이름 taskadmin 을 만들고 해당 역할에 EXECUTE TASK 권한을 부여합니다. taskadmin 역할을 myrole 이라는 작업 소유자 역할에 할당합니다.

USE ROLE securityadmin;

CREATE ROLE taskadmin;
Copy

새 역할에 계정 수준 권한을 부여하기 전에 활성 역할을 ACCOUNTADMIN으로 설정

USE ROLE accountadmin;

GRANT EXECUTE TASK, EXECUTE MANAGED TASK ON ACCOUNT TO ROLE taskadmin;
Copy

활성 역할을 SECURITYADMIN으로 설정하여 이 역할이 다른 역할에 역할을 부여할 수 있음을 표시

USE ROLE securityadmin;

GRANT ROLE taskadmin TO ROLE myrole;
Copy

사용자 지정 역할 및 역할 계층 구조 생성과 관련한 자세한 내용은 액세스 제어 구성하기 를 참조하십시오.

작업 소유자 역할 삭제

작업의 소유자 역할을 삭제하면 해당 작업의 소유권은 소유자 역할을 삭제한 역할로 이전됩니다. 작업의 소유권이 이전되면 해당 작업은 자동으로 일시 중지되고 새 소유자가 작업을 재개할 때까지 새로운 실행은 예약되지 않습니다.

작업이 실행되는 중에 역할을 삭제하면 작업 실행은 삭제된 역할에서 처리를 완료합니다.

시스템 서비스 작업 실행

Snowflake는 작업 소유자의 권한으로 작업을 실행하지만 작업 실행은 사용자와 연결되지 않습니다. 대신 각 실행은 시스템 서비스에 의해 실행됩니다. 작업은 특정 사용자와 분리되어 사용자가 삭제되거나 인증 문제로 인해 잠기거나 역할이 제거될 때 발생할 수 있는 복잡성을 방지합니다.

작업 실행은 사용자와 분리되기 때문에 작업 실행에 대한 쿼리 기록은 시스템 서비스와 연결됩니다. 따라서 이 서비스에는 사용자 자격 증명이 없으며, 어떤 개인도 이 서비스의 ID를 추정할 수 없습니다. 시스템 서비스에 대한 활동은 사용자의 계정으로 제한됩니다. 다른 작업에 적용되는 것과 동일한 암호화 보호 및 기타 보안 프로토콜이 이 서비스에 내장되어 있습니다.

작업 DDL

작업의 생성 및 관리를 지원하기 위해 Snowflake가 제공하는 특수 DDL 명령 세트는 다음과 같습니다.

또한, 공급자는 다음과 같은 표준 액세스 제어 DDL을 사용하여 ELT에 필요한 데이터베이스 오브젝트에 대한 액세스를 확인, 권한 부여 또는 취소할 수 있습니다.

작업 함수

작업에 대한 정보 검색을 지원하기 위해 Snowflake는 다음과 같은 SQL 기능 세트를 제공합니다.