문제 정의
Python의 boto3 라이브러리를 사용하여 본인 AWS 계정에 생성된 Glue 작업(Job)을 삭제하는 방법을 알아봅니다.
예시 — 계정에 생성된 'transfer_from_s3'라는 이름의 Glue 작업을 삭제합니다.
문제 해결 접근 방식
1단계 — boto3와 botocore 예외 처리 모듈을 임포트하여 예외 상황을 처리할 수 있도록 준비합니다.
2단계 — AWS Glue 카탈로그에서 삭제할 대상 작업의 이름(job_name)을 매개변수로 전달합니다.
3단계 — boto3 라이브러리를 사용해 AWS 세션을 생성합니다. 기본 프로필에 region_name이 설정되어 있는지 확인하고, 설정되어 있지 않다면 세션 생성 시 명시적으로 region_name을 전달해야 합니다.
4단계 — AWS Glue 서비스를 위한 클라이언트를 생성합니다.
5단계 — delete_job 함수를 호출하고 job_name을 JobName 매개변수로 전달합니다.
6단계 — 작업이 삭제되면 응답 메타데이터(ResponseMetadata)가 반환됩니다.
7단계 — 작업 처리 중 오류가 발생할 경우 일반 예외(generic exception)를 처리합니다.
참고 — 이 작업이 완료되면 지정된 작업 정의가 삭제됩니다. 만약 AWS Glue에서 해당 작업을 찾지 못하더라도 예외가 발생하지 않으며, 삭제에 성공했을 때와 동일한 출력이 반환됩니다.
예제 코드
다음 코드를 사용하여 AWS Glue에서 Glue 작업을 삭제할 수 있습니다:
import boto3
from botocore.exceptions import ClientError
def delete_a_glue_job(job_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.delete_job(JobName=job_name)
return response
except ClientError as e:
raise Exception("boto3 client error in delete_a_glue_job: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in delete_a_glue_job: " + e.__str__())
print(delete_a_glue_job("transfer_from_s3"))출력 결과
{'JobName': 'transfer_from_s3', 'ResponseMetadata': {'RequestId': '126adb54-f0a0-4558-b345-d6a4e62674f3', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 27 Feb 2021 15:53:27 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '22', 'connection': 'keep-alive', 'x-amzn-requestid': '126adb54-……-d6a4e62674f3'}, 'RetryAttempts': 0}}