Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีการใช้ Boto3 เพื่อให้ได้คำจำกัดความของงานกาวทั้งหมดในคราวเดียว?


คำชี้แจงปัญหา − ใช้ไลบรารี boto3 ใน Python เพื่อดูคำจำกัดความของงานกาวทั้งหมดที่มีอยู่ในแคตตาล็อก AWS Glue Data ของผู้ใช้

ตัวอย่าง − รับคำจำกัดความของงานกาวทั้งหมดที่มีอยู่ในแคตตาล็อก AWS Glue Data

แนวทาง/อัลกอริทึมในการแก้ปัญหานี้

ขั้นตอนที่ 1 - นำเข้าข้อยกเว้น boto3 และ botocore เพื่อจัดการกับข้อยกเว้น

ขั้นตอนที่ 2 − ไม่จำเป็นต้องใช้พารามิเตอร์สำหรับฟังก์ชันนี้ มันจะดึงคำจำกัดความของงานที่ระบุไว้ทั้งหมดสำหรับบัญชีผู้ใช้

ขั้นตอนที่ 3 − สร้างเซสชัน AWS โดยใช้ไลบรารี boto3 ตรวจสอบให้แน่ใจว่า region_name ถูกกล่าวถึงในโปรไฟล์เริ่มต้น หากไม่กล่าวถึง ให้ส่ง region_name . อย่างชัดแจ้ง ขณะสร้างเซสชัน

ขั้นตอนที่ 4 − สร้างไคลเอนต์ AWS สำหรับกาว

ขั้นตอนที่ 5 − ตอนนี้ใช้ฟังก์ชัน get_jobs เพื่อรับคำจำกัดความของงานทั้งหมดที่ระบุไว้ในบัญชีผู้ใช้ โปรดทราบว่ามีความแตกต่างใน list_jobs และ get_jobs . List_jobs เพิ่งดึงชื่องานกาวที่มีอยู่ในแคตตาล็อก AWS Glue Data ขณะที่ get_jobs เรียกคำจำกัดความของแต่ละงาน

ขั้นตอนที่ 6 − ส่งคืนคำจำกัดความของแต่ละงาน

ขั้นตอนที่ 7 − จัดการข้อยกเว้นทั่วไปหากมีข้อผิดพลาดขณะตรวจสอบงาน

ตัวอย่าง

ใช้รหัสต่อไปนี้เพื่อดึงคำจำกัดความของแต่ละงานที่ระบุไว้ในบัญชีผู้ใช้ -

นำเข้า boto3from botocore.exceptions นำเข้า ClientErrordef get_definition_of_glue_jobs():session =boto3.session.Session() glue_client =session.client('glue') ลอง:response =glue_client.get_jobs() ตอบกลับ ยกเว้น ClientError เป็น e:ยก ข้อยกเว้น ("ข้อผิดพลาดของไคลเอ็นต์ boto3 ใน get_definition_of_glue_jobs:" + e.__str__ ()) ยกเว้นข้อยกเว้นเมื่อ e:ยกข้อยกเว้น ("ข้อผิดพลาดที่ไม่คาดคิดใน get_definition_of_glue_jobs:" + e.__str__())print(get_definition_of_gluepre_jobs>)ผลลัพธ์ 
{'Jobs':[{'Name':'01_PythonShellTest1', 'Role':'arn:aws:iam::**********:role/devedl-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://ivz-dev-ds-staging-/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::************:role/dev-edl-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 ':{'ชื่อ':'pythons hell', 'ScriptLocation':'s3://ivz-dev-dsstaging-work/ /test_14012021/01_pythonSHELL_14012021_123.py', 'PythonVersion':'3'}, 'DefaultArguments':{'--job-bookmark-option ':'jobbookmark-disable'} 'MaxRetries':0, 'AllocatedCapacity':0, 'Timeout':2880 'MaxCapacity':0.0625 'GlueVersion':'1.0'}, {'Name':'GlueConnectionTest' , 'บทบาท':'arn:aws:iam::*******:role/devedl-qa-automation-glue-role', 'CreatedOn':datetime.datetime(2020, 3, 6, 16, 27, 3, 862000, tzinfo=tzlocal()), 'LastModifiedOn':datetime.datetime(2020, 3, 6, 16, 49, 19, 942000, tzinfo=tzlocal()),'ExecutionProperty':{' MaxConcurrentRuns':1} 'คำสั่ง':{'ชื่อ':'pythonshell', 'ScriptLocation':'s3://glue-job-connection-testbucket/test.py', 'PythonVersion':'3'}, 'DefaultArguments':{'--jobbookmark-option':'job-bookmark-disable', '--job-language':'python'},'Connections':{'Connections':['dev-edl-redshift' -glue-connection', 'devedl-rds-glue-connection']}, 'MaxRetries':0, 'AllocatedCapacity':0,'Timeout':2880, 'MaxCapacity':0.0625 'GlueVersion':'1.0'}] NextToken ':'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQ2NjI2MTAsIm5hbm9zIjo2MjEwMDAwMDB9LCJsYXN0RXZhbHVhdGVkS2V5Ijp7ImpvYk5hbWUiOnsicyI6InRpY2stZGF0YS10ZXN0In0sImFjY291bnRJZCI6eyJzIjoiNzgyMjU4NDg1ODQxIn0sImpvYklkIjp7InMiOiJqXzhmZDc2MzhkYTcyMGQ5Yzk1YTg4MTlkOTgxNTE5MDdjM2JmYWI3ZGYxNGUwNGExZGM0ZTIzZjViYjczM2M2ZTYifX19',' ResponseMetadata:{ 'requestID':'287ad828 - ******************* *******af', 'HTTPStatusCode':200, 'HTTPHeaders':{'date':'Mon, 01 Mar 2021 05:23:30 GMT', 'content-type':'application/xamz- json-1.1', 'content-length':'8258', 'connection':'keep-alive', 'xamzn-requestid':'287ad828-**************** *af'} 'ลองใหม่อีกครั้ง':0}}