समस्या विवरण - Python में boto3 लाइब्रेरी का उपयोग करके Glue जॉब चलाएं। उदाहरण के लिए, जॉब run_s3_file_job चलाएं।
इस समस्या को हल करने का दृष्टिकोण/एल्गोरिदम
चरण 1 - अपवादों को संभालने के लिए boto3 और botocore एक्सेप्शन्स आयात करें।
चरण 2 - job_name फंक्शन में अनिवार्य पैरामीटर्स हैं जबकि arguments वैकल्पिक पैरामीटर है। कुछ जॉब्स चलाने के लिए आर्गुमेंट्स लेते हैं। उस स्थिति में, आर्गुमेंट्स को डिक्ट के रूप में पास किया जा सकता है।
उदाहरण के लिए: arguments = {'arguments1' = 'value1', 'arguments2' = 'value2'}
यदि जॉब आर्गुमेंट नहीं लेता है, तो केवल job_name पास करें।
चरण 3 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि region_name डिफ़ॉल्ट प्रोफ़ाइल में उल्लिखित है। यदि नहीं बताया गया है, तो सत्र बनाते समय region_name को स्पष्ट रूप से पास करें।
चरण 4 - Glue के लिए AWS क्लाइंट बनाएं।
चरण 5 - अब start_job_run फंक्शन का उपयोग करें और JobName और आवश्यकता होने पर आर्गुमेंट्स पास करें।
चरण 6 - एक बार जॉब शुरू होने पर, यह जॉब के मेटाडेटा के साथ job_run_id प्रदान करता है।
चरण 7 - जॉब चेक करते समय यदि कुछ गलत हुआ तो सामान्य अपवाद को संभालें।
उदाहरण
मौजूदा Glue जॉब चलाने के लिए निम्न कोड का उपयोग करें -
import boto3 from botocore.exceptions import ClientError def run_glue_job(job_name, arguments={}): session = boto3.session.Session() glue_client = session.client('glue') try: job_run_id = glue_client.start_job_run(JobName=job_name, Arguments=arguments) return job_run_id except ClientError as e: raise Exception("boto3 client error in run_glue_job: " + e.__str__()) except Exception as e: raise Exception("Unexpected error in run_glue_job: " + e.__str__()) print(run_glue_job("run_s3_file_job"))आउटपुट
{'JobRunId': 'jr_5f8136286322ce5b7d0387e28df6742abc6f5e6892751431692ffd717f45fc00', 'ResponseMetadata': {'RequestId': '36c48542-a060-468b-83ccb067a540bc3c', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 13 Feb 2021 13:36:50 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '82', 'connection': 'keep-alive', 'x-amzn-requestid': '36c48542-a060-468b-83cc-b067a540bc3c'}, 'RetryAttempts': 0}}