সমস্যা বিবরণ − Python-এ boto3 লাইব্রেরি ব্যবহার করে একটি Glue Job রান করা। উদাহরণস্বরূপ, run_s3_file_job জবটি রান করা।
সমাধানের পদ্ধতি/অ্যালগরিদম
ধাপ ১ − boto3 এবং botocore এক্সসেপশন ইম্পোর্ট করে এক্সসেপশন হ্যান্ডল করা।
ধাপ ২ − job_name হলো বাধ্যতামূলক প্যারামিটার যখন arguments ফাংশনে অপশনাল প্যারামিটার। কিছু জব রান করার জন্য আর্গুমেন্ট নেয়। সেক্ষেত্রে আর্গুমেন্ট ডিকশনারি হিসেবে পাস করা যায়।
উদাহরণ: arguments = {'arguments1': 'value1', 'arguments2': 'value2'}
যদি জবটি আর্গুমেন্ট না নেয়, তবে শুধু job_name পাস করুন।
ধাপ ৩ − boto3 লাইব্রেরি ব্যবহার করে AWS সেশন তৈরি করা। নিশ্চিত করুন region_name ডিফল্ট প্রোফাইলে ذکر করা আছে। না থাকলে সেশন তৈরি করার সময় স্পষ্টভাবে region_name পাস করুন।
ধাপ ৪ − Glue-এর জন্য AWS ক্লায়েন্ট তৈরি করা।
ধাপ ৫ − এখন start_job_run ফাংশন ব্যবহার করুন এবং JobName এবং arguments পাস করুন (যদি প্রয়োজন হয়)।
ধাপ ৬ − একবার জব শুরু হলে, এটি জবের মেটাডেটা সহ job_run_id প্রদান করে।
ধাপ ৭ − জব চেক করার সময় যদি কিছু ভুল হয় তবে জেনেরিক এক্সসেপশন হ্যান্ডল করা।
উদাহরণ
এক্সিস্টিং Glue Job রান করতে নিচের কোড ব্যবহার করুন −
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}}