크롤러 구성 옵션 설정 - AWS Glue

크롤러 구성 옵션 설정

크롤러가 실행되면 이전 크롤러와 다른 스키마와 파티션을 초래하는 데이터 스토어의 변화가 발생합니다. AWS Management Console 또는 AWS Glue API를 사용하여 크롤러가 특정 변화에 따라 어떤 절차를 밟는지 알아봅니다.

AWS Glue 콘솔에서 크롤러 구성 옵션 설정

AWS Glue 콘솔을 사용하여 크롤러를 정의하면 크롤러의 행태를 구성할 수 있는 몇 가지 옵션이 있습니다. AWS Glue 콘솔을 사용하여 크롤러를 추가하는 방법에 대한 자세한 내용은 AWS Glue 콘솔에서 크롤러 작업 단원을 참조하십시오.

이전에 크롤된 데이터 스토어에 반해 크롤러가 실행되면 스키마가 변했거나 데이터 스토어의 어떤 객체가 삭제되었다는 점을 알게 됩니다. 크롤러 로그는 스키마로 변합니다. 크롤러의 원본 유형에 따라 스키마 변경 정책과 상관없이 새 테이블과 파티션이 생성될 수 있습니다.

스키마가 변하면 크롤러가 무엇을 하는지 지정하기 위해서 콘솔의 다음 작업 중 하나를 선택할 수 있습니다.

  • Data Catalog에서 테이블 정의 업데이트 - 새로운 열을 추가하고 누락 열을 제거한 다음 AWS Glue Data Catalog의 기존 열 정의를 수정합니다. 크롤러가 설정하지 않은 메타데이터를 제거합니다. 이것이 기본 설정입니다.

  • 새 열만 추가 – Amazon S3 데이터 스토어의 매핑인 테이블을 위해 새로운 열이 검색되면 추가하지만 Data Catalog에 존재하는 열의 유형을 제거하거나 변형하지 않습니다. Data Catalog의 현재 열이 올바르고 크롤러가 기존 열의 유형을 제거하거나 변하지 않기 원한다면 이 옵션을 선택합니다. 분류, 요약 유형, CSV 구분자 등 기본 Amazon S3 테이블 속성이 변한다면 테이블이 사용되지 않음이라고 표시합니다. Data Catalog에 존재하는 입력 및 출력 포맷을 유지합니다. 크롤러에 설정된 피라미터이면 SerDe 파라미터를 업데이트합니다. 다른 모든 데이터 스토어는 기존 열 정의를 변경합니다.

  • 변경 사항을 무시하고, 에서 테이블을 업데이트하지 않음 – 새로운 테이블과 파티션만이 생성됩니다.

    증분 크롤링에 대한 기본 설정입니다.

크롤러는 새롭고 변한 파티션을 발견할 수 있습니다. 기본적으로 새 파티션이 추가되고 기존 파티션이 변했다면 업데이트됩니다. 또한 AWS Glue 콘솔에서 크롤러 구성 옵션을 [테이블의 메타데이터로 모든 신규 및 기존 파티션 업데이트(Update all new and existing partitions with metadata from the table)]로 설정할 수 있습니다. 이 옵션이 설정되면 파티션은 상위 테이블에서 분류, 입력 포맷, 출력 포맷, SerDe 정보, 스키마 등의 메타데이터 속성을 상속합니다. 테이블 속성의 모든 변경 사항은 파티션으로 전파됩니다. 이 구성 옵션이 기존 크롤러에 설정되면 기존 파티션은 크롤러가 그 다음번에 실행될 때 상위 테이블의 속성과 일치하기 위해서 업데이트됩니다.

삭제된 객체가 데이터 스토어에 존재한다면 크롤러가 무엇을 하는지 지정하기 위해서 다음 작업 중 하나를 선택할 수 있습니다.

  • Data Catalog에서 테이블 및 파티션 삭제

  • 변경 사항을 무시하고 Data Catalog에서 테이블을 업데이트하지 않음

    증분 크롤링에 대한 기본 설정입니다.

  • Data Catalog에서 사용되지 않는 테이블로 표시(Mark the table as deprecated in the Data Catalog) – 이것은 기본 설정입니다.

API를 사용하여 크롤러 구성 옵션 설정

AWS Glue API를 사용하여 크롤러를 정의하면 크롤러를 구성할 수 있는 몇 가지 필드 중에서 선택할 수 있습니다. 크롤러 API의 SchemaChangePolicy는 스키마가 변하고 객체가 삭제되면 크롤러는 무엇을 할지 결정합니다. 크롤러 로그 스키마가 실행되면서 변합니다.

크롤러가 실행되면 새로운 테이블과 파티션은 스키마 변화 정책과 무관하게 항상 생성됩니다. SchemaChangePolicy 구조의 UpdateBehavior 필드에서 다음 작업 중 하나를 선택하여 크롤러가 변경된 테이블 스키마를 찾았을 때 수행할 작업을 결정할 수 있습니다.

  • UPDATE_IN_DATABASE - AWS Glue Data Catalog에서 테이블을 업데이트합니다. 새로운 열을 추가하고 누락 열을 제거하며 기존 열의 정의를 수정합니다. 크롤러가 설정하지 않은 메타데이터를 제거합니다.

  • LOG – 변경 사항을 무시하고 Data Catalog에서 테이블을 업데이트하지 않습니다.

    증분 크롤링에 대한 기본 설정입니다.

크롤러 API Configuration 필드에 제공된 JSON 객체를 사용하여 SchemaChangePolicy 구조를 재정의할 수도 있습니다. JSON 객체는 키값 페어를 포함하여 정책을 설정하고 기존 열을 업데이트하지 않으면서 새로운 열만 추가합니다. 예를 들어, 문자열로써 다음 JSON 객체를 제공합니다.

{ "Version": 1.0, "CrawlerOutput": { "Tables": { "AddOrUpdateBehavior": "MergeNewColumns" } } }

이 옵션은 AWS Glue 콘솔의 [새 열만 추가(Add new columns only)] 옵션에 해당합니다. Amazon S3 데이터 스토어만 크롤링하여 생성된 테이블의 SchemaChangePolicy 구조를 재정의합니다. Data Catalog(사실 원본)에 메타데이터가 존재하고 유지하고자 한다면 이 옵션을 선택합니다. 중첩된 데이터 유형을 포함하여 새로운 열에 맞닥뜨리면 이 새로운 열을 추가합니다. 하지만 기존 열은 제거되지 않고 유형도 변하지 않습니다. Amazon S3 테이블 속성이 크게 변하면 테이블의 사용 중지를 표시하고 비호환성 문제를 해결하라는 경고문을 실행합니다.

이전에 크롤된 데이터 스토어에 반해 크롤러가 실행되면 새롭거나 변한 파티션을 발견하게 됩니다. 기본적으로 새 파티션이 추가되고 기존 파티션이 변했다면 업데이트됩니다. 또한 크롤러 구성 옵션을 InheritFromTable(AWS Glue 콘솔의 [테이블의 메타데이터로 모든 신규 및 기존 파티션 업데이트(Update all new and existing partitions with metadata from the table)] 옵션에 해당)로 설정할 수 있습니다. 이 옵션이 설정되면 파티션은 분류, 입력 포맷, 출력 포맷, SerDe 정보, 스키마 등 등 상위 테이블에서 메타데이터 속성을 물려받습니다. 모든 상위 테이블 속성의 변경 사항은 파티션으로 전파됩니다.

이 구성 옵션이 기존 크롤러에 설정되면 기존 파티션은 크롤러가 그 다음번에 실행될 때 상위 테이블의 속성과 일치하기 위해서 업데이트됩니다. 이 행동은 크롤러 API Configuration 필드에 설정됩니다. 예를 들어, 문자열로써 다음 JSON 객체를 제공합니다.

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

크롤러 API Configuration 필드는 다양한 구성 옵션을 설정할 수 있습니다. 예를 들어, 파티션과 테이블 모두의 크롤러 출력을 구성하기 위해서 다음 JSON 객체를 나타내는 문자열을 제공할 수 있습니다.

{ "Version": 1.0, "CrawlerOutput": { "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }, "Tables": {"AddOrUpdateBehavior": "MergeNewColumns" } } }

삭제된 객체가 데이터 스토어에 존재한다면 크롤러가 무엇을 할지 결정하기 위해서 다음 행동 중 하나를 선택할 수 있습니다. 크롤러 API의 SchemaChangePolicy 구조에 있는 DeleteBehavior 필드는 크롤러가 삭제된 객체를 검색할 때의 동작을 설정합니다.

  • DELETE_FROM_DATABASE – Data Catalog에서 테이블 및 파티션을 삭제합니다.

  • LOG - 변경 사항을 무시합니다. Data Catalog를 업데이트하지 않습니다. 대신 로그 메시지를 작성합니다.

  • DEPRECATE_IN_DATABASE – Data Catalog에서 해당 테이블을 사용 중지로 표시합니다. 이것이 기본 설정입니다.

크롤러가 기존 스키마를 변경하지 않도록 예방하는 방법

크롤러가 Amazon S3 테이블 정의의 기존 필드를 중복 업데이트하지 않도록 하려면 콘솔의 옵션을 선택하여 [새 열만 추가(Add new columns only)] 혹은 구성 옵션 MergeNewColumns를 설정합니다. Partitions.AddOrUpdateBehaviorInheritFromTable에 중복되지 않는 한 이는 테이블과 파티션에 적용됩니다.

크롤러가 실행될 때 테이블 스키마가 전혀 변하지 않도록 하려면 LOG에 스키마 변경 정책을 설정합니다. 테이블에서 물려받은 파티션 스키마를 설정할 수 있는 구성 옵션도 설정할 수 있습니다.

콘솔에서 크롤러를 구성하는 중이면 다음 작업을 선택할 수 있습니다.

  • 변경 사항을 무시하고 Data Catalog에서 테이블을 업데이트하지 않음

  • [Update all new and existing partitions with metadata from the table(테이블에서 메타데이터가 있는 새 파티션과 기존 파티션을 모두 업데이트합니다)]

API를 사용하여 크롤러를 구성하면 다음 파라미터를 설정합니다.

  • SchemaChangePolicy 구조의 UpdateBehavior 필드를 LOG로 설정합니다.

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

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

각 Amazon S3 포함 경로에 대해 단일 스키마를 생성하는 방법

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

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

스키마를 결합하기 위해 콘솔에서 크롤러를 구성하려는 경우 크롤러 옵션 Create a single schema for each S3 path(각 S3 경로에 대해 단일 스키마 생성)를 선택합니다.

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

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

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

이 옵션의 이해를 돕기 위해 포함 경로가 s3://bucket/table1/인 크롤러를 정의한다고 가정해 보겠습니다. 이 크롤러는 실행 시 다음과 같은 특성을 가진 JSON 파일 두 개를 찾습니다.

  • 파일 1S3://bucket/table1/year=2017/data1.json

  • 파일 내용{“A”: 1, “B”: 2}

  • 스키마A:int, B:int

  • 파일 2S3://bucket/table1/year=2018/data2.json

  • 파일 내용{“C”: 3, “D”: 4}

  • 스키마C: int, D: int

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

테이블 위치와 파티션 수준을 지정하는 방법

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

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


        수준 2로 지정된 테이블 수준의 크롤러 그룹화

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

Console

              크롤러 구성에서 테이블 수준 지정
API

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

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

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

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

크롤러가 생성할 수 있는 최대 테이블 수를 지정하는 방법

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

이 파라미터는 크롤러에 의해 탐지되고 생성되는 테이블이 예상보다 훨씬 큰 경우에 유용합니다. 다음과 같은 여러 가지 이유가 있을 수 있습니다.

  • AWS Glue 작업을 사용하여 Amazon S3 위치를 채우면 폴더와 같은 수준에 빈 파일이 생길 수 있습니다. 이러한 경우 이 Amazon S3 위치에서 크롤러를 실행하면 파일 및 폴더가 동일한 수준에 있기 때문에 크롤러가 여러 테이블을 생성합니다.

  • "TableGroupingPolicy": "CombineCompatibleSchemas"를 설정하지 않으면 예상보다 많은 테이블이 생성될 수 있습니다.

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

콘솔

AWS 콘솔을 사용하여 TableThreshold 설정


          Maximum table threshold(최대 테이블 임계값) 파라미터가 표시된 AWS 콘솔의 Set output and scheduling(출력 및 예약 설정) 섹션
CLI

AWS CLI를 사용하여 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.

Delta Lake 데이터 스토어에 대한 구성 옵션을 지정하는 방법

Delta Lake 데이터 스토어에 대해 크롤러를 구성할 때 이러한 구성 파라미터를 지정합니다.

연결

필요에 따라 이 Amazon S3 대상과 함께 사용할 네트워크 연결을 선택하거나 추가합니다. 연결에 관한 자세한 내용은 AWS Glue Data Catalog에서 연결 정의 단원을 참조하십시오.

쓰기 매니페스트 사용

Delta Lake 트랜잭션 로그에서 테이블 메타데이터 또는 스키마 변경 사항을 감지할지 여부를 선택합니다. 해당 항목은 매니페스트 파일을 다시 생성합니다. Delta Lake SET TBLPROPERTIES에서 자동 매니페스트 업데이트를 구성한 경우에는 이 옵션을 선택해서는 안 됩니다.

Delta Lake 테이블 경로 포함

s3://bucket/prefix/object와 같이 Delta 테이블에 대한 Amazon S3 경로를 하나 이상 지정합니다.


              Delta Lake 데이터 스토어 크롤링 지정

Lake Formation 자격 증명을 사용하도록 크롤러를 구성하는 방법

이 기능은 현재 프리뷰 버전이 출시 중이기 때문에 변경될 수도 있습니다. 자세한 내용을 알아보려면 AWS 서비스 약관 문서의 베타 및 미리 보기 섹션을 참조하세요.

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

참고

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

크롤러와 등록된 Amazon S3 위치 또는 데이터 카탈로그 테이블이 동일한 계정에 있는 경우 필요한 설정(계정 내 크롤링)

크롤러가 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/)에서 크롤러가 정의된 AWS 계정에서 Amazon S3 위치를 데이터 레이크의 루트 위치로 등록합니다. 자세한 내용을 알아보려면 Registering an Amazon S3 location(Amazon S3 위치 등록)을 참조하세요.

  2. 크롤러가 Lake Formation의 대상에서 데이터를 읽을 수 있도록 크롤러 실행에 사용되는 IAM 역할에 Data location(데이터 위치) 권한을 부여합니다. 자세한 내용을 알아보려면 Granting data location permissions (same account)(데이터 위치 권한 부여(동일한 계정))를 참조하세요.

  3. 출력 데이터베이스로 지정된 데이터베이스에 크롤러 역할 액세스 권한(Create, Describe, Alter)을 부여합니다. 자세한 내용을 알아보려면 Granting database permissions using the Lake Formation console and the named resource method(Lake Formation 콘솔 및 명명된 리소스 메서드를 사용하여 데이터베이스 권한 부여)를 참조하세요.

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

  5. AWS 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://crawl-testbucket" } ] }, "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 위치가 다른 계정에 있는 경우 필요한 설정(크로스 계정 크롤링)

크롤러가 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(Amazon S3 위치 등록)을 참조하세요.

    2. 크롤러가 실행될 계정(계정 A)에 Data location(데이터 위치) 권한을 부여합니다. 자세한 내용을 알아보려면 Granting data location permissions(데이터 위치 권한 부여)를 참조하세요.

    3. 기본 위치를 대상 Amazon S3 위치로 사용하여 Lake Formation에 빈 데이터베이스를 생성합니다. 자세한 내용을 알아보려면 Creating a database(데이터베이스 생성)를 참조하세요.

    4. 계정 A(크롤러가 실행될 계정)에 이전 단계에서 생성한 데이터베이스에 대한 액세스 권한을 부여합니다. 자세한 내용을 알아보려면 Granting database permissions(데이터베이스 권한 부여)를 참조하세요.

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

    1. AWS RAM 콘솔을 사용하여 외부 계정(계정 B)에서 공유된 데이터베이스를 수락합니다. 자세한 내용을 알아보려면 AWS Resource Access Manager에서 리소스 공유 초대 수락을 참조하세요.

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

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

    4. 공유 데이터베이스에 리소스 링크를 생성합니다. 자세한 내용을 알아보려면 Create a resource link(리소스 링크 만들기)를 참조하세요.

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

    6. AWS 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 필드는 선택 사항입니다.

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://crawl-testbucket" } ] }, "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 위치가 동일한 버킷에 속해야 합니다. 예를 들어, 고객은 모든 대상 위치가 동일한 버킷(bucket1) 아래에 있는 한 여러 대상(s3://bucket1/folder1, s3://bucket1/folder2)을 사용할 수 있습니다. 서로 다른 버킷(s3://bucket1/folder1, s3://bucket2/folder2)을 지정할 수 없습니다.

  • 현재 데이터 카탈로그 대상 크롤러의 경우 단일 카탈로그 테이블이 있는 단일 카탈로그 대상만 허용됩니다.