크롤러의 실행이 완료될 때 Lambda 함수를 사용하여 AWS Glue 작업을 자동으로 시작하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 8월 5일

크롤러 실행이 완료되면 AWS Lambda 함수를 사용하여 AWS Glue 작업을 자동으로 시작하려고 합니다.

간략한 설명

크롤러 실행이 완료될 때 작업을 시작하려면 AWS Lambda 함수와 Amazon EventBridge 규칙을 생성합니다. 이 메서드를 수정하여 다른 AWS Glue 함수를 자동화할 수 있습니다.

참고: AWS Glue 워크플로를 사용하여 크롤러 실행이 완료되면 작업을 자동으로 시작할 수도 있습니다. 이 방법을 사용하려면 AWS Glue 콘솔의 워크플로 페이지에서 크롤러를 시작해야 합니다. 자세한 내용은 크롤러 실행이 완료될 때 AWS Glue 워크플로를 사용하여 작업을 자동으로 시작하려면 어떻게 해야 합니까?를 참조하십시오.

​해결 방법

다음 단계를 수행하기 전에 다음이 있는지 확인해야 합니다.

  • AWS Glue ETL(추출, 변환 및 로드)작업
  • AWS Glue 크롤러
  • Lambda에 대한 AWS Identity and Access Management(IAM) 역할(AWS Glue 작업을 실행할 권한이 부여되어 있어야 함) 예를 들어 AWSGlueServiceRole 정책이 연결되어 있는 Lambda에 대한 service-linked 역할을 설정합니다.

Lambda 함수 생성

1.    Lambda 콘솔을 엽니다.

2.    [Create function]을 선택합니다.
참고: Lambda 함수가 없는 경우 [Get started] 페이지가 나타납니다. [Create a function]을 선택한 후 다음 단계를 계속 진행합니다.

3.    [Author from scratch]가 선택되어 있는지 확인한 후 다음 옵션을 구성합니다.
[Name(이름)]에 함수 이름을 입력합니다.
런타임에서 Python 옵션 중 하나를 선택합니다.
아키텍처의 경우 기본 옵션인 x86_64를 사용합니다.
역할의 경우 기본 실행 역할 변경의 드롭다운을 선택하고 기존 역할 사용을 선택합니다.
기존 역할에서 AWS Glue 작업을 실행할 권한이 있는 IAM 역할을 선택합니다.

4.    [함수 생성]을 선택합니다.

5.    [Function code(함수 코드)] 섹션에 다음과 비슷한 코드를 붙여 넣습니다. MyTestJob은 AWS Glue ETL 작업의 이름으로 바꾸어야 합니다.

# Set up logging
import json
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Import Boto 3 for AWS Glue
import boto3
client = boto3.client('glue')

# Variables for the job: 
glueJobName = "MyTestJob"

# Define Lambda function
def lambda_handler(event, context):
    logger.info('## INITIATED BY EVENT: ')
    logger.info(event['detail'])
    response = client.start_job_run(JobName = glueJobName)
    logger.info('## STARTED GLUE JOB: ' + glueJobName)
    logger.info('## GLUE JOB RUN ID: ' + response['JobRunId'])
    return response

6.    코드 편집 UI 상단에서 배포를 선택한 다음 테스트를 선택합니다.

7.    [AWS Glue 콘솔]을 열고 작업이 시작되었는지 확인합니다.

EventBridge 규칙 생성

1.    Amazon EventBridge 콘솔을 엽니다.

2.    탐색 창에서 [Rules]를 선택하고 [Create rule]을 선택합니다.

3.    규칙의 이름과 설명을 입력하고 다음을 선택합니다.

4.    이벤트 소스샘플 이벤에 기본값을 사용합니다. 이벤트 패턴 섹션에서 사용자 지정 패턴(JSON 편집기)을 선택합니다.

5.    다음 코드를 복사하여 이벤트 패턴 상자에 붙여 넣습니다. MyTestCrawl은 AWS Glue 크롤러의 이름으로 바꾸어야 합니다.

{
    "detail-type": [
        "Glue Crawler State Change"
    ],
    "source": [
        "aws.glue"
    ],
    "detail": {
        "crawlerName": [
            "MyTestCrawl"
        ],
        "state": [
            "Succeeded"
        ]
    }
}

6.    [대상 선택] 섹션에서 다음을 수행합니다.

[대상]에 [Lambda 함수]를 선택합니다.

[함수]에 Lambda 함수의 이름을 선택합니다.

7.    [생성]을 선택합니다.

Lambda 함수와 EventBridge 규칙을 테스트하려면 AWS Glue 크롤러를 실행합니다. 그런 다음, AWS Glue ETL 작업의 [기록] 탭을 확인합니다. [실행 상태]가 [시작하는 중] 또는 [실행 중]으로 표시되어야 합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?