블루프린트 레이아웃 스크립트 생성
블루프린트 레이아웃 스크립트에는 워크플로에서 엔터티를 생성하는 함수가 포함되어야 합니다. 원하는 대로 이 함수의 이름을 지정할 수 있습니다. AWS Glue에서는 구성 파일을 사용하여 함수의 정규화된 이름을 확인합니다.
레이아웃 함수는 다음을 수행합니다.
-
(선택 사항)
Job
클래스를 인스턴스화하여Job
객체를 생성하고Command
및Role
등의 인수를 전달합니다. AWS Glue 콘솔 또는 API를 사용하여 작업을 생성하는 경우 지정할 작업 속성입니다. -
(선택 사항)
Crawler
클래스를 인스턴스화하여Crawler
객체를 생성하고 이름, 역할 및 대상 인수를 전달합니다. -
객체(워크플로 엔터티) 간의 종속성을 나타내려면
DependsOn
및WaitForDependencies
추가 인수를Job()
및Crawler()
에 전달합니다. 이러한 인수는 이 섹션의 뒷부분에서 설명합니다. -
Workflow
클래스를 인스턴스화하여 AWS Glue에 반환되는 워크플로 객체를 생성하고Name
인수,Entities
인수, 선택적OnSchedule
인수를 전달합니다. 이Entities
인수는 워크플로에 포함할 모든 작업 및 크롤러를 지정합니다.Entities
객체를 구성하는 방법을 보려면 이 섹션의 뒷부분에 나오는 샘플 프로젝트를 참조하세요. -
Workflow
객체를 반환합니다.
Job
, Crawler
및 Workflow
클래스의 정의는 AWS Glue 블루프린트 클래스 참조 섹션을 참조하세요.
레이아웃 함수에 사용할 수 있는 입력 인수는 다음과 같습니다.
인수 | 설명 |
---|---|
user_params |
블루프린트 파라미터 이름 및 값의 Python 딕셔너리. 자세한 내용은 블루프린트 파라미터 지정 단원을 참조하십시오. |
system_params |
두 가지 속성(region 및 accountId )을 포함하는 Python 딕셔너리. |
다음은 Layout.py
라는 파일의 샘플 레이아웃 생성기 스크립트입니다.
import argparse import sys import os import json from awsglue.blueprint.workflow import * from awsglue.blueprint.job import * from awsglue.blueprint.crawler import * def generate_layout(user_params, system_params): etl_job = Job(Name="{}_etl_job".format(user_params['WorkflowName']), Command={ "Name": "glueetl", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole']) post_process_job = Job(Name="{}_post_process".format(user_params['WorkflowName']), Command={ "Name": "pythonshell", "ScriptLocation": user_params['ScriptLocation'], "PythonVersion": "2" }, Role=user_params['PassRole'], DependsOn={ etl_job: "SUCCEEDED" }, WaitForDependencies="AND") sample_workflow = Workflow(Name=user_params['WorkflowName'], Entities=Entities(Jobs=[etl_job, post_process_job])) return sample_workflow
샘플 스크립트는 필요한 Blueprint 라이브러리를 가져오고 2개의 작업으로 워크플로를 생성하는 generate_layout
함수를 포함합니다. 이것은 매우 간단한 스크립트입니다. 보다 복잡한 스크립트는 추가 로직 및 파라미터를 사용하여 많은 작업과 크롤러 또는 다양한 수의 작업과 크롤러가 있는 워크플로를 생성할 수 있습니다.
DependsOn 인수 사용
DependsOn
인수는 이 엔터티가 워크플로 내의 다른 엔터티에 대해 갖는 종속성의 딕셔너리 표현입니다. 형식은 다음과 같습니다.
DependsOn = {dependency1 : state, dependency2 : state, ...}
이 딕셔너리의 키는 엔터티의 이름이 아닌 객체 참조를 나타내는 반면 값은 감시할 상태에 해당하는 문자열입니다. AWS Glue는 적절한 트리거를 유추합니다. 유효한 상태는 조건 구조를 참조하세요.
예를 들어 작업은 크롤러의 성공적인 완료에 따라 달라질 수 있습니다. 다음과 같이 이름이 crawler2
인 크롤러 객체를 정의하는 경우
crawler2 = Crawler(Name="my_crawler", ...)
그러면 crawler2
에 종속된 객체에는 다음과 같은 생성자 인수가 포함됩니다.
DependsOn = {crawler2 : "SUCCEEDED"}
예:
job1 = Job(Name="Job1",
...
, DependsOn = {crawler2 : "SUCCEEDED", ...})
엔터티에 대해 DependsOn
이 생략된 경우 해당 엔터티는 워크플로 시작 트리거에 따라 달라집니다.
WaitForDependencies 인수 사용
WaitForDependencies
인수는 작업 또는 크롤러 엔터티가 종속된 모든 엔터티가 완료될 때까지 또는 하나라도완료될 때까지 기다려야 하는지 여부를 정의합니다.
허용되는 값은 "AND
" 또는 "ANY
"입니다.
OnSchedule 인수 사용
Workflow
클래스 생성자의 OnSchedule
인수는 워크플로에 대한 시작 트리거 정의를 정의하는 cron
표현식입니다.
이 인수가 지정되면 AWS Glue는 해당 일정으로 일정 트리거를 생성합니다. 지정되지 않은 경우 워크플로의 시작 트리거는 온디맨드 트리거입니다.