ভূমিকা
AWS Glue ওয়ার্কফ্লো (Workflow) একাধিক জব এবং ক্রলার অর্কেস্ট্রেট করে। একটি রানিং ওয়ার্কফ্লো বন্ধ করতে stop_workflow_run API ব্যবহার করা হয়, যার জন্য ওয়ার্কফ্লোর নাম এবং রান আইডি (RunId) দরকার।
সমস্যা বিবরণ
পাইথনে boto3 লাইব্রেরি ব্যবহার করে একটি ওয়ার্কফ্লো বন্ধ করা।
অ্যালগরিদম / ধাপসমূহ
- boto3 এবং botocore.exceptions ইম্পোর্ট করুন।
- ফাংশনটি দুটি বাধ্যতামূলক প্যারামিটার নেবে: workflow_name এবং run_id।
- AWS সেশন এবং Glue ক্লায়েন্ট তৈরি করুন।
glue_client.stop_workflow_run(Name=workflow_name, RunId=run_id)কল করুন।- রেসপন্স মেটাডেটা এবং বন্ধ করা রান আইডি রিটার্ন করবে।
- এক্সেপশন হ্যান্ডল করুন।
উদাহরণ কোড
import boto3
from botocore.exceptions import ClientError
def stop_a_workflow(workflow_name, run_id):
session = boto3.session.Session()
glue_client = session.client('glue')
try:
response = glue_client.stop_workflow_run(Name=workflow_name, RunId=run_id)
return response
except ClientError as e:
raise Exception("boto3 client error in stop_a_workflow: " + e.__str__())
except Exception as e:
raise Exception("Unexpected error in stop_a_workflow: " + e.__str__())
# উদাহরণ: run_id দরকার, এখানে শুধু workflow_name দিয়ে কল করা হয়েছে (এরর হবে)
print(stop_a_workflow("test-daily", "wr_64e880240692fddd5e1b19aed587f856bc20a96f54bc"))
আউটপুট
{'RunId': 'wr_64e880240692fddd5e1b19aed587f856bc20a96f54bc', 'ResponseMetadata': {'RequestId': '782e953b-8ee3-4876-9b2c-cd35e147b513', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sun, 28 Mar 2021 08:11:02 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '79', 'connection': 'keep-alive', 'x-amzn-requestid': '782e953b-********************************13'}, 'RetryAttempts': 0}}
ব্যাখ্যা
RunIdপাওয়ার জন্যstart_workflow_runবাget_workflow_runব্যবহার করুন।ওয়ার্কফ্লো বন্ধ করলে এর সব চাইল্ড জব/ক্রলারও বন্ধ হয়ে যেতে পারে (ওয়ার্কফ্লো কনফিগারেশনের ওপর নির্ভর করে)।
উদাহরণ কোডে কলের সময়
run_idপাস করা হয়নি (মুল কোডে), সঠিক ব্যবহার উপরে দেখানো হয়েছে।