ตัวอย่าง: ดึงรายละเอียด Job ที่มี Bookmark ชื่อ 'book-job' ใน AWS Glue Data Catalog
ข้อกำหนดปัญหา: ใช้ไลบรารี Boto3 ใน Python เพื่อดึงรายละเอียดของ Job ที่มี Bookmark ใน AWS Glue Data Catalog
ขั้นตอนการแก้ปัญหา
- ขั้นตอน 1: นำเข้า boto3 และ botocore exceptions
- ขั้นตอน 2: bookmarked_job_name เป็นพารามิเตอร์บังคับ ควรเป็น Job Name ที่มี Bookmark แล้ว มิฉะนั้นจะโยน EntityNotFoundException
- ขั้นตอน 3: สร้าง AWS session ด้วย Boto3
- ขั้นตอน 4: สร้าง AWS client สำหรับ Glue
- ขั้นตอน 5: ใช้ฟังก์ชัน get_job_bookmark ส่ง bookmarked_job_name เป็น JobName parameter
- ขั้นตอน 6: คืนค่ารายละเอียดเกี่ยวกับ Bookmark Entry หมายเหตุ: หาก job_name ไม่มี Bookmark จะโยนข้อยกเว้น EntityNotFound
- ขั้นตอน 7: จัดการข้อยกเว้นทั่วไป
ตัวอย่างโค้ด
import boto3
from botocore.exceptions import ClientError
def retrieves_details_of_bookmarked_job(bookmarked_job_name):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.get_job_bookmark(JobName=bookmarked_job_name)
return response
except ClientError as e:
raise Exception("boto3 client error in retrieves_details_of_bookmarked_job: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in retrieves_details_of_bookmarked_job: " + e.__str__())
print(retrieves_details_of_bookmarked_job("book-job"))
ผลลัพธ์
{'JobBookmarkEntry': {'JobName': 'book-job', 'Version': 8, 'Run': 2, 'Attempt': 2, 'PreviousRunId': 'jr_dee547c2f78422e34136aa12c85de010b823787833eee04fbf34bc9b8cb4f7b9', 'RunId': 'jr_a035fe15daa31e9a751f02876c26e5d11a829f2689803a9e9643bd61f70273e4', 'JobBookmark': '{"gdf":{"jsonClass":"HadoopDataSourceJobBookmarkState","timestamps":{"RUN":"1","HIGH_BAND":"900000","CURR_LATEST_PARTITION":"0","CURR_LATEST_PARTITIONS":"","CURR_RUN_START_TIME":"2020-10-30T13:03:43.730Z","INCLUDE_LIST":""}}}'}, 'ResponseMetadata': {'RequestId': 'bacf1497-***************996f05b3c1', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 28 Feb 2021 13:00:19 GMT', 'contenttype': 'application/x-amz-json-1.1', 'content-length': '535', 'connection': 'keep-alive', 'x-amzn-requestid': 'bacf1497-******************996f05b3c1'}, 'RetryAttempts': 0}}