ในบทความนี้ เราจะมาดูวิธีรับรายการข้อมูลเมตาของทรัพยากรสำหรับรายชื่องานที่ระบุ
คำชี้แจงปัญหา − ใช้ไลบรารี boto3 ใน Python เพื่อรับงานที่มีอยู่ในบัญชีของคุณ เช่น รับรายละเอียดของงานที่มีอยู่ในบัญชีของคุณ
แนวทาง/อัลกอริทึมในการแก้ปัญหานี้
ขั้นตอนที่ 1 - นำเข้าข้อยกเว้น boto3 และ botocore เพื่อจัดการกับข้อยกเว้น
ขั้นตอนที่ 2 − ไม่จำเป็นต้องใช้พารามิเตอร์สำหรับฟังก์ชันนี้ มันจะดึงงานที่ระบุไว้ทั้งหมดสำหรับบัญชีผู้ใช้แล้วแสดงข้อมูลเมตาของแต่ละงาน
ขั้นตอนที่ 3 − สร้างเซสชัน AWS โดยใช้ไลบรารี boto3 ตรวจสอบให้แน่ใจว่า region_name ถูกกล่าวถึงในโปรไฟล์เริ่มต้น หากไม่กล่าวถึง ให้ส่ง region_name . อย่างชัดแจ้ง ขณะสร้างเซสชัน
ขั้นตอนที่ 4 − สร้างไคลเอนต์ AWS สำหรับกาว
ขั้นตอนที่ 5 − ตอนนี้ใช้ฟังก์ชัน list_jobs เพื่อรับงานทั้งหมดที่ระบุไว้ในบัญชีผู้ใช้
ขั้นตอนที่ 6 − โทร batch_get_jobs และส่งชื่องานที่ดึงมาในฟังก์ชันก่อนหน้า
ขั้นตอนที่ 7 − ส่งคืน list_of_jobs และข้อมูลเมตาของแต่ละงาน
ขั้นตอนที่ 8 − จัดการข้อยกเว้นทั่วไปหากมีข้อผิดพลาดขณะตรวจสอบงาน
ตัวอย่าง
ใช้รหัสต่อไปนี้เพื่อดึงรายละเอียดของแต่ละงานที่ระบุไว้ในบัญชีผู้ใช้ -
import boto3 from botocore.exceptions import ClientError def get_resource_maetadata_of_glue_jobs(): session = boto3.session.Session() glue_client = session.client('glue') try: list_of_jobs = glue_client.list_jobs() response = glue_client.batch_get_jobs(JobNames=list_of_jobs['JobNames']) return list_of_jobs, response except ClientError as e: raise Exception( "boto3 client error in get_resource_maetadata_of_glue_jobs: " + e.__str__()) except Exception as e: raise Exception( "Unexpected error in get_resource_maetadata_of_glue_jobs: " + e.__str__()) a, b = get_resource_metadat_of_glue_jobs() #List of Jobs print(a) #Resource metadata of each job print(b)
ผลลัพธ์
#List of Jobs {'JobNames': ['01_PythonShellTest1', '01_pythonSHELL_14012021'], 'NextToken': 'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQxNzE2OTksIm5hbm9zIjo1MTYwMDAwMDB 9LCJsYXN0RXZhbHV zFiMzAzNzAxMzRmNDk3NWM3M2MyMjhjYTk5MDgzZTA3YjQ0ZWEyOTZlIn19fQ==', 'ResponseMetadata': {'RequestId': '5d3eb19a-41f5-b24e-2d59ed9664b5', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Tue, 23 Feb 2021 13:01:39 GMT', 'content-type': 'application/x-amz-json-1.1', 'contentlength': '1134', 'connection': 'keep-alive', 'x-amzn-requestid': '5d3eb19a-41f5-b24e-2d59ed9664b5'}, 'RetryAttempts': 0}} #Resource metadata of each job {'Jobs': [{'Name': '01_PythonShellTest1', 'Role': 'arn:aws:iam::1234:role/dev-edl-glue-role', 'CreatedOn': datetime.datetime(2021, 1, 6, 19, 59, 19, 387000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2021, 2, 9, 21, 47, 31, 614000, tzinfo=tzlocal()), 'ExecutionProperty': {'MaxConcurrentRuns': 1}, 'Command': {'Name': 'pythonshell', 'ScriptLocation': 's3://test/01_pythonShellTest/test1/01_PythonShellTest1.py', 'PythonVersion': '3'}, 'DefaultArguments': {'--job-bookmark-option': 'job-bookmark-disable', '--job-language': 'python'}, 'MaxRetries': 0, 'AllocatedCapacity': 0, 'Timeout': 2880, 'MaxCapacity': 0.0625, 'GlueVersion': '1.0'}, {'Name': '01_pythonSHELL_14012021', 'Role': 'arn:aws:iam::1234:role/devedl-glue-role', 'CreatedOn': datetime.datetime(2021, 1, 14, 20, 22, 40, 965000, tzinfo=tzlocal()), 'LastModifiedOn': datetime.datetime(2021, 1, 14, 20, 22, 40, 965000, tzinfo=tzlocal()), 'ExecutionProperty': {'MaxConcurrentRuns': 1}, 'Command': {'Name': 'pythonshell', 'ScriptLocation': 's3://test/01_pythonSHELL_14012021_123.py', 'PythonVersion': '3'}, 'DefaultArguments': {'--job-bookmark-option': 'job-bookmark-disable'}, 'MaxRetries': 0, 'AllocatedCapacity': 0, 'Timeout': 2880, 'MaxCapacity': 0.0625, 'GlueVersion': '1.0'}]}