কম্পিউটার টিউটোরিয়াল

Boto3 ব্যবহার করে একটি চলমান Glue Job-এর স্ট্যাটাস চেক করা


সমস্যা বিবরণ − 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 প্রদান করে।

ধাপ ৭ − get_job_run ফাংশন ব্যবহার করুন এবং আগের ফাংশনের রিজাল্ট থেকে RunId প্যারামিটার পাস করুন। এটি স্ট্যাটাস সম্পর্কে ডিকশনারি রিটার্ন করে।

ধাপ ৮ − এখন, জবের নির্দিষ্ট স্ট্যাটাস পাওয়া। স্ট্যাটাস হতে পারে Running যদি জব সম্পন্ন না হয়, অন্যথায় SUCCEEDED/FAILED।

ধাপ ৯ − জব চেক করার সময় যদি কিছু ভুল হয় তবে জেনেরিক এক্সসেপশন হ্যান্ডল করা।

উদাহরণ

এক্সিস্টিং Glue Job রান করে এর স্ট্যাটাস পাওয়ার জন্য নিচের কোড ব্যবহার করুন −

import boto3 from botocore.exceptions import ClientError def run_glue_job_get_status(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)         status_detail = glue_client.get_job_run(JobName=job_name, RunId=job_run_id.get("JobRunId"))         status = status_detail.get("JobRun").get("JobRunState")         return status     except ClientError as e:         raise Exception("boto3 client error in run_glue_job_get_status: " + e.__str__())     except Exception as e:         raise Exception("Unexpected error in run_glue_job_get_status: " + e.__str__()) # ১মবার স্ট্যাটাস পাওয়া print(run_glue_job_get_status("run_s3_file_job")) # কিছু সময় অপেক্ষা করে ২য়বার স্ট্যাটাস পাওয়া time.sleep(10) print(run_glue_job_get_status("run_s3_file_job"))

আউটপুট

##Get status 1st time Running #Get status 2nd time after waiting SUCCEEDED

  1. Boto3 ব্যবহার করে একসাথে একাধিক Glue Job-এর ডিটেইলস পাওয়া

  2. Boto3 ব্যবহার করে একটি চলমান Glue Job-এর স্ট্যাটাস চেক করা

  3. Boto3 লাইব্রেরি ব্যবহার করে Python-এ একটি Glue Job রান করা

  4. Boto3 ব্যবহার করে একটি Glue Job আছে কিনা চেক করা