Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

एक बार में सभी ग्लू जॉब की परिभाषा प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

समस्या का विवरण - उपयोगकर्ता के AWS ग्लू डेटा कैटलॉग में मौजूद सभी ग्लू जॉब की परिभाषा प्राप्त करने के लिए Python में boto3 लाइब्रेरी का उपयोग करें।

उदाहरण − AWS ग्लू डेटा कैटलॉग में मौजूद सभी ग्लू जॉब की परिभाषा प्राप्त करें।

इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम

चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।

चरण 2 - इस फ़ंक्शन के लिए किसी पैरामीटर की आवश्यकता नहीं है। यह उपयोगकर्ता खाते के लिए सभी सूचीबद्ध नौकरियों की परिभाषा लाएगा।

चरण 3 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं। सुनिश्चित करें कि क्षेत्र_नाम डिफ़ॉल्ट प्रोफ़ाइल में उल्लेख किया गया है। यदि इसका उल्लेख नहीं है, तो स्पष्ट रूप से region_name . पास करें सत्र बनाते समय।

चरण 4 - गोंद के लिए AWS क्लाइंट बनाएं।

चरण 5 - अब उपयोगकर्ता खाते में सूचीबद्ध सभी नौकरियों की परिभाषा प्राप्त करने के लिए get_jobs फ़ंक्शन का उपयोग करें। ध्यान दें कि list_jobs . में अंतर है और get_jobs . सूची_नौकरियां get_jobs के दौरान केवल AWS ग्लू डेटा कैटलॉग में मौजूद ग्लू जॉब के नाम प्राप्त करता है प्रत्येक कार्य की परिभाषा को पुनः प्राप्त करता है।

चरण 6 - यह प्रत्येक कार्य की परिभाषा देता है।

चरण 7 - कार्य की जाँच करते समय कुछ गलत होने पर सामान्य अपवाद को संभालें।

उदाहरण

उपयोगकर्ता खाते में सूचीबद्ध प्रत्येक कार्य की परिभाषा प्राप्त करने के लिए निम्नलिखित कोड का उपयोग करें -

import boto3
from botocore.exceptions import ClientError

def get_definition_of_glue_jobs():
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
      response = glue_client.get_jobs()
      return response
   except ClientError as e:
      raise Exception("boto3 client error in get_definition_of_glue_jobs: " + e.__str__())
   except Exception as e:
      raise Exception("Unexpected error in get_definition_of_glue_jobs: " + e.__str__())
print(get_definition_of_glue_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': {'Name': 'pythonshell', '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', 'Role': '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}, 'Command': {'Name':
'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':
'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQ2NjI2MTAsIm5hbm9zIjo2MjEwMDAwMDB9LC
JsYXN0RXZhbHVhdGVkS2V5Ijp7ImpvYk5hbWUiOnsicyI6InRpY2stZGF0YS10ZXN0In0sImFjY
291bnRJZCI6eyJzIjoiNzgyMjU4NDg1ODQxIn0sImpvYklkIjp7InMiOiJqXzhmZDc2MzhkYTcy
MGQ5Yzk1YTg4MTlkOTgxNTE5MDdjM2JmYWI3ZGYxNGUwNGExZGM0ZTIzZjViYjczM2M2ZTYifX1
9', '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'}, 'RetryAttempts': 0}}

  1. एक बार में कई ट्रिगर्स का विवरण प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण - अपने खाते में उपलब्ध ट्रिगर प्राप्त करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण के लिए, उन ट्रिगर का विवरण प्राप्त करें जिनकी आपके खाते में अनुमति है। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करे

  1. एक बार में कई ग्लू जॉब का विवरण प्राप्त करने के लिए Boto3 का उपयोग कैसे करें?

    इस लेख में, हम देखेंगे कि नौकरी के नामों की दी गई सूची के लिए संसाधन मेटाडेटा की सूची कैसे प्राप्त करें। समस्या का विवरण - अपने खाते में नौकरी उपलब्ध कराने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें। उदाहरण के लिए, अपने खाते में उपलब्ध नौकरियों का विवरण प्राप्त करें। इस समस्या को हल करने के लिए

  1. ग्लू जॉब की स्थिति की जांच करने के लिए Boto3 का उपयोग कैसे करें?

    समस्या का विवरण - ग्लू जॉब चलाने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें और स्थिति प्राप्त करें कि यह सफल हुआ या असफल। उदाहरण के लिए, कार्य चलाएं run_s3_file_job और इसे स्थिति प्राप्त करें। इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अप