AWS Glue에서 Git 버전 제어 시스템 사용
참고
노트북은 현재 AWS Glue Studio에서 버전 관리가 지원되지 않습니다. 하지만 AWS Glue 작업 스크립트 및 시각적 ETL 작업에 대한 버전 제어는 지원됩니다.
원격 리포지토리가 있고 리포지토리를 사용하여 AWS Glue 작업을 관리하려는 경우 AWS Glue Studio 또는 AWS CLI을(를) 사용하여 AWS Glue의 리포지토리 및 작업에 대한 변경 사항을 동기화할 수 있습니다. 이러한 방식으로 변경 내용을 동기화하면 작업을 AWS Glue Studio에서 리포지토리로 푸시하거나 리포지토리에서 AWS Glue Studio(으)로 가져옵니다.
AWS Glue Studio의 Git 통합을 통해 다음 작업을 수행할 수 있습니다.
-
AWS CodeCommit, GitHub, GitLab 및 Bitbucket과 같은 Git 버전 관리 시스템과 통합
-
시각적 작업을 사용하든 스크립트 작업을 사용하든 AWS Glue Studio에서 AWS Glue 작업을 편집하고 이를 리포지토리에 동기화
-
작업의 소스 및 대상을 파라미터화
-
리포지토리에서 작업을 가져와 AWS Glue Studio에서 편집합니다.
-
AWS Glue Studio의 다중 브랜치 워크플로를 활용하여 브랜치에서 가져오거나 브랜치로 푸시하여 작업 테스트
-
교차 계정 작업 생성에 대해 리포지토리에서 파일 다운로드 및 AWS Glue Studio(으)로 작업 업로드
-
선택한 자동화 도구 사용(예: Jenkins, AWS CodeDeploy, 등.)
이 비디오에서는 AWS Glue를 Git와 통합하고 협업에 기반한 지속적인 코드 파이프라인을 구축하는 방법을 보여줍니다.
IAM 권한
작업에 다음 IAM 권한 중 하나가 있는지 확인합니다. IAM 권한 설정 방법에 대한 자세한 내용을 알아보려면 AWS Glue Studio에 대한 IAM 권한 설정을 참조하세요.
-
AWSGlueServiceRole
-
AWSGlueConsoleFullAccess
Git 통합을 위해서는 최소한 다음과 같은 작업이 필요합니다.
-
glue:UpdateJobFromSourceControl
- 버전 관리 시스템에 있는 작업으로 AWS Glue을(를) 업데이트할 수 있습니다. -
glue:UpdateSourceControlFromJob
- AWS Glue에 저장된 작업으로 버전 관리 시스템을 업데이트할 수 있습니다. -
s3:GetObject
- 버전 관리 시스템으로 푸시하는 동안 작업에 대한 스크립트를 검색할 수 있습니다. -
s3:PutObject
- 소스 제어 시스템에서 작업을 가져올 때 스크립트를 업데이트할 수 있습니다.
사전 조건
작업을 소스 제어 리포지토리로 푸시하려면 다음 사항이 필요합니다.
-
관리자가 이미 생성한 리포지토리
-
리포지토리 내 브랜치
-
개인용 액세스 토큰(Bitbucket의 경우 리포지토리 액세스 토큰)
-
리포지토리 소유자의 사용자 이름
-
AWS Glue Studio의 리포지토리에 대해 읽기 및 쓰기가 허용되도록 리포지토리의 권한을 설정합니다
-
GitLab — 토큰 범위를 API, read_repository, write_repository로 설정
-
Bitbucket — 권한 설정 위치:
-
Workspace 멤버십 — 읽기, 쓰기
-
프로젝트 — 쓰기, 관리자 읽기
-
리포지토리 — 읽기, 쓰기, 관리, 삭제
-
-
참고
AWS CodeCommit 사용 시 개인 액세스 토큰 및 리포지토리 소유자는 필요하지 않습니다. Git 및 AWS CodeCommit 시작하기를 참조하세요.
AWS Glue Studio에서 소스 제어 리포지토리의 작업 사용
AWS Glue Studio에 없는 작업을 소스 제어 리포지토리에서 가져오고 AWS Glue Studio에서 작업을 사용하려고 하면 작업 유형에 따라 전제 조건이 달라집니다.
시각적 작업의 경우:
-
작업 이름과 일치하는 작업 정의의 폴더 및 JSON 파일이 필요합니다
예를 들어, 아래 작업 정의를 참조하세요. 리포지토리의 브랜치에는 폴더와 JSON 파일이 모두 작업 이름과 일치하는 경로
my-visual-job/my-visual-job.json
이(가) 포함되어야 합니다{ "name" : "my-visual-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-visual-job.py", "pythonVersion" : "3" }, "codeGenConfigurationNodes" : "{\"node-nodeID\":{\"S3CsvSource\":{\"AdditionalOptions\":{\"EnableSamplePath\":false,\"SamplePath\":\"s3://notebook-test-input/netflix_titles.csv\"},\"Escaper\":\"\",\"Exclusions\":[],\"Name\":\"Amazon S3\",\"OptimizePerformance\":false,\"OutputSchemas\":[{\"Columns\":[{\"Name\":\"show_id\",\"Type\":\"string\"},{\"Name\":\"type\",\"Type\":\"string\"},{\"Name\":\"title\",\"Type\":\"choice\"},{\"Name\":\"director\",\"Type\":\"string\"},{\"Name\":\"cast\",\"Type\":\"string\"},{\"Name\":\"country\",\"Type\":\"string\"},{\"Name\":\"date_added\",\"Type\":\"string\"},{\"Name\":\"release_year\",\"Type\":\"bigint\"},{\"Name\":\"rating\",\"Type\":\"string\"},{\"Name\":\"duration\",\"Type\":\"string\"},{\"Name\":\"listed_in\",\"Type\":\"string\"},{\"Name\":\"description\",\"Type\":\"string\"}]}],\"Paths\":[\"s3://dalamgir-notebook-test-input/netflix_titles.csv\"],\"QuoteChar\":\"quote\",\"Recurse\":true,\"Separator\":\"comma\",\"WithHeader\":true}}}" }
스크립트 작업의 경우:
-
폴더, 작업 정의의 JSON 파일 및 스크립트가 필요합니다.
-
폴더 및 JSON 파일은 작업 이름과 일치해야 합니다. 스크립트 이름은 파일 확장자와 함께 작업 정의의
scriptLocation
와(과) 일치해야 합니다예를 들어, 아래 작업 정의에서 리포지토리의 브랜치에는 경로
my-script-job/my-script-job.json
및my-script-job/my-script-job.py
이(가) 포함되어야 합니다. 스크립트 이름은 스크립트의 확장자를 포함하여scriptLocation
의 이름과 일치해야 합니다.{ "name" : "my-script-job", "description" : "", "role" : "arn:aws:iam::aws_account_id:role/Rolename", "command" : { "name" : "glueetl", "scriptLocation" : "s3://foldername/scripts/my-script-job.py", "pythonVersion" : "3" } }
제한 사항
-
AWS Glue는 현재 GitLab-Groups
에서 푸시/풀링을 지원하지 않습니다.
버전 관리 리포지토리를 AWS Glue와(과) 연결
AWS Glue Studio 작업 편집기의 Version Control(버전 관리) 탭에서 버전 관리 리포지토리 세부 정보를 입력하고 관리할 수 있습니다. Git 리포지토리와 통합하려면 AWS Glue Studio에 로그인할 때마다 리포지토리에 연결해야 합니다.
Git 버전 관리 시스템 연결하기:
-
AWS Glue Studio에서 새 작업을 시작하고 Version Control(버전 관리) 탭을 선택합니다.
-
버전 관리 시스템에서 다음 드롭다운 메뉴를 클릭하여 사용 가능한 옵션 중에서 Git Service를 선택합니다.
-
AWS CodeCommit
-
GitHub
-
GitLab
-
Bitbucket
-
-
선택한 Git 버전 관리 시스템에 따라 완료해야 하는 필드가 달라집니다.
AWS CodeCommit의 경우
작업에 사용할 리포지토리와 브랜치를 선택하여 리포지토리 구성을 완료합니다.
-
리포지토리 - AWS CodeCommit에 리포지토리를 설정한 경우 드롭다운 메뉴에서 리포지토리를 선택합니다. 리포지토리가 목록에 자동으로 채워집니다.
-
브랜치 - 드롭다운 메뉴에서 브랜치를 선택합니다.
-
폴더 - 선택 사항- 작업을 저장할 폴더 이름을 입력합니다. 비워 두면 폴더가 자동으로 생성됩니다. 폴더 이름은 기본적으로 작업 이름입니다.
GitHub의 경우:
다음 필드를 작성하여 GitHub 구성을 완료합니다.
-
Personal access token(개인 액세스 토큰) - GitHub 리포지토리에서 제공하는 토큰입니다. 개인 액세스 토큰에 대한 자세한 내용을 알아보려면 GitHub 문서
를 참조하세요. -
리포지토리 소유자 - GitHub 리포지토리의 소유자입니다.
GitHub에서 사용할 리포지토리와 브랜치를 선택하여 리포지토리 구성을 완료합니다.
-
리포지토리 - GitHub에 리포지토리를 설정한 경우 드롭다운 메뉴에서 리포지토리를 선택합니다. 리포지토리가 목록에 자동으로 채워집니다.
-
브랜치 - 드롭다운 메뉴에서 브랜치를 선택합니다.
-
폴더 - 선택 사항- 작업을 저장할 폴더 이름을 입력합니다. 비워 두면 폴더가 자동으로 생성됩니다. 폴더 이름은 기본적으로 작업 이름입니다.
GitLab의 경우:
참고
AWS Glue는 현재 GitLab-Groups
에서 푸시/풀링을 지원하지 않습니다. -
개인 액세스 토큰 - GitLab 리포지토리에서 제공하는 토큰입니다. 개인 액세스 토큰에 대한 자세한 내용은 GitLab 개인 액세스 토큰
을 참조하세요 -
리포지토리 소유자 - GitLab 리포지토리의 소유자입니다.
GitLab에서 사용할 리포지토리와 브랜치를 선택하여 리포지토리 구성을 완료합니다.
-
리포지토리 - GitLab에 리포지토리를 설정한 경우 드롭다운 메뉴에서 리포지토리를 선택합니다. 리포지토리가 목록에 자동으로 채워집니다.
-
브랜치 - 드롭다운 메뉴에서 브랜치를 선택합니다.
-
폴더 - 선택 사항- 작업을 저장할 폴더 이름을 입력합니다. 비워 두면 폴더가 자동으로 생성됩니다. 폴더 이름은 기본적으로 작업 이름입니다.
Bitbucket의 경우:
-
앱 암호 - Bitbucket은 리포지토리 액세스 토큰이 아닌 앱 암호를 사용합니다. 앱 암호에 대한 자세한 내용은 앱 암호
를 참조하세요. -
리포지토리 소유자 - Bitbucket 리포지토리의 소유자입니다. Bitbucket에서 소유자는 리포지토리의 생성자입니다.
Bitbucket에서 사용할 워크스페이스, 리포지토리, 브랜치 및 폴더를 선택하여 리포지토리 구성을 완료합니다.
-
작업 영역 — Bitbucket에 작업 영역을 설정한 경우 드롭다운 메뉴에서 작업 영역을 선택합니다. 작업 공간이 자동으로 채워집니다
-
리포지토리- Bitbucket에 리포지토리를 설정한 경우 드롭다운 메뉴에서 리포지토리를 선택합니다. 리포지토리가 자동으로 채워집니다
-
브랜치 — 드롭다운 메뉴에서 브랜치를 선택합니다. 브랜치가 자동으로 채워집니다
-
폴더 - 선택 사항- 작업을 저장할 폴더 이름을 입력합니다. 비워 두면 작업 이름의 폴더가 자동으로 생성됩니다.
-
-
AWS Glue Studio 작업의 페이지 상단에서 Save(저장)을 선택합니다.
소스 리포지토리에 AWS Glue 작업 푸시
버전 관리 시스템의 세부 정보를 입력한 후에는 AWS Glue Studio에서 작업을 편집하고 작업을 소스 리포지토리로 푸시할 수 있습니다. 푸시 및 가져오기 같은 Git 개념에 익숙하지 않은 경우 Git 및 AWS CodeCommit 시작하기에 대한 이 자습서를 참조하세요.
작업을 리포지토리에 푸시하려면 버전 관리 시스템의 세부 정보를 입력하고 작업을 저장해야 합니다.
-
AWS Glue Studio 작업에서 Actions(작업)을 선택합니다. 그러면 추가 메뉴 옵션이 열립니다.
-
Push to repository(리포지토리로 푸시)를 선택합니다.
이 작업을 수행하면 작업이 저장됩니다. 리포지토리로 푸시하면 AWS Glue Studio이(가) 마지막으로 저장한 변경 내용을 푸시합니다. 리포지토리의 작업이 사용자 본인 또는 다른 사용자에 의해 수정되었으며 AWS Glue Studio의 작업과 동기화되지 않은 경우 AWS Glue Studio에서 작업을 푸시할 때 AWS Glue Studio에서 저장된 작업으로 리포지토리의 작업이 덮어써 집니다.
-
Confirm(확인)을 선택하여 작업을 완료합니다. 이렇게 하면 리포지토리에서 새 커밋을 생성합니다. AWS CodeCommit을(를) 사용하는 경우 확인 메시지에 AWS CodeCommit에 대한 최신 커밋에 대한 링크가 표시됩니다.
소스 리포지토리에서 AWS Glue 작업 가져오기
Version control(버전 관리) 탭에 Git 리포지토리의 세부 정보를 입력한 후에는 리포지토리에서 작업을 가져와 AWS Glue Studio에서 편집할 수도 있습니다.
-
AWS Glue Studio 작업에서 Actions(작업)을 선택합니다. 그러면 추가 메뉴 옵션이 열립니다.
-
Pull from repository(리포지토리에서 가져오기)를 선택합니다.
-
확인을 선택합니다. 이렇게 하면 리포지토리에서 최신 커밋을 가져와 AWS Glue Studio에서 작업을 업데이트합니다.
-
AWS Glue Studio에서 작업을 편집합니다. 변경할 경우 Actions(작업) 드롭다운 메뉴에서 Push to repository(리포지토리로 푸시)를 선택하여 작업을 리포지토리에 동기화할 수 있습니다.