DynamoDB Lambda এর সাথে স্ট্রীম

Dynamodb Lambda Era Sathe Strima



DynamoDB স্ট্রীমস হল Amazon DynamoDB এর একটি বৈশিষ্ট্য যা আপনাকে আপনার DynamoDB টেবিলে করা পরিবর্তন বা ডেটা পরিবর্তনের একটি রিয়েল-টাইম স্ট্রিম পেতে দেয়। আপনি এই বৈশিষ্ট্যটি ব্যবহার করতে পারেন এমন অ্যাপ্লিকেশনগুলি তৈরি করতে যা ডায়নামোডিবি টেবিলে ডেটা পরিবর্তনের প্রতিক্রিয়া দেখায় যেমন ক্যাশে আপডেট করা এবং বিজ্ঞপ্তি পাঠানো।

অবশ্যই, আপনি ডাউনস্ট্রিম প্রসেস এবং AWS Lambda ফাংশন ট্রিগার করতে DynamoDB স্ট্রিমগুলিও ব্যবহার করতে পারেন। Lambda, সংজ্ঞা অনুসারে, একটি সার্ভারহীন গণনা পরিষেবা যা ইভেন্টগুলির প্রতিক্রিয়া হিসাবে আপনার কোড চালায় এবং স্বয়ংক্রিয়ভাবে আপনার জন্য গণনা সংস্থানগুলি পরিচালনা করে।

আপনি স্ট্রীম রেকর্ডগুলি প্রক্রিয়া করতে এবং যথাযথ পদক্ষেপ নিতে Node.js, Python, Java, বা C# এ কোড লিখতে Lambda ব্যবহার করতে পারেন। Lambda এর সাথে DynamoDB স্ট্রীমগুলিকে একীভূত করার প্রধান সুবিধা হল Lambda আপনাকে প্রশাসনের প্রয়োজন ছাড়াই ব্যাকড পরিষেবা বা অ্যাপ্লিকেশন কোডগুলি চালানোর অনুমতি দেয়।







Lambda এর সাথে AWS DynamoDB স্ট্রীমগুলি কীভাবে ব্যবহার করবেন

যদিও একটি ল্যাম্বডা ফাংশন তৈরি করা সম্ভব যা একটি DynamoDB স্ট্রীম থেকে ইভেন্ট এবং ঘটনাগুলি গ্রহণ করে, প্রক্রিয়াটি বেশ কার্যকর হতে পারে, বিশেষ করে আপনার প্রথম প্রচেষ্টায়। নিম্নলিখিত পদক্ষেপগুলি সাহায্য করবে:



ধাপ 1: নিশ্চিত করুন যে আপনার সিস্টেম পূর্বশর্তগুলি পূরণ করে

এই পদ্ধতিটি তখনই সফল হবে যদি আপনি মৌলিক ল্যাম্বডা অপারেশন এবং প্রক্রিয়াগুলি জানেন। এইভাবে, ল্যাম্বডা সম্পর্কে আপনার বোঝার গড়ের উপরে তা নিশ্চিত করার জন্য এটি আপনার প্রথম হওয়া উচিত।



দ্বিতীয় পূর্বশর্ত যা বিবেচনার যোগ্য তা হল আপনার সিস্টেমের AWS সংস্করণ নিশ্চিত করা। আপনি নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন:





aws-সংস্করণ

প্রদত্ত কমান্ডের ফলাফলটি এইরকম হওয়া উচিত:

aws-cli/ 2 .x.x পাইথন/ 3 .x.x লিনাক্স/ 4 .x.x-xxx-std বোটোকোর/ 2 .x.x

প্রদত্ত নমুনা প্রতিক্রিয়াটিতে AWS CLI এর ইনস্টল করা সংস্করণ রয়েছে ( aws-cli/2.x.x ), পাইথন সংস্করণ ( পাইথন/3.x.x ), এবং অপারেটিং সিস্টেম ( Linux/4.x.x-xxx-std ) প্রতিক্রিয়ার চূড়ান্ত অংশটি বোটোকোর লাইব্রেরি সংস্করণটিকে সংজ্ঞায়িত করে যেটিতে আপনার AWS CLI চলে ( botocore/2.x.x )



অতএব, আপনি এই মত কিছু সঙ্গে শেষ হবে:

ধাপ 2: একটি এক্সিকিউশন রোল তৈরি করুন

পরবর্তী ধাপ হল AWS CLI-তে একটি কার্যকর ভূমিকা তৈরি করা। একটি এক্সিকিউশন রোল হল একটি AWS আইডেন্টিটি অ্যান্ড অ্যাকসেস ম্যানেজমেন্ট (IAM) ভূমিকা যা একটি AWS পরিষেবা দ্বারা আপনার পক্ষে কাজগুলি সম্পাদন করার জন্য গৃহীত হয়। এটি আপনাকে AWS সংস্থানগুলিতে অ্যাক্সেস দেয় যা আপনার পথে প্রয়োজন হবে।

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে একটি ভূমিকা তৈরি করতে পারেন:

aws iam সৃষ্টি-ভূমিকা \

--ভূমিকা-নাম LambdaDynamoDBEexecutionRole \

--assume-role-policy-document file://assume-role-policy.json \

-- বর্ণনা ' AWSLambdaDynamoDBEExecutionRole' \

--পরিষেবা-নাম lambda.amazonaws.com

পূর্ববর্তী কমান্ডটি একটি ভূমিকা তৈরি করার জন্য একটি AWS CLI কমান্ড। আপনি একটি ভূমিকা তৈরি করতে Amazon Management Console ব্যবহার করতে পারেন। আপনি একবার IAM কনসোলে গেলে, খুলুন ভূমিকা পৃষ্ঠা এবং ক্লিক করুন ভূমিকা তৈরি করুন বোতাম

নিম্নলিখিত লিখতে এগিয়ে যান:

  • বিশ্বস্ত সত্তা: Lambda
  • ভূমিকার নাম: lambda-dynamodb-ভূমিকা
  • অনুমতি: AWSLambdaDynamoDBExecutionRole

আপনি পাইথনের জন্য প্রথমে AWS SDK ইনস্টল করে পাইথন ব্যবহার করতে পারেন:

পিপ ইনস্টল boto3

ধাপ 3: আপনার টেবিলে DynamoDB স্ট্রিমগুলি সক্ষম করুন

আপনাকে আপনার টেবিলে DynamoDB স্ট্রিমগুলি সক্ষম করতে হবে। এই উদাহরণের জন্য, আমরা পাইথনের জন্য Boto3, AWS SDK ব্যবহার করি। নিম্নলিখিত কমান্ড সাহায্য করবে:

boto3 আমদানি করুন

# DynamoDB পরিষেবার সাথে সংযোগ করুন
dynamodb = boto3.client( 'dynamodb' )

# 'my-table' টেবিলে DynamoDB স্ট্রীমগুলি সক্ষম করুন৷
প্রতিক্রিয়া = dynamodb.update_table(
টেবিলের নাম= 'মিটেবল' ,
স্ট্রিম স্পেসিফিকেশন={
'স্ট্রিম সক্ষম' : সত্যি,
'স্ট্রিমভিউ টাইপ' : 'NEW_AND_OLD_IMAGES'
}
)

# স্ট্রীম সফলভাবে সক্ষম হয়েছে তা নিশ্চিত করতে প্রতিক্রিয়া পরীক্ষা করুন
যদি প্রতিক্রিয়া [ 'স্ট্রিম স্পেসিফিকেশন' [ 'স্ট্রিম সক্ষম' ]:
ছাপা( 'ডাইনামোডিবি স্ট্রিম সফলভাবে সক্ষম হয়েছে' )
অন্য:
ছাপা( 'DynamoDB স্ট্রীম সক্ষম করতে ত্রুটি' )

এই কোডটি 'mytable' টেবিলে DynamoDB স্ট্রীমকে সক্ষম করে যা যেকোনো পরিবর্তন ঘটলেই আইটেমের নতুন এবং পুরানো ছবি স্ট্রিম করে। আপনি StreamViewType থেকে “NEW_IMAGE”-এ শীঘ্রই নতুন ছবি স্ট্রিম করা বেছে নিতে পারেন।

উল্লেখযোগ্যভাবে, এই কোডটি চালানোর ফলে কিছুক্ষণ পরে আপনার টেবিলে স্ট্রিমগুলি সক্ষম হতে পারে। পরিবর্তে, প্রক্রিয়াটি কিছুটা সময় নিতে পারে। আপনি স্ট্রিমের স্থিতি পরীক্ষা করতে describe_table পদ্ধতি ব্যবহার করতে পারেন।

ধাপ 4: ল্যাম্বডা ফাংশন তৈরি করুন

পরবর্তী পদক্ষেপটি একটি ল্যাম্বডা ফাংশন তৈরি করছে যা ডায়নামোডিবি স্ট্রিমকে ট্রিগার করে। নিম্নলিখিত পদক্ষেপগুলি সাহায্য করা উচিত:

  • AWS Lambda কনসোল খুলুন এবং 'ফাংশন তৈরি করুন' ট্যাবে ক্লিক করুন। 'ফাংশন তৈরি করুন' পৃষ্ঠায়, 'স্ক্র্যাচ থেকে লেখক' নির্বাচন করুন এবং আপনার ফাংশনের জন্য একটি নাম লিখুন। এই সময়ে আপনাকে আপনার রানটাইম লিখতে হবে। আমরা এই চিত্রের জন্য পাইথন নির্বাচন করেছি।
  • আপনার Lambda ফাংশনের জন্য প্রয়োজনীয় অনুমতিগুলির সাথে একটি IAM ভূমিকা তৈরি করতে 'একটি কার্যকরী ভূমিকা চয়ন করুন বা তৈরি করুন' এর অধীনে, 'বেসিক ল্যাম্বডা অনুমতি সহ একটি নতুন ভূমিকা তৈরি করুন' নির্বাচন করুন৷
  • আপনার Lambda ফাংশন তৈরি করতে 'ফাংশন তৈরি করুন' বোতামে ক্লিক করুন।
  • আপনার ফাংশনের জন্য 'কনফিগারেশন' পৃষ্ঠায়, 'ডিজাইনার' বিভাগে স্ক্রোল করুন এবং 'ট্রিগার যোগ করুন' ট্যাবে ক্লিক করুন।
  • প্রদর্শিত 'ট্রিগার কনফিগারেশন' বাক্সে, 'ট্রিগার' ড্রপডাউন মেনু থেকে 'ডাইনামোডিবি' নির্বাচন করুন।
  • DynamoDB টেবিলটি নির্বাচন করুন যা আপনি ফাংশনটি ট্রিগার করতে ব্যবহার করতে চান। একবার হয়ে গেলে, আপনি টেবিলের সমস্ত আপডেটে ফাংশনটি ট্রিগার করতে চান নাকি শুধুমাত্র নির্দিষ্ট আপডেটে (যেমন নির্দিষ্ট কলামের আপডেট) চান কিনা তা চয়ন করুন।
  • ট্রিগার তৈরি করতে 'যোগ করুন' বোতামে ক্লিক করুন।
  • 'ফাংশন কোড' এডিটরে, আপনার ফাংশনের জন্য পাইথন কোড লিখুন। আপনি ফাংশনটি ট্রিগার করে এমন ডেটা অ্যাক্সেস করতে আপনার ফাংশনে পাস করা ইভেন্ট অবজেক্ট ব্যবহার করতে পারেন।
  • ফাংশনটি সংরক্ষণ করতে 'সংরক্ষণ করুন' বোতামে ক্লিক করুন।

ল্যাম্বডা ফাংশন তৈরি করার সময় এটিই ঘটে! যখনই নির্দিষ্ট DynamoDB টেবিলে আপডেট থাকে তখনই আপনার ফাংশনটি ট্রিগার হয়।

এখানে একটি সাধারণ পাইথন ফাংশনের একটি উদাহরণ যা DynamoDB স্ট্রিম ট্রিগার করতে পারে:

def lambda_handler(ইভেন্ট, প্রসঙ্গ):

ঘটনার রেকর্ডের জন্য[ 'রেকর্ড' ]:

মুদ্রণ(রেকর্ড[ 'dynamodb' [ 'নতুন চিত্র' ])

এই ফাংশনটি ইভেন্ট অবজেক্টের রেকর্ডের মাধ্যমে পুনরাবৃত্তি করে এবং DynamoDB টেবিলে আইটেমের নতুন চিত্র প্রিন্ট করে যা ফাংশনটিকে ট্রিগার করে।

ধাপ 5: ল্যাম্বডা ফাংশন পরীক্ষা করুন

একটি ল্যাম্বডা ফাংশন পরীক্ষা করতে যা একটি DynamoDB স্ট্রিম ট্রিগার করতে পারে, আপনি ব্যবহার করতে পারেন boto3 DynamoDB API অ্যাক্সেস করতে লাইব্রেরি এবং আহ্বান পদ্ধতি ল্যাম্বদা ফাংশন ট্রিগার করার জন্য ক্লায়েন্ট।

এটি কিভাবে করতে হয় তার একটি উদাহরণ এখানে:

boto3 আমদানি করুন

# DynamoDB পরিষেবার সাথে সংযোগ করুন
dynamodb = boto3.client( 'dynamodb' )

# Lambda পরিষেবার সাথে সংযোগ করুন
lambda_client = boto3.client( 'ল্যাম্বডা' )

# 'মাই-টেবিল' টেবিলে একটি আইটেম ঢোকান
প্রতিক্রিয়া = dynamodb.put_item(
টেবিলের নাম= 'মিটেবল' ,
আইটেম={
'আইডি' :{ 'এন' : '123' },
'নাম' :{ 'এস' : 'জোয়েল অস্টিন},
'
বয়স ':{' এন ':' 3. 4 '}
}
)

# আইটেমটি সফলভাবে সন্নিবেশ করা হয়েছে তা নিশ্চিত করতে প্রতিক্রিয়া পরীক্ষা করুন
যদি প্রতিক্রিয়া ['
প্রতিক্রিয়া মেটাডেটা '][' HTTPStatusCode '] == 200:
মুদ্রণ ('আইটেম সফলভাবে সন্নিবেশ করা হয়েছে')
অন্য:
মুদ্রণ ('আইটেম সন্নিবেশে ত্রুটি')

# ল্যাম্বডা ফাংশনটি ট্রিগার করুন যা 'সাবস্ক্রাইব করা হয়েছে
আমার টেবিল ' টেবিল
প্রতিক্রিয়া = lambda_client.invoke(
ফাংশনের নাম='
myfunction ',
আহ্বানের ধরন='
ঘটনা ',
লগ টাইপ='
লেজ ',
পেলোড='
{ 'রেকর্ড' :[{ 'dynamodb' :{ 'নতুন চিত্র' :{ 'আইডি' :{ 'এন' : '123' }, 'নাম' :{ 'এস' : 'জোয়েল অস্টিন' }, 'বয়স' :{ 'এন' : '3. 4' }}}}]} '
)

# ফাংশনটি সফলভাবে ট্রিগার হয়েছে তা নিশ্চিত করতে প্রতিক্রিয়া পরীক্ষা করুন
যদি প্রতিক্রিয়া ['
স্ট্যাটাসকোড '] == 202:
মুদ্রণ ('ল্যাম্বডা ফাংশন সফলভাবে ট্রিগার হয়েছে')
অন্য:
প্রিন্ট ('ল্যাম্বডা ফাংশন ট্রিগার করার সময় ত্রুটি')

এই কোড প্রথমে একটি আইটেম সন্নিবেশ করান mytable টেবিল এবং তারপর ট্রিগার myfunction ল্যাম্বডা ফাংশন ব্যবহার করে ফাংশনে একটি নমুনা ইভেন্ট পেলোড পাঠিয়ে আহ্বান পদ্ধতি ইভেন্ট পেলোড একটি DynamoDB স্ট্রীম ইভেন্টকে অনুকরণ করে যাতে এইমাত্র ঢোকানো আইটেমের নতুন ছবি অন্তর্ভুক্ত থাকে।

তারপরে আপনি Lambda ফাংশনের লগগুলি পরীক্ষা করে দেখতে পারেন যে এটি সফলভাবে ট্রিগার করেছে এবং ইভেন্ট ডেটা প্রক্রিয়া করেছে কিনা।

উপসংহার

এটি লক্ষ করা গুরুত্বপূর্ণ যে আপনি একই স্ট্রিম রেকর্ডের জন্য একাধিকবার আহ্বান করতে পারেন যা একটি DynamoDB স্ট্রিম একটি Lambda ফাংশন ট্রিগার করতে পারে। এর পিছনে প্রাথমিক কারণ হল যে স্ট্রিম রেকর্ডগুলি শেষ পর্যন্ত সামঞ্জস্যপূর্ণ, এবং ল্যাম্বডা ফাংশন দ্বারা একই রেকর্ড একাধিকবার প্রক্রিয়া করা সম্ভব। এই কেসটি সঠিকভাবে পরিচালনা করার জন্য আপনার ল্যাম্বডা ফাংশন ডিজাইন করা অত্যন্ত গুরুত্বপূর্ণ।