

# 크롤러 동작 사용자 지정
<a name="crawler-configuration"></a>

AWS Glue 크롤러을 구성하면 크롤러의 행태를 정의할 수 있는 몇 가지 옵션이 있습니다.
+ **증분 크롤링** - 테이블 스키마에 새 파티션만 추가하도록 증분 크롤링을 실행하는 크롤러를 구성할 수 있습니다.
+ **파티션 인덱스** - 크롤러는 기본적으로 Amazon S3 및 Delta Lake 대상에 대한 파티션 인덱스를 생성하여 특정 파티션을 효율적으로 조회합니다.
+ **Amazon S3 이벤트를 사용하여 크롤링 가속 **- 전체 Amazon S3 또는 데이터 카탈로그 대상을 나열하는 대신 이벤트를 트리거한 하위 폴더의 모든 파일을 나열하여 두 크롤링 간의 변경 사항을 식별하기 위해 Amazon S3 이벤트를 사용하도록 크롤러를 구성할 수 있습니다.
+ **스키마 변경 처리** - 크롤러가 기존 스키마에 스키마를 변경하지 못하게 할 수 있습니다. AWS Management Console 또는 AWS Glue API를 사용하여 크롤러가 특정 변화에 따라 어떤 절차를 밟는지 알아봅니다.
+ **여러 Amazon S3 경로에 대한 단일 스키마** - 데이터가 호환되는 경우 각 S3 경로에 대해 단일 스키마를 생성하도록 크롤러를 구성할 수 있습니다.
+ **테이블 위치 및 파티셔닝 수준** - 테이블 수준 크롤러 옵션을 사용하면 크롤러에 테이블의 위치와 파티션 생성 방법을 유연하게 알릴 수 있습니다.
+ **테이블 임계값** - 테이블 임계값을 지정하여 크롤러가 생성할 수 있는 최대 테이블 수를 지정할 수 있습니다.
+ **AWS Lake Formation 자격 증명** - Lake Formation 자격 증명을 사용하여 동일한 AWS 계정 또는 다른 AWS 계정 내의 기본 Amazon S3 위치가 있는 데이터 카탈로그 테이블이나 Amazon S3 데이터 스토어에 액세스하도록 크롤러를 구성할 수 있습니다.

 AWS Glue 콘솔을 사용하여 크롤러를 추가하는 방법에 대한 자세한 내용은 [크롤러 구성](define-crawler.md) 단원을 참조하십시오.

**Topics**
+ [새 파티션을 추가하기 위한 증분 크롤링 예약](incremental-crawls.md)
+ [파티션 인덱스 생성](crawler-configure-partition-indexes.md)
+ [크롤러가 기존 스키마를 변경하지 않도록 방지](crawler-schema-changes-prevent.md)
+ [각 Amazon S3 포함 경로에 대해 단일 스키마 생성](crawler-grouping-policy.md)
+ [테이블 위치와 파티션 수준 지정](crawler-table-level.md)
+ [크롤러가 생성할 수 있는 최대 테이블 수 지정](crawler-maximum-number-of-tables.md)
+ [Lake Formation 자격 증명을 사용하도록 크롤러 구성](crawler-lf-integ.md)
+ [Amazon S3 이벤트 알림을 사용하여 크롤링 가속화](crawler-s3-event-notifications.md)

# 새 파티션을 추가하기 위한 증분 크롤링 예약
<a name="incremental-crawls"></a>

테이블 스키마에 새 파티션만 추가하도록 증분 크롤링 AWS Glue 크롤러 실행을 구성할 수 있습니다. 크롤러가 처음 실행되면 전체 데이터 소스를 처리에 전체 크롤링을 수행하여 전체 스키마와 모든 기존 파티션을 AWS Glue Data Catalog에 기록합니다.

초기 전체 크롤링 이후의 후속 크롤링은 증분 방식으로 진행되며, 이때 크롤러는 이전 크롤링 이후에 새롭게 추가된 파티션만 식별하여 추가합니다. 이 접근 방식을 사용하면 크롤러가 더 이상 각 실행에 대해 전체 데이터 소스를 처리할 필요가 없고 대신 새 파티션에만 집중하므로 크롤링 시간이 단축됩니다.

**참고**  
증분 크롤링에서는 기존 파티션의 수정 또는 삭제를 감지하지 않습니다. 이 구성은 안정적인 스키마를 사용하는 데이터 소스에 가장 적합합니다. 한 번의 주요 스키마 변경이 발생한 경우 새 스키마를 정확하게 캡처하기 위해 전체 크롤링을 수행하도록 크롤러를 일시적으로 설정한 다음 증분 크롤링 모드로 다시 전환하는 것이 좋습니다.

다음 다이어그램은 증분 크롤링 설정을 사용하도록 설정한 경우 크롤러가 새로 추가된 Month=March 폴더만 탐지하여 카탈로그에 추가한다는 것을 보여줍니다.

![\[다음 다이어그램은 3월의 파일이 추가되었음을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawlers-s3-folders-new.png)


다음 단계에 따라 크롤러가 증분 크롤링을 수행하도록 업데이트하세요.

------
#### [ AWS Management Console ]

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

1. **데이터 카탈로그**에서 **크롤러**를 선택합니다.

1. 증분 크롤링 설정을 원하는 크롤러를 선택합니다.

1. **편집**을 선택합니다.

1. **2단계를 선택합니다. 데이터 소스 및 분류자를 선택합니다**.

1. 증분 크롤링 하려는 데이터 소스를 선택합니다.

1. **편집**을 선택합니다.

1. **후속 크롤러 실행**에서 **새 하위 폴더만 크롤링**을 선택합니다.

1. **업데이트**를 선택합니다.

크롤러 일정을 만들려면 [크롤러 일정 관리](schedule-crawler.md) 섹션을 참조하세요.

------
#### [ AWS CLI ]

```
aws glue update-crawler \
 --name myCrawler \
 --recrawl-policy RecrawlBehavior=CRAWL_NEW_FOLDERS_ONLY \
 --schema-change-policy UpdateBehavior=LOG,DeleteBehavior=LOG
```

------

**규칙 및 제한**  
이 옵션이 설정되어 있으면 크롤러를 편집할 때 Amazon S3 대상 데이터 스토어를 변경할 수 없습니다. 이 옵션은 특정 크롤러 구성 설정에 영향을 줍니다. 설정하면 크롤러의 업데이트 동작 및 삭제 동작이 `LOG`에 기록됩니다. 이는 다음을 의미합니다.
+ 스키마가 호환되지 않는 객체를 발견하면 크롤러는 데이터 카탈로그에 객체를 추가하지 않고 이 세부 정보를 CloudWatch Logs에 로그로 추가합니다.
+ 데이터 카탈로그의 삭제된 개체는 업데이트되지 않습니다.

# 파티션 인덱스 생성
<a name="crawler-configure-partition-indexes"></a>

데이터 카탈로그는 특정 파티션을 효율적으로 조회할 수 있도록 파티션 인덱스 생성을 지원합니다. 자세한 내용은 [파티션 인덱스 생성](https://docs.aws.amazon.com/glue/latest/dg/partition-indexes.html)을 참조하세요. AWS Glue 크롤러는 기본적으로 Amazon S3 및 Delta Lake 대상에 대한 파티션 인덱스를 생성합니다.

------
#### [ AWS Management Console ]

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

1. **데이터 카탈로그**에서 **크롤러**를 선택합니다.

1. 크롤러를 정의하면 **자동으로 파티션 인덱스 생성** 옵션이 **출력 및 예약 설정** 페이지의 **고급 옵션** 아래에서 기본적으로 활성화됩니다.

   이 옵션을 비활성화하려면 콘솔에서 **파티션 인덱스 자동 생성** 확인란의 선택을 취소하면 됩니다.

1. 크롤러 구성을 완료하고 **크롤러 생성**을 선택합니다.

------
#### [ AWS CLI ]

 AWS CLI를 사용하여 `configuration` 파라미터에서 `CreatePartitionIndex `를 설정하여 이 옵션을 비활성화할 수도 있습니다. 기본값은 true입니다.

```
aws glue update-crawler \
    --name myCrawler \
    --configuration '{"Version": 1.0, "CreatePartitionIndex": false }'
```

------

## 파티션 인덱스에 대한 사용 참고 사항
<a name="crawler-configure-partition-indexes-usage-notes"></a>
+ 크롤러에서 생성한 테이블에는 기본적으로 `partition_filtering.enabled` 변수가 없습니다. 자세한 내용은 [AWS Glue 파티션 인덱싱 및 필터링](https://docs.aws.amazon.com/athena/latest/ug/glue-best-practices.html#glue-best-practices-partition-index)을 참조하세요.
+ 암호화된 파티션에 대한 파티션 인덱스 생성은 지원되지 않습니다.

# 크롤러가 기존 스키마를 변경하지 않도록 방지
<a name="crawler-schema-changes-prevent"></a>

 AWS Glue 크롤러가 실행될 때 데이터 카탈로그에서 스키마를 변경하지 않도록 할 수 있습니다. 기본적으로 크롤러는 크롤링되는 데이터 소스와 일치하도록 데이터 카탈로그의 스키마를 업데이트합니다. 하지만 경우에 따라 크롤러가 기존 스키마를 수정하지 않도록 하는 것이 좋습니다. 특히 데이터를 변환하거나 정리한 후 원래 스키마가 변경 내용을 덮어쓰지 않도록 하려는 경우에는 더욱 그렇습니다.

 테이블 정의의 기존 스키마를 덮어쓰지 않도록 크롤러를 구성하려면 다음 단계를 따릅니다.

------
#### [  AWS Management Console  ]

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

1. **데이터 카탈로그**에서 **크롤러**를 선택합니다.

1. 목록에서 크롤러를 선택하고 **편집**을 선택합니다.

1. **4단계, 출력 및 예약 설정**을 선택합니다.

1. **고급 옵션**에서 **새 열만 추가** 또는 **변경 내용 무시를 선택하고 데이터 카탈로그의 테이블을 업데이트하지 않음**을 선택합니다.

1.  또한 구성 옵션을 **테이블의 메타데이터로 모든 신규 및 기존 파티션 업데이트**로 설정할 수 있습니다. 이렇게 하면 파티션 스키마가 테이블에서 상속되도록 설정됩니다.

1. **업데이트**를 선택합니다.

------
#### [ AWS CLI ]

다음 예제는 기존 스키마를 변경하지 않고 새 열만 추가하도록 크롤러를 구성하는 방법을 보여줍니다.

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
```

다음 예제는 기존 스키마를 변경하지 않고 새 열을 추가하지 않도록 크롤러를 구성하는 방법을 보여줍니다.

```
aws glue update-crawler \
  --name myCrawler \
  --schema-change-policy UpdateBehavior=LOG \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
```

------
#### [ API ]

크롤러가 실행될 때 테이블 스키마가 전혀 변하지 않도록 하려면 `LOG`에 스키마 변경 정책을 설정합니다.

API를 사용하여 크롤러를 구성하면 다음 파라미터를 설정합니다.
+ `SchemaChangePolicy` 구조의 `UpdateBehavior` 필드를 `LOG`로 설정합니다.
+  예를 들어, 크롤러 API의 다음 JSON 객체를 나타내는 문자열로 `Configuration` 필드를 설정합니다.

  ```
  {
     "Version": 1.0,
     "CrawlerOutput": {
        "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }
     }
  }
  ```

------

# 각 Amazon S3 포함 경로에 대해 단일 스키마 생성
<a name="crawler-grouping-policy"></a>

기본적으로 크롤러가 Amazon S3에 저장된 데이터용 테이블을 정의하면 데이터 호환성과 스키마 유사성을 모두 고려합니다. 고려되는 데이터 호환성 요인에는 데이터가 동일 포맷(예: JSON), 동일 압축 포맷(예: GZIP), Amazon S3 경로의 구조 및 기타 데이터 속성인지 여부가 포함됩니다. 스키마 유사성은 개별 Amazon S3 객체의 스키마가 얼마나 근접하게 유사한지를 측정합니다.

이 옵션의 이해를 돕기 위해 포함 경로가 `s3://amzn-s3-demo-bucket/table1/`인 크롤러를 정의한다고 가정해 보겠습니다. 이 크롤러는 실행 시 다음과 같은 특성을 가진 JSON 파일 두 개를 찾습니다.
+ **파일 1** – `S3://amzn-s3-demo-bucket/table1/year=2017/data1.json`
+ *파일 내용* – `{“A”: 1, “B”: 2}`
+ *스키마* – `A:int, B:int`
+ **파일 2** – `S3://amzn-s3-demo-bucket/table1/year=2018/data2.json`
+ *파일 내용* – `{“C”: 3, “D”: 4}`
+ *스키마* – `C: int, D: int`

스키마가 충분히 비슷하지 않으므로 기본적으로 크롤러가 `year_2017` 및 `year_2018`이라는 두 테이블을 생성합니다. 하지만 **Create a single schema for each S3 path(각 S3 경로에 대해 단일 스키마 생성)** 옵션을 선택했으며 데이터가 호환되는 경우, 크롤러가 한 개 테이블을 생성합니다. 이 테이블에는 `A:int,B:int,C:int,D:int` 및 `partitionKey` `year:string`이라는 스키마가 있습니다.

------
#### [ AWS Management Console ]

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

1. **데이터 카탈로그**에서 **크롤러**를 선택합니다.

1. 새 크롤러를 구성하는 경우 **출력 및 예약**의 고급 옵션에서 **각 S3 경로에 대해 단일 스키마 생성** 옵션을 선택합니다.

------
#### [ AWS CLI ]

가능하면 공통 테이블 정의에 호환 스키마를 결합(`CombineCompatibleSchemas`)하도록 크롤러를 구성할 수 있습니다. 이 옵션을 사용하는 경우 크롤러가 데이터 호환성을 고려하지만, 지정된 포함 경로에서 Amazon S3 객체를 평가할 때 특정 스키마의 유사성을 무시합니다.

AWS CLI를 사용하여 크롤러를 구성할 때는 다음 구성 옵션을 설정합니다.

```
aws glue update-crawler \
   --name myCrawler \
   --configuration '{"Version": 1.0, "Grouping": {"TableGroupingPolicy": "CombineCompatibleSchemas" }}'
```

------
#### [ API ]

API를 사용하여 크롤러를 구성할 때는 다음 구성 옵션을 설정합니다.

 예를 들어, 크롤러 API의 다음 JSON 객체를 나타내는 문자열로 `Configuration` 필드를 설정합니다.

```
{
   "Version": 1.0,
   "Grouping": {
      "TableGroupingPolicy": "CombineCompatibleSchemas" }
}
```

------

# 테이블 위치와 파티션 수준 지정
<a name="crawler-table-level"></a>

기본적으로 크롤러가 Amazon S3에 저장된 데이터에 대한 테이블을 정의할 때 크롤러는 스키마를 병합하고 최상위 테이블(`year=2019`)을 생성하려고 시도합니다. 경우에 따라 크롤러가 폴더 `month=Jan`에 대한 테이블을 생성할 것으로 예상할 수 있지만 대신 형제 폴더(`month=Mar`)가 동일한 테이블에 병합되었기 때문에 크롤러가 파티션을 생성합니다.

테이블 수준 크롤러 옵션을 사용하면 크롤러에 테이블의 위치와 파티션 생성 방법을 유연하게 알릴 수 있습니다. [**테이블 수준(Table level)**]을 지정하면 Amazon S3 버킷에서 해당 절대 수준으로 테이블이 생성됩니다.

![\[수준 2로 지정된 테이블 수준의 크롤러 그룹화\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-table-level1.jpg)


 콘솔에서 크롤러를 구성할 때 [**테이블 수준(Table level)**] 크롤러 옵션에 대한 값을 지정할 수 있습니다. 값은 테이블 위치(데이터 집합의 절대 수준)를 나타내는 양의 정수여야 합니다. 최상위 폴더의 수준은 1입니다. 예를 들어 경로 `mydataset/year/month/day/hour`의 경우 수준을 3으로 설정하면 `mydataset/year/month` 위치에 테이블이 생성됩니다.

------
#### [ AWS Management Console ]

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

1. **데이터 카탈로그**에서 **크롤러**를 선택합니다.

1. 크롤러를 구성할 때 **출력 및 예약 설정**의 **고급 옵션**에서 **테이블 수준**을 선택합니다.

![\[크롤러 구성에서 테이블 수준 지정\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-configuration-console.png)


------
#### [ AWS CLI ]

AWS CLI를 사용하여 크롤러를 구성하는 경우 예제 코드에 표시된 대로 `configuration` 파라미터를 설정합니다.

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "Grouping": { "TableLevelConfiguration": 2 }}'
```

------
#### [ API ]

API를 사용하여 크롤러를 구성하는 경우 다음 JSON 객체의 문자열 표현으로 `Configuration` 필드를 설정합니다. 예를 들면 다음과 같습니다.

```
configuration = jsonencode(
{
   "Version": 1.0,
   "Grouping": {
            TableLevelConfiguration = 2  
        }
})
```

------
#### [ CloudFormation ]

이 예제에서는 콘솔에서 사용 가능한 **테이블 레벨(Table level)** 옵션을 CloudFormation 템플릿 내에서 설정합니다.

```
"Configuration": "{
    \"Version\":1.0,
    \"Grouping\":{\"TableLevelConfiguration\":2}
}"
```

------

# 크롤러가 생성할 수 있는 최대 테이블 수 지정
<a name="crawler-maximum-number-of-tables"></a>

선택적으로 AWS Glue 콘솔 또는 AWS CLI를 통해 `TableThreshold`를 지정하여 크롤러가 생성할 수 있는 최대 테이블 수를 지정할 수 있습니다. 크롤링 중 크롤러가 탐지한 테이블이 이 입력 값보다 크면 크롤링이 실패하고 데이터 카탈로그에 데이터가 기록되지 않습니다.

이 파라미터는 크롤러에 의해 탐지되고 생성되는 테이블이 예상보다 훨씬 큰 경우에 유용합니다. 다음과 같은 여러 가지 이유가 있을 수 있습니다.
+ AWS Glue 작업을 사용하여 Amazon S3 위치를 채우면 폴더와 같은 수준에 빈 파일이 생길 수 있습니다. 이러한 경우 이 Amazon S3 위치에서 크롤러를 실행하면 파일 및 폴더가 동일한 수준에 있기 때문에 크롤러가 여러 테이블을 생성합니다.
+ `"TableGroupingPolicy": "CombineCompatibleSchemas"`를 설정하지 않으면 예상보다 많은 테이블이 생성될 수 있습니다.

`TableThreshold`를 0보다 큰 정수 값으로 지정합니다. 이 값은 크롤러별로 구성됩니다. 즉, 모든 크롤링에 대해 이 값이 고려됩니다. 예: 크롤러의 `TableThreshold` 값이 5로 설정되어 있습니다. 각 크롤링에서 AWS Glue는 탐지된 테이블 수를 이 테이블 임곗값(5)과 비교하여 탐지된 테이블 수가 5보다 작으면 테이블을 데이터 카탈로그에 쓰고 AWS Glue 그렇지 않으면 데이터 카탈로그에 쓰지 않고 크롤링에 실패합니다.

------
#### [ AWS Management Console ]

**AWS Management Console을 사용하여 `TableThreshold`를 설정하려면:**

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

1. 크롤러를 구성할 때 **출력 및 예약**에서 **최대 테이블 임계값**을 크롤러가 생성할 수 있는 테이블 수로 설정합니다.  
![\[Maximum table threshold(최대 테이블 임곗값) 파라미터가 표시된 AWS 콘솔의 Set output and scheduling(출력 및 예약 설정) 섹션.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-max-tables.png)

------
#### [ AWS CLI ]

AWS CLI를 사용하여 `TableThreshold`를 설정하려면:

```
aws glue update-crawler \
    --name myCrawler \
    --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": { "TableThreshold": 5 }}}'
```

------
#### [ API ]

API를 사용하여 `TableThreshold`를 설정하려면:

```
"{"Version":1.0,
"CrawlerOutput":
{"Tables":{"AddOrUpdateBehavior":"MergeNewColumns",
"TableThreshold":5}}}";
```

------

테이블 경로를 식별하고 데이터를 정리하는 데 도움이 되도록 오류 메시지가 기록됩니다. 다음은 테이블 수가 제공된 테이블 임곗값보다 커서 크롤러가 실패한 경우 계정의 예제 로그입니다.

```
Table Threshold value = 28, Tables detected - 29
```

CloudWatch에서는 탐지된 모든 테이블 위치를 INFO 메시지로 기록합니다. 오류가 실패 원인으로 기록됩니다.

```
ERROR com.amazonaws.services.glue.customerLogs.CustomerLogService - CustomerLogService received CustomerFacingException with message 
The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. Failing crawler without writing to Data Catalog.
com.amazonaws.services.glue.exceptions.CustomerFacingInternalException: The number of tables detected by crawler: 29 is greater than the table threshold value provided: 28. 
Failing crawler without writing to Data Catalog.
```

# Lake Formation 자격 증명을 사용하도록 크롤러 구성
<a name="crawler-lf-integ"></a>

AWS Lake Formation 자격 증명을 사용하여 동일한 AWS 계정 또는 다른 AWS 계정 내의 기본 Amazon S3 위치가 있는 데이터 카탈로그 테이블 또는 Amazon S3 데이터 스토어에 액세스하도록 크롤러를 구성할 수 있습니다. 크롤러와 데이터 카탈로그 테이블이 동일한 계정에 있는 경우 기존 데이터 카탈로그 테이블을 크롤러의 대상으로 구성할 수 있습니다. 현재 데이터 카탈로그 테이블을 크롤러의 대상으로 사용할 때 단일 카탈로그 테이블이 있는 단일 카탈로그 대상만 허용됩니다.

**참고**  
데이터 카탈로그 테이블을 크롤러 대상으로 정의할 때 데이터 카탈로그 테이블의 기본 위치가 Amazon S3 위치인지 확인합니다. Lake Formation 자격 증명을 사용하는 크롤러는 기본 Amazon S3 위치가 있는 데이터 카탈로그 대상만 지원합니다.

## 크롤러와 등록된 Amazon S3 위치 또는 데이터 카탈로그 테이블이 동일한 계정에 있는 경우 필요한 설정(계정 내 크롤링)
<a name="in-account-crawling"></a>

크롤러가 Lake Formation 자격 증명을 사용하여 데이터 스토어 또는 데이터 카탈로그 테이블에 액세스할 수 있도록 하려면 Lake Formation에 데이터 위치를 등록해야 합니다. 또한 크롤러의 IAM 역할에는 Amazon S3 버킷이 등록된 대상에서 데이터를 읽을 수 있는 권한이 있어야 합니다.

AWS Management Console 또는 AWS Command Line Interface(AWS CLI)를 사용하여 다음 구성 단계를 완료할 수 있습니다.

------
#### [ AWS Management Console ]

1. 크롤러 소스에 액세스하도록 크롤러를 구성하기 전에 데이터 스토어 또는 데이터 카탈로그의 데이터 위치를 Lake Formation에 등록합니다. Lake Formation 콘솔([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/))에서 크롤러가 정의된 AWS 계정에서 Amazon S3 위치를 데이터 레이크의 루트 위치로 등록합니다. 자세한 내용을 알아보려면 [Registering an Amazon S3 location](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html)(Amazon S3 위치 등록)을 참조하세요.

1. 크롤러가 Lake Formation의 대상에서 데이터를 읽을 수 있도록 크롤러 실행에 사용되는 IAM 역할에 **Data location**(데이터 위치) 권한을 부여합니다. 자세한 내용을 알아보려면 [Granting data location permissions (same account)](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html)(데이터 위치 권한 부여(동일한 계정))를 참조하세요.

1. 출력 데이터베이스로 지정된 데이터베이스에 크롤러 역할 액세스 권한(`Create` )을 부여합니다. 자세한 내용을 알아보려면 [Granting database permissions using the Lake Formation console and the named resource method](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html)(Lake Formation 콘솔 및 명명된 리소스 메서드를 사용하여 데이터베이스 권한 부여)를 참조하세요.

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))에서 크롤러에 대한 IAM 역할을 생성합니다. 역할에 `lakeformation:GetDataAccess` 정책을 추가합니다.

1. AWS Glue 콘솔([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/))에서 크롤러를 구성하는 동안 **Use Lake Formation credentials for crawling Amazon S3 data source**(Amazon S3 데이터 소스 크롤링에 Lake Formation 자격 증명 사용) 옵션을 선택합니다.
**참고**  
accountId 필드는 계정 내 크롤링의 선택 사항입니다.

------
#### [ AWS CLI ]

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111122223333"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

# 크롤러와 등록된 Amazon S3 위치가 다른 계정에 있는 경우 필요한 설정(크로스 계정 크롤링)
<a name="cross-account-crawling"></a>

크롤러가 Lake Formation 자격 증명을 사용하여 다른 계정의 데이터 스토어에 액세스할 수 있도록 하려면 먼저 Lake Formation에 Amazon S3 데이터 위치를 등록해야 합니다. 그리고 다음 단계에 따라 크롤러의 계정에 데이터 위치 권한을 부여합니다.

AWS Management Console 또는 AWS CLI를 사용하여 다음 단계를 완료할 수 있습니다.

------
#### [ AWS Management Console ]

1. Amazon S3 위치가 등록된 계정(계정 B)에서

   1. Lake Formation에 Amazon S3 경로를 등록합니다. 자세한 내용을 알아보려면 [Registering an Amazon S3 location](https://docs.aws.amazon.com/lake-formation/latest/dg/register-location.html)(Amazon S3 위치 등록)을 참조하세요.

   1.  크롤러가 실행될 계정(계정 A)에 **Data location**(데이터 위치) 권한을 부여합니다. 자세한 내용을 알아보려면 [Granting data location permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html)(데이터 위치 권한 부여)를 참조하세요.

   1. 기본 위치를 대상 Amazon S3 위치로 사용하여 Lake Formation에 빈 데이터베이스를 생성합니다. 자세한 내용을 알아보려면 [Creating a database](https://docs.aws.amazon.com/lake-formation/latest/dg/creating-database.html)(데이터베이스 생성)를 참조하세요.

   1. 계정 A(크롤러가 실행될 계정)에 이전 단계에서 생성한 데이터베이스에 대한 액세스 권한을 부여합니다. 자세한 내용을 알아보려면 [Granting database permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-database-permissions.html)(데이터베이스 권한 부여)를 참조하세요.

1. 크롤러가 생성되어 실행될 계정(계정 A)에서

   1.  AWS RAM 콘솔을 사용하여 외부 계정(계정 B)에서 공유된 데이터베이스를 수락합니다. 자세한 내용을 알아보려면 [AWS Resource Access Manager에서 리소스 공유 초대 수락](https://docs.aws.amazon.com/lake-formation/latest/dg/accepting-ram-invite.html)을 참조하세요.

   1.  크롤러에 대한 IAM 역할을 생성합니다. 역할에 `lakeformation:GetDataAccess` 정책을 추가합니다.

   1.  Lake Formation 콘솔([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/))에서 크롤러가 Lake Formation의 대상에서 데이터를 읽을 수 있도록 크롤러 실행에 사용되는 IAM 역할에 대상 Amazon S3 위치에 대한 **Data location**(데이터 위치) 권한을 부여합니다. 자세한 내용을 알아보려면 [Granting data location permissions](https://docs.aws.amazon.com/lake-formation/latest/dg/granting-location-permissions-local.html)(데이터 위치 권한 부여)를 참조하세요.

   1.  공유 데이터베이스에 리소스 링크를 생성합니다. 자세한 내용을 알아보려면 [Create a resource link](https://docs.aws.amazon.com/lake-formation/latest/dg/create-resource-link-database.html)(리소스 링크 만들기)를 참조하세요.

   1.  공유 데이터베이스 및 (`Describe`) 리소스 링크에 대한 크롤러 역할 액세스 권한(`Create`)을 부여합니다. 리소스 링크는 크롤러의 출력에 지정됩니다.

   1.  AWS Glue 콘솔([https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/))에서 크롤러를 구성하는 동안 **Use Lake Formation credentials for crawling Amazon S3 data source**(Amazon S3 데이터 소스 크롤링에 Lake Formation 자격 증명 사용) 옵션을 선택합니다.

      크로스 계정 크롤링의 경우 대상 Amazon S3 위치가 Lake Formation에 등록된 AWS 계정 ID를 지정합니다. 계정 내 크롤링의 경우 accountId 필드는 선택 사항입니다.  
![\[IAM role selection and Lake Formation configuration options for AWS Glue 크롤러 security settings.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/cross-account-crawler.png)

------
#### [ AWS CLI ]

```
aws glue --profile demo create-crawler --debug --cli-input-json '{
    "Name": "prod-test-crawler",
    "Role": "arn:aws:iam::111122223333:role/service-role/AWSGlueServiceRole-prod-test-run-role",
    "DatabaseName": "prod-run-db",
    "Description": "",
    "Targets": {
    "S3Targets":[
                {
                 "Path": "s3://amzn-s3-demo-bucket"
                }
                ]
                },
   "SchemaChangePolicy": {
      "UpdateBehavior": "LOG",
      "DeleteBehavior": "LOG"
  },
  "RecrawlPolicy": {
    "RecrawlBehavior": "CRAWL_EVERYTHING"
  },
  "LineageConfiguration": {
    "CrawlerLineageSettings": "DISABLE"
  },
  "LakeFormationConfiguration": {
    "UseLakeFormationCredentials": true,
    "AccountId": "111111111111"
  },
  "Configuration": {
           "Version": 1.0,
           "CrawlerOutput": {
             "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" },
             "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" }
           },
           "Grouping": { "TableGroupingPolicy": "CombineCompatibleSchemas" }
         },
  "CrawlerSecurityConfiguration": "",
  "Tags": {
    "KeyName": ""
  }
}'
```

------

**참고**  
Lake Formation 자격 증명을 사용하는 크롤러는 Amazon S3 및 데이터 카탈로그 대상에 대해서만 지원됩니다.
Lake Formation 자격 증명 벤딩을 사용하는 대상의 경우 기본 Amazon S3 위치가 동일한 버킷에 속해야 합니다. 예를 들어, 고객은 모든 대상 위치가 동일한 버킷(amzn-s3-demo-bucket1) 아래에 있는 한 여러 대상(s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket1/folder2)을 사용할 수 있습니다. 서로 다른 버킷(s3://amzn-s3-demo-bucket1/folder1, s3://amzn-s3-demo-bucket2/folder2)을 지정하는 것은 허용되지 않습니다.
현재 데이터 카탈로그 대상 크롤러의 경우 단일 카탈로그 테이블이 있는 단일 카탈로그 대상만 허용됩니다.

# Amazon S3 이벤트 알림을 사용하여 크롤링 가속화
<a name="crawler-s3-event-notifications"></a>

Amazon S3 또는 데이터 카탈로그 대상의 객체를 나열하는 대신 Amazon S3 이벤트를 사용하여 변경 사항을 찾도록 크롤러를 구성할 수 있습니다. 이 기능은 전체 Amazon S3 또는 데이터 카탈로그 대상을 나열하는 대신 Amazon S3 이벤트를 통해 이벤트를 트리거한 하위 폴더의 모든 파일을 나열하여 두 크롤링 간의 변경 사항을 식별하므로 다시 크롤링하는 시간이 단축됩니다.

첫 번째 크롤링은 대상의 모든 Amazon S3 객체를 나열합니다. 첫 번째 크롤링이 성공한 후에는 수동으로 또는 정해진 일정에 따라 다시 크롤링하도록 선택할 수 있습니다. 크롤러는 모든 객체를 나열하지 않고 해당 이벤트의 객체만 나열합니다.

대상이 데이터 카탈로그 테이블인 경우 크롤러는 변경 내용을 사용하여 데이터 카탈로그의 기존 테이블을 업데이트합니다(예: 테이블의 추가 파티션).

Amazon S3 이벤트 기반 크롤러로 이동할 경우의 이점은 다음과 같습니다.
+ 대상의 모든 객체를 나열할 필요 없이 객체가 추가되거나 삭제되는 특정 폴더가 나열되므로 더 빠르게 다시 크롤링할 수 있습니다.
+ 객체가 추가되거나 삭제되는 특정 폴더가 나열되므로 전체 크롤링 비용이 절감됩니다.

Amazon S3 이벤트 크롤링은 크롤러 일정에 따라 SQS 대기열의 Amazon S3 이벤트를 사용하여 실행됩니다. 대기열에 이벤트가 없으면 비용이 발생하지 않습니다. SQS 대기열이나 여러 소비자가 동일한 이벤트를 필요로 하는 경우 SNS와 SQS의 조합으로 바로 이동하도록 Amazon S3 이벤트를 구성할 수 있습니다. 자세한 내용은 [Amazon S3 이벤트 알림을 위해 계정 설정](#crawler-s3-event-notifications-setup) 섹션을 참조하세요.

이벤트 모드로 크롤러를 생성하고 구성한 후 첫 번째 크롤링은 Amazon S3 또는 데이터 카탈로그 대상을 모두 나열하여 목록 모드로 실행됩니다. "크롤링이 Amazon S3 이벤트를 사용하여 실행되고 있습니다."라는 로그는 첫 번째 크롤링이 성공적으로 끝난 후 크롤링이 Amazon S3 이벤트를 사용하여 작동하고 있음을 확인합니다.

Amazon S3 이벤트 크롤링을 생성하고 크롤링에 영향을 줄 수 있는 크롤러 속성을 업데이트하면 크롤링이 목록 모드로 작동하고 "크롤링이 S3 이벤트 모드로 실행되고 있지 않습니다."라는 로그가 추가됩니다.

**참고**  
사용할 수 있는 최대 메시지 수는 크롤링당 100,000개입니다.

## 고려 사항 및 제한 사항
<a name="s3event-crawler-limitations"></a>

Amazon S3 이벤트 알림을 사용하여 변경 사항을 찾도록 크롤러를 구성할 때 다음 고려 사항과 제한 사항이 적용됩니다.
+  **삭제된 파티션의 중요 동작** 

  Data Catalog 테이블에서 Amazon S3 이벤트 크롤러를 사용하는 경우:
  +  `DeletePartition` API 직접 호출을 사용하여 파티션을 삭제하는 경우 해당 파티션의 모든 S3 객체도 삭제하고, S3 이벤트 알림을 구성할 때 **모든 객체 제거 이벤트**를 선택해야 합니다. 삭제 이벤트가 구성되지 않은 경우 크롤러는 다음 실행 도중 삭제된 파티션을 다시 생성합니다.
+ Amazon S3 대상이든 Data Catalog 대상이든 크롤러는 단일 대상만 지원합니다.
+ 프라이빗 VPC의 SQS는 지원되지 않습니다.
+ Amazon S3 샘플링은 지원되지 않습니다.
+ 크롤러 대상은 Amazon S3 대상의 폴더이거나 데이터 카탈로그 대상에 대한 하나 이상의 AWS Glue 데이터 카탈로그 테이블이어야 합니다.
+ 'everything' 경로 와일드카드는 지원되지 않습니다(s3://%).
+ 데이터 카탈로그 대상의 경우 모든 카탈로그 테이블은 Amazon S3 이벤트 모드에 대해 동일한 Amazon S3 버킷을 가리켜야 합니다.
+ 데이터 카탈로그 대상의 경우 카탈로그 테이블은 Delta Lake 형식(\$1symlink 폴더 포함 또는 카탈로그 테이블의 `InputFormat` 확인)의 Amazon S3 위치를 가리키지 않아야 합니다.

**Topics**
+ [고려 사항 및 제한 사항](#s3event-crawler-limitations)
+ [Amazon S3 이벤트 알림을 위해 계정 설정](#crawler-s3-event-notifications-setup)
+ [Amazon S3 대상에 대한 Amazon S3 이벤트 알림용 크롤러 설정](crawler-s3-event-notifications-setup-console-s3-target.md)
+ [데이터 카탈로그 테이블에 대한 Amazon S3 이벤트 알림용 크롤러 설정](crawler-s3-event-notifications-setup-console-catalog-target.md)

## Amazon S3 이벤트 알림을 위해 계정 설정
<a name="crawler-s3-event-notifications-setup"></a>

다음 설정 태스크를 완료합니다. 괄호 안의 값은 스크립트에서 구성 가능한 설정을 가리킵니다.

1. Amazon S3 버킷의 이벤트 알림을 설정해야 합니다.

   자세한 내용은 [Amazon S3 이벤트 알림](https://docs.aws.amazon.com/AmazonS3/latest/userguide/EventNotifications.html)을 참조하세요.

1. Amazon S3 이벤트 기반 크롤러를 사용하려면 S3 대상 및 SQS의 스토어와 동일한 접두사에서 필터링된 이벤트를 사용하여 Amazon S3 버킷에서 이벤트 알림을 사용해야 합니다. [연습: 알림용 버킷 구성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ways-to-add-notification-config-to-bucket.html) 단계에 따라 콘솔을 통해 SQS와 이벤트 알림을 설정할 수 있습니다.

1. 크롤러가 사용하는 역할에 다음 SQS 정책을 추가합니다.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": [
           "sqs:DeleteMessage",
           "sqs:GetQueueUrl",
           "sqs:ListDeadLetterSourceQueues",
           "sqs:ReceiveMessage",
           "sqs:GetQueueAttributes",
           "sqs:ListQueueTags",
           "sqs:SetQueueAttributes",
           "sqs:PurgeQueue"
         ],
         "Resource": "arn:aws:sqs:us-east-1:111122223333:cfn-sqs-queue"
       }
     ]
   }
   ```

------

# Amazon S3 대상에 대한 Amazon S3 이벤트 알림용 크롤러 설정
<a name="crawler-s3-event-notifications-setup-console-s3-target"></a>

AWS Management Console 또는 AWS CLI를 사용하여 Amazon S3 대상에 대한 Amazon S3 이벤트 알림용 크롤러를 설정하려면 다음 단계를 따르세요.

------
#### [ AWS Management Console ]

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

1.  크롤러 속성을 설정합니다. 자세한 내용을 알아보려면 [AWS Glue 콘솔에서 크롤러 구성 옵션 설정](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console)을 참조하세요.

1.  **Data source configuration**(데이터 소스 구성) 섹션에 *Is your data already mapped to AWS Glue tables?*라는 메시지가 표시됩니다.

    기본적으로 **Not yet**(아직)이 이미 선택되어 있습니다. Amazon S3 데이터 소스를 사용 중이고 데이터가 AWS Glue 테이블에 아직 매핑되지 않았으므로 이 항목을 기본값으로 둡니다.

1.  **Data sources**(데이터 소스) 섹션에서 **Add a data source**(데이터 소스 추가)를 선택합니다.  
![\[Data source configuration interface with options to select or add data sources for crawling.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-s3-event-console1.png)

1.  **Add data source**(데이터 소스 추가) 모달에서 Amazon S3 데이터 소스를 구성합니다.
   +  **Data source**(데이터 소스): 기본적으로 Amazon S3가 선택됩니다.
   +  **Network connection**(네트워크 연결)(선택 사항): **Add new connection**(새 연결 추가)을 선택합니다.
   +  **Location of Amazon S3 data**(Amazon S3 데이터 위치): 기본적으로 **In this account**(이 계정에서)가 선택됩니다.
   +  **Amazon S3 path**(Amazon S3 경로): 폴더와 파일이 크롤링되는 Amazon S3 경로를 지정합니다.
   +  **Subsequent crawler runs**(후속 크롤러 실행): 크롤러에 대한 Amazon S3 이벤트 알림을 사용하려면 **Crawl based on events**(이벤트 기반 크롤링)를 선택합니다.
   +  **Include SQS ARN**(SQS ARN 포함): 유효한 SQS ARN을 포함하는 데이터 스토어 파라미터를 지정합니다. (예: `arn:aws:sqs:region:account:sqs`).
   +  **Include dead-letter SQS ARN**(배달 못한 편지 SQS ARN 포함)(선택 사항): 유효한 Amazon 배달 못한 편지 SQS ARN을 지정합니다. (예: `arn:aws:sqs:region:account:deadLetterQueue`).
   +  **Add an Amazon S3 data source**(Amazon S3 데이터 소스 추가)를 선택합니다.  
![\[Add data source dialog for S3, showing options for network connection and crawl settings.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-s3-event-console2.png)

------
#### [ AWS CLI ]

 다음은 이벤트 알림을 사용하여 Amazon S3 대상 버킷을 크롤링하도록 크롤러를 구성하는 Amazon S3 AWS CLI 호출의 예입니다.

```
Create Crawler:
aws glue update-crawler \
    --name myCrawler \
    --recrawl-policy RecrawlBehavior=CRAWL_EVENT_MODE \
    --schema-change-policy UpdateBehavior=UPDATE_IN_DATABASE,DeleteBehavior=LOG
    --targets '{"S3Targets":[{"Path":"s3://amzn-s3-demo-bucket/", "EventQueueArn": "arn:aws:sqs:us-east-1:012345678910:MyQueue"}]}'
```

------

# 데이터 카탈로그 테이블에 대한 Amazon S3 이벤트 알림용 크롤러 설정
<a name="crawler-s3-event-notifications-setup-console-catalog-target"></a>

데이터 카탈로그 테이블이 있는 경우, AWS Glue 콘솔을 사용하여 Amazon S3 이벤트 알림용 크롤러를 설정합니다.

1.  크롤러 속성을 설정합니다. 자세한 내용을 알아보려면 [AWS Glue 콘솔에서 크롤러 구성 옵션 설정](https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-configure-changes-console)을 참조하세요.

1.  **Data source configuration**(데이터 소스 구성) 섹션에 *Is your data already mapped to AWS Glue tables?*라는 메시지가 표시됩니다.

    데이터 카탈로그의 기존 테이블을 데이터 소스로 선택하려면 **예(Yes)**를 선택합니다.

1.  **Glue 테이블(Glue tables)** 섹션에서 **테이블 추가(Add tables)**를 선택합니다.  
![\[Data source configuration interface with options to select existing Glue tables or add new ones.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-s3-event-console1-cat.png)

1.  **테이블 추가(Add table)** 모달에서 데이터베이스 및 테이블을 구성합니다.
   +  **Network connection**(네트워크 연결)(선택 사항): **Add new connection**(새 연결 추가)을 선택합니다.
   +  **데이터베이스(Database)**: 데이터 카탈로그의 데이터베이스를 선택합니다.
   +  **테이블(Tables)**: 데이터 카탈로그의 해당 데이터베이스에서 하나 이상의 테이블을 선택합니다.
   +  **Subsequent crawler runs**(후속 크롤러 실행): 크롤러에 대한 Amazon S3 이벤트 알림을 사용하려면 **Crawl based on events**(이벤트 기반 크롤링)를 선택합니다.
   +  **Include SQS ARN**(SQS ARN 포함): 유효한 SQS ARN을 포함하는 데이터 스토어 파라미터를 지정합니다. (예: `arn:aws:sqs:region:account:sqs`).
   +  **Include dead-letter SQS ARN**(배달 못한 편지 SQS ARN 포함)(선택 사항): 유효한 Amazon 배달 못한 편지 SQS ARN을 지정합니다. (예: `arn:aws:sqs:region:account:deadLetterQueue`).
   +  **확인(Confirm)**을 선택합니다.  
![\[Add Glue tables dialog with network, database, tables, and crawler options.\]](http://docs.aws.amazon.com/ko_kr/glue/latest/dg/images/crawler-s3-event-console2-cat.png)