

# 트리거를 사용하여 작업 및 크롤러 시작
<a name="trigger-job"></a>

AWS Glue에서는 트리거라는 Data Catalog 객체를 생성할 수 있습니다. 이 객체를 사용하면 하나 이상의 크롤러 또는 추출, 변환, 로드 작업을 수동 또는 자동으로 시작할 수 있습니다. 트리거를 사용하여 종속 작업 및 크롤러 체인을 설계할 수 있습니다.

**참고**  
*워크플로우*를 정의하여 동일한 작업을 수행할 수 있습니다. 워크플로우는 복잡한 다중 작업 ETL 작업을 생성하는 데 권장됩니다. 자세한 내용은 [AWS Glue에서 블루프린트 및 워크플로를 사용하여 복잡한 ETL 활동 수행](orchestrate-using-workflows.md) 섹션을 참조하세요.

**Topics**
+ [AWS Glue 트리거](about-triggers.md)
+ [트리거 추가](console-triggers.md)
+ [트리거 활성화 및 비활성화](activate-triggers.md)

# AWS Glue 트리거
<a name="about-triggers"></a>

트리거가 *실행*되면 지정된 작업 및 크롤러를 시작할 수 있습니다. 트리거는 일정에 따라 또는 이벤트 조합을 기반으로 요청 시 실행됩니다.

**참고**  
단일 트리거로 2개의 크롤러만 활성화할 수 있습니다. 여러 개의 데이터 스토어를 크롤링하려면 여러 크롤러를 동시에 실행하지 말고 크롤러마다 각각 여러 개의 소스를 사용합니다.

트리거는 여러 상태 중 하나에 존재할 수 있습니다. 트리거는 `CREATED`, `ACTIVATED` 또는 `DEACTIVATED`입니다. 일시적 상태(예: `ACTIVATING`)도 있습니다. 트리거 실행을 일시적으로 중지하려면 비활성화할 수 있습니다. 그런 다음 나중에 다시 활성화할 수 있습니다.

트리거에는 다음 세 가지 유형이 있습니다.

**예약됨**  
`cron` 기반의 시간 기반 트리거  
일정에 따라 일련의 작업 또는 크롤러에 대한 트리거를 생성할 수 있습니다. 작업 또는 크롤러가 실행되는 빈도, 실행되는 요일 및 실행되는 시간과 같은 제약 조건을 지정할 수 있습니다. 이 제약 조건은 `cron`을 기반으로 합니다. 트리거를 위한 일정을 설정하고자 한다면 cron의 기능 및 제한을 고려해야 합니다. 예를 들어, 매월 31일에 크롤러를 실행하고자 한다면 매월 31일이 없다는 점을 유의하기 바랍니다. Cron에 대한 자세한 내용은 [작업 및 크롤러를 위한 시간 기반 일정](monitor-data-warehouse-schedule.md) 섹션을 참조하세요.

**조건**  
이전 작업이나 크롤러 또는 여러 작업이나 크롤러가 조건 목록을 만족할 때 실행되는 트리거입니다.  
 조건부 트리거를 생성할 때 감시할 작업 목록과 크롤러 목록을 지정합니다. 감시한 각 작업 또는 크롤러에 대해 감시할 상태(예: 성공, 실패, 시간 초과 등)를 지정합니다. 감시한 작업 또는 크롤러가 지정된 상태로 종료되면 트리거가 실행됩니다. 감시한 이벤트 중 일부 또는 전부가 발생할 때 트리거가 실행되도록 구성할 수 있습니다.  
예를 들어 작업 J1과 작업 J2가 모두 성공적으로 완료되면 작업 J3을 시작하도록 트리거 T1을 구성하고 작업 J1 또는 작업 J2 중 하나가 실패할 경우 작업 J4를 시작하도록 또 다른 트리거 T2를 구성할 수 있습니다.  
다음 표에는 트리거가 감시하는 작업 및 크롤러 완료 상태(이벤트)가 나와 있습니다.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/about-triggers.html)

**온디맨드**  
활성화할 때 실행되는 트리거입니다. 온디맨드 트리거는 `ACTIVATED` 또는 `DEACTIVATED` 상태로 전환되지 않습니다. 항상 `CREATED` 상태로 유지됩니다.

트리거가 존재하는 즉시 실행할 수 있도록 플래그를 설정하여 생성할 때 예약된 트리거와 조건부 트리거를 활성화할 수 있습니다.

**중요**  
다른 작업 또는 크롤러 완료 시 실행되는 작업 또는 크롤러를 *종속*이라고 합니다. 종속 작업 또는 크롤러는 완료된 작업 또는 크롤러가 트리거에 의해 시작된 경우에만 시작됩니다. 종속 체인 내의 모든 작업 또는 크롤러는 단일 **예약됨** 또는 **온디맨드** 트리거의 하위 요소여야 합니다.

**트리거를 사용하여 작업 파라미터 전달**  
트리거는 시작하는 작업에 파라미터를 전달할 수 있습니다. 매개 변수에는 작업 인수, 시간 초과 값, 보안 구성 등이 포함됩니다. 트리거가 여러 작업을 시작하면 파라미터가 각 작업에 전달됩니다.

다음은 트리거에 의해 전달된 작업 인수에 대한 규칙입니다.
+ 키 - 값 쌍의 키가 기본 작업 인수와 일치하면 전달된 인수는 기본 인수를 재정의합니다. 키가 기본 인수와 일치하지 않으면 인수는 추가 인수로 작업에 전달됩니다.
+ 키 - 값 쌍의 키가 재정의할 수 없는 인수와 일치하면 전달된 인수는 무시됩니다.

자세한 내용은 AWS Glue API의 [트리거](aws-glue-api-jobs-trigger.md) 단원을 참조하십시오.

# 트리거 추가
<a name="console-triggers"></a>

AWS Glue 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS Glue API를 사용하여 트리거를 추가할 수 있습니다.

**트리거를 추가하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창의 **ETL** 아래에서 **트리거**를 선택합니다. **트리거 추가**를 선택합니다.

1. 다음 속성을 제공합니다.  
**명칭**  
트리거에 고유한 이름을 지정합니다.  
**트리거 유형**  
다음 중 하나를 지정하세요.  
   + **일정:** 트리거는 특정 빈도와 시간에 실행됩니다.
   + **작업 이벤트:** 조건부 트리거입니다. 목록의 작업 중 일부 또는 전부가 지정된 상태와 일치하면 트리거가 실행됩니다. 트리거가 실행되기 위해서는 감시한 작업이 트리거에 의해 시작되었어야 합니다. 어떤 작업을 선택하든지 하나의 작업 이벤트(완료 상태)만 감시할 수 있습니다.
   + **온디맨드:** 트리거가 활성화되면 실행됩니다.

1. 트리거 마법사를 완료합니다. [**검토(Review)**] 페이지에서 [**생성 시 트리거 사용(Enable trigger on creation)**]을 선택하여 [**일정(Schedule)**] 및 [**작업 이벤트(Job events)**](조건부) 트리거를 즉시 활성화할 수 있습니다.

**트리거를 추가하려면(AWS CLI)**
+ 다음과 유사한 명령을 입력합니다.

  ```
  aws glue create-trigger --name MyTrigger --type SCHEDULED --schedule  "cron(0 12 * * ? *)" --actions CrawlerName=MyCrawler --start-on-creation  
  ```

  이 명령은 라는 `MyTrigger`라는 스케줄 트리거를 생성합니다. 이 트리거는 매일 오후 12시(UTC)에 실행되며 `MyCrawler`라는 크롤러를 시작합니다. 트리거는 활성화된 상태로 생성됩니다.

자세한 내용은 [AWS Glue 트리거](about-triggers.md) 섹션을 참조하세요.

# 작업 및 크롤러를 위한 시간 기반 일정
<a name="monitor-data-warehouse-schedule"></a>

AWS Glue에서 작업 및 크롤러를 위한 시간 기반 일정을 정의합니다. 일정 정의는 Unix식 [cron](http://en.wikipedia.org/wiki/Cron) 구문을 사용합니다. [협정시계시(UTC)](http://en.wikipedia.org/wiki/Coordinated_Universal_Time)의 시간을 지정항고 일정을 위한 최소한의 정확도는 5분입니다.

일정을 사용하여 실행되도록 작업 및 크롤러 구성에 대한 자세한 내용은 [트리거를 사용하여 작업 및 크롤러 시작](trigger-job.md) 섹션을 참조하세요.

## cron 표현식
<a name="CronExpressions"></a>

cron 표현식에는 각각 공백으로 구분되는 필수 필드 6개가 있습니다.

**구문**

```
cron(Minutes Hours Day-of-month Month Day-of-week Year)
```


| **필드** | **값** | **와일드카드** | 
| --- | --- | --- | 
|  Minutes  |  0\$159  |  , - \$1 /  | 
|  Hours  |  0\$123  |  , - \$1 /  | 
|  Day-of-month  |  1\$131  |  , - \$1 ? / L W  | 
|  월  |  1\$112 또는 JAN-DEC  |  , - \$1 /  | 
|  요일  |  1\$17 또는 SUN\$1SAT  |  , - \$1 ? / L  | 
|  연도  |  1970\$12199  |  , - \$1 /  | 

**와일드카드**
+ **,**(쉼표) 와일드카드는 추가 값을 포함합니다. `Month` 필드에서 `JAN,FEB,MAR`는 1월, 2월, 3월을 포함한다는 의미입니다.
+ **-**(대시) 와일드카드는 범위를 지정합니다. `Day` 필드에서 1\$115는 지정된 달의 1일에서 15일까지 포함한다는 의미입니다.
+ **\$1**(별표) 와일드카드는 필드의 모든 값을 포함합니다. `Hours` 필드에서 **\$1**는 모든 시간을 포함한다는 의미입니다.
+ **/**(슬래시) 와일드카드로 증분을 지정합니다. `Minutes` 필드에서 **1/10**을 입력하면 지정한 시간의 1분부터 시작해서 매 10분 간격(예를 들어, 11분, 21분, 31분 등)을 지정할 수 있습니다.
+ **?**(물음표) 와일드카드는 어떤 한 가지나 다른 것을 지정합니다. `Day-of-month` 필드에 **7**을 입력하고 Day-of-week 필드에는 **?**을 입력하면 매월 7일이 무슨 요일이든 상관없이 7번째 되는 날을 지정한다는 의미입니다.
+ `Day-of-month` 또는 `Day-of-week` 필드에서 **L** 와일드카드는 해당 월 또는 주의 마지막 날을 지정합니다.
+ ] 필드에서는 **W** 와일드카드로 어떤 한 평일을 지정할 수 있습니다. `Day-of-month` `Day-of-month` 필드에서 `3W`를 해당 월의 세 번째 평일에 가장 가까운 날을 지정할 수 있습니다.

**Limits**
+ 동일한 cron 표현식에 `Day-of-month`와 `Day-of-week` 필드를 지정할 수 없습니다. 이 필드 중 하나에 값을 지정하는 경우에는 다른 필드에서 반드시 **?**(물음표)를 사용해야 합니다.
+ 5분보다 빠른 속도로 이어지는 cron 식은 지원되지 않습니다.

**예시**  
일정을 생성할 때는 다음과 같은 Cron 문자열을 사용할 수 있습니다.


| 분 | 시간 | 일 | 월 | 요일 | 연도 | 의미 | 
| --- | --- | --- | --- | --- | --- | --- | 
|  0  |  10  |  \$1  |  \$1  |  ?  |  \$1  |  매일 오전 10시(UTC)에 실행  | 
|  15  |  12  |  \$1  |  \$1  |  ?  |  \$1  |  매일 오후 12시 15분(UTC)에 실행  | 
|  0  |  18  |  ?  |  \$1  |  월-금  |  \$1  |  매주 월요일부터 금요일까지 오후 6시(UTC)에 실행  | 
|  0  |  8  |  1  |  \$1  |  ?  |  \$1  |  매월 1일 오전 8시(UTC)에 실행  | 
|  0/15  |  \$1  |  \$1  |  \$1  |  ?  |  \$1  |  15분마다 실행  | 
|  0/10  |  \$1  |  ?  |  \$1  |  월-금  |  \$1  |  월요일부터 금요일까지 10분마다 실행  | 
|  0/5  |  8\$117  |  ?  |  \$1  |  월-금  |  \$1  |  월요일부터 금요일까지 오전 8시부터 오후 5시 55분(UTC) 사이에 5분마다 실행  | 

예를 들어, 매일 12시 15분(UTC)에 실행하려면 다음과 같이 지정합니다.

```
cron(15 12 * * ? *)   
```

# 트리거 활성화 및 비활성화
<a name="activate-triggers"></a>

AWS Glue 콘솔, AWS Command Line Interface(AWS CLI) 또는 AWS Glue API를 사용하여 트리거를 활성화하거나 비활성화할 수 있습니다.

**트리거를 활성화 또는 비활성화하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)에서 AWS Glue 콘솔을 엽니다.

1. 탐색 창의 **ETL** 아래에서 **트리거**를 선택합니다.

1. 원하는 트리거 옆의 확인란을 선택하고 **작업** 메뉴에서 **트리거 활성화**를 선택하여 트리거를 활성화하거나 **트리거 **를 선택하여 트리거를 비활성화합니다.

**트리거를 활성화 또는 비활성화하려면(AWS CLI)**
+ 다음 명령 중 하나를 입력합니다.

  ```
  aws glue start-trigger --name MyTrigger  
  
  aws glue stop-trigger --name MyTrigger
  ```

  트리거를 시작하면 트리거가 활성화되고 트리거를 중지하면 트리거가 비활성화됩니다. 온디맨드 트리거를 활성화하면 즉시 실행됩니다.

자세한 내용은 [AWS Glue 트리거](about-triggers.md) 섹션을 참조하세요.