এই আর্টিকেলে, আমরা দেখব কিভাবে একটি দেওয়া জব নামের লিস্টের জন্য রিসোর্স মেটাডেটা পাওয়া যায়।
সমস্যা বিবরণ − Python-এ boto3 লাইব্রেরি ব্যবহার করে আপনার অ্যাকাউন্টে উপলব্ধ জবগুলো পাওয়া। উদাহরণস্বরূপ, আপনার অ্যাকাউন্টে উপলব্ধ জবগুলোর ডিটেইলস পাওয়া।
সমাধানের পদ্ধতি/অ্যালগরিদম
ধাপ ১ − boto3 এবং botocore এক্সসেপশন ইম্পোর্ট করে এক্সসেপশন হ্যান্ডল করা।
ধাপ ২ − এই ফাংশনের জন্য কোনো প্যারামিটার প্রয়োজন নেই। এটি ইউজার অ্যাকাউন্টের জন্য লিস্ট করা সকল জব আনয়ন করবে এবং তারপর প্রতিটি জবের মেটাডেটা প্রদর্শন করবে।
ধাপ ৩ − boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করা। নিশ্চিত করুন region_name ডিফল্ট প্রোফাইলে ذکر করা আছে। না থাকলে সেশন তৈরি করার সময় স্পষ্টভাবে region_name পাস করুন।
ধাপ ৪ − Glue-এর জন্য AWS ক্লায়েন্ট তৈরি করা।
ধাপ ৫ − এখন list_jobs ফাংশন ব্যবহার করে ইউজার অ্যাকাউন্টে লিস্ট করা সকল জব পাওয়া।
ধাপ ৬ − batch_get_jobs কল করা এবং আগের ফাংশনে পাওয়া জব নামগুলো পাস করা।
ধাপ ৭ − এটি list_of_jobs এবং প্রতিটি জবের মেটাডেটা রিটার্ন করে।
ধাপ ৮ − জব চেক করার সময় যদি কিছু ভুল হয় তবে জেনেরিক এক্সসেপশন হ্যান্ডল করা।
উদাহরণ
ইউজার অ্যাকাউন্টে লিস্ট করা প্রতিটি জবের ডিটেইলস আনয়ন করতে নিচের কোড ব্যবহার করুন −
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() # জবদের লিস্ট print(a) # প্রতিটি জবের রিসোর্স মেটাডেটা print(b)আউটপুট
# জবদের লিস্ট {'JobNames': ['01_PythonShellTest1', '01_pythonSHELL_14012021'], 'NextToken': 'eyJleHBpcmF0aW9uIjp7InNlY29uZHMiOjE2MTQxNzE2OTksIm5hbm9zIjo1MTYwMDAwMDB9LCJsYXN0RXZhbHVzFiMzAzNzAxMzRmNDk3NWM3M2MyMjhjYTk5MDgzZTA3YjQ0ZWEyOTZlIn19fQ==', '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}} # প্রতিটি জবের রিসোর্স মেটাডেটা {'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'}]}