DynamoDB لیمبڈا کے ساتھ اسٹریمز

Dynamodb Lymb A K Sat As Rymz



DynamoDB Strems Amazon DynamoDB میں ایک خصوصیت ہے جو آپ کو تبدیلیوں یا ڈیٹا کی تبدیلیوں کا حقیقی وقت حاصل کرنے کی اجازت دیتی ہے جو آپ کے DynamoDB ٹیبلز میں کی گئی ہیں۔ آپ اس خصوصیت کو ایسی ایپلی کیشنز بنانے کے لیے استعمال کر سکتے ہیں جو DynamoDB ٹیبلز میں ڈیٹا کی تبدیلیوں پر ردعمل ظاہر کرتی ہیں جیسے کیشز کو اپ ڈیٹ کرنا اور اطلاعات بھیجنا۔

بلاشبہ، آپ DynamoDB اسٹریمز کو ڈاؤن اسٹریم پروسیسز اور AWS Lambda فنکشنز کو متحرک کرنے کے لیے بھی استعمال کر سکتے ہیں۔ لیمبڈا، تعریف کے لحاظ سے، ایک سرور لیس کمپیوٹ سروس ہے جو واقعات کے جواب میں آپ کا کوڈ چلاتی ہے اور خودکار طور پر آپ کے لیے کمپیوٹ وسائل کا انتظام کرتی ہے۔

آپ لیمبڈا کو Node.js، Python، Java، یا C# میں کوڈ لکھنے کے لیے استعمال کر سکتے ہیں تاکہ سٹریم ریکارڈز پر کارروائی کی جا سکے اور مناسب کارروائی کی جا سکے۔ DynamoDB اسٹریمز کو Lambda کے ساتھ ضم کرنے کا بنیادی فائدہ یہ ہے کہ Lambda آپ کو ایڈمنسٹریشن کی ضرورت کے بغیر حمایت یافتہ خدمات یا ایپلیکیشن کوڈز چلانے کی اجازت دیتا ہے۔







لیمبڈا کے ساتھ AWS DynamoDB اسٹریمز کا استعمال کیسے کریں۔

اگرچہ ایک لیمبڈا فنکشن بنانا ممکن ہے جو DynamoDB سٹریم سے ہونے والے واقعات اور واقعات کو استعمال کرتا ہے، یہ عمل کافی کام کر سکتا ہے، خاص طور پر آپ کی پہلی کوشش پر۔ مندرجہ ذیل اقدامات مدد کریں گے:



مرحلہ 1: یقینی بنائیں کہ آپ کا سسٹم شرائط کو پورا کرتا ہے۔

یہ طریقہ کار صرف اس صورت میں کامیاب ہوگا جب آپ کو لیمبڈا کے بنیادی آپریشنز اور عمل کا علم ہو۔ اس طرح، یہ یقینی بنانے کے لیے آپ کا پہلا ہونا چاہیے کہ لیمبڈا کے بارے میں آپ کی سمجھ اوسط سے زیادہ ہے۔



دوسری شرط جو قابل غور ہے وہ ہے آپ کے سسٹم کے AWS ورژن کی تصدیق کرنا۔ آپ درج ذیل کمانڈ کو استعمال کر سکتے ہیں:





aws - ورژن

فراہم کردہ کمانڈ کا نتیجہ اس طرح نظر آنا چاہئے:

aws-cli/ 2 .x.x ازگر/ 3 .x.x Linux/ 4 .x.x-xxx-std botocore/ 2 .x.x

دیئے گئے نمونے کے جواب میں AWS CLI ( aws-cli/2.x.x )، ازگر ورژن ( Python/3.x.x اور آپریٹنگ سسٹم ( Linux/4.x.x-xxx-std )۔ جواب کا آخری حصہ بوٹوکور لائبریری ورژن کی وضاحت کرتا ہے جس پر آپ کا AWS CLI چلتا ہے ( botocore/2.x.x



لہذا، آپ کچھ اس طرح کے ساتھ ختم کریں گے:

مرحلہ 2: ایک ایگزیکیوشن رول بنائیں

اگلا مرحلہ AWS CLI میں ایک ایگزیکیوشن رول بنانا ہے۔ ایک ایگزیکیوشن رول AWS Identity and Access Management (IAM) کا کردار ہے جسے AWS سروس آپ کی طرف سے کام انجام دینے کے لیے قبول کرتی ہے۔ یہ آپ کو AWS وسائل تک رسائی فراہم کرتا ہے جس کی آپ کو راستے میں ضرورت ہوگی۔

آپ مندرجہ ذیل کمانڈ کا استعمال کرتے ہوئے ایک کردار بنا سکتے ہیں:

aws iam create-role \

--role-name LambdaDynamoDBEexecutionRole\

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

--تفصیل 'AWSLambdaDynamoDBEExecutionRole' \

--service-name lambda.amazonaws.com

پچھلی کمانڈ رول بنانے کے لیے AWS CLI کمانڈ ہے۔ آپ کردار بنانے کے لیے Amazon Management Console کا بھی استعمال کر سکتے ہیں۔ ایک بار جب آپ IAM کنسول پر ہیں، کھولیں۔ کردار صفحہ اور کلک کریں کردار بنائیں بٹن

درج ذیل درج کرنے کے لیے آگے بڑھیں:

  • قابل اعتماد ہستی: لیمبڈا
  • کردار کا نام: lambda-dynamodb-role
  • اجازتیں: AWSLambdaDynamoDBExecutionRole

آپ ازگر کے لیے پہلے AWS SDK انسٹال کر کے Python کا استعمال بھی کر سکتے ہیں:

pip install boto3

مرحلہ 3: اپنے ٹیبل پر DynamoDB اسٹریمز کو فعال کریں۔

آپ کو اپنے ٹیبل پر DynamoDB اسٹریمز کو فعال کرنے کی ضرورت ہے۔ اس مثال کے لیے، ہم Python کے لیے Boto3، AWS SDK استعمال کرتے ہیں۔ مندرجہ ذیل کمانڈ مدد کرے گا:

boto3 درآمد کریں۔

# DynamoDB سروس سے جڑیں۔
dynamodb = boto3.client( 'dynamodb' )

# 'my-table' ٹیبل پر DynamoDB اسٹریمز کو فعال کریں۔
جواب = dynamodb.update_table(
ٹیبل کا نام = 'مائی ٹیبل' ،
Stream Specification={
'اسٹریم فعال' : سچ،
'اسٹریم ویو ٹائپ' : 'NEW_AND_OLD_IMAGES'
}
)

# اس بات کو یقینی بنانے کے لیے جواب چیک کریں کہ سلسلہ کامیابی کے ساتھ فعال ہو گیا تھا۔
اگر جواب[ 'اسٹریم کی تفصیلات' ][ 'اسٹریم فعال' ]:
پرنٹ کریں( 'DynamoDB سلسلہ کامیابی سے فعال ہو گیا' )
دوسری:
پرنٹ کریں( 'DynamoDB سٹریم کو فعال کرنے میں خرابی' )

یہ کوڈ DynamoDB سٹریم کو 'mytable' ٹیبل پر قابل بناتا ہے جو کسی بھی تبدیلی کے ہوتے ہی آئٹمز کی نئی اور پرانی دونوں تصاویر کو اسٹریم کرتا ہے۔ آپ StreamViewType کے 'NEW_IMAGE' پر صرف نئی تصاویر کو اسٹریم کرنے کا انتخاب کر سکتے ہیں۔

خاص طور پر، اس کوڈ کو چلانے سے تھوڑی دیر کے بعد آپ کے ٹیبل پر اسٹریمز ہی فعال ہو سکتے ہیں۔ اس کے بجائے، عمل میں کچھ وقت لگ سکتا ہے۔ آپ اسٹریم کی حیثیت کو چیک کرنے کے لیے describe_table طریقہ استعمال کر سکتے ہیں۔

مرحلہ 4: لیمبڈا فنکشن بنائیں

اگلا مرحلہ ایک لیمبڈا فنکشن بنا رہا ہے جو DynamoDB سٹریم کو متحرک کرتا ہے۔ مندرجہ ذیل اقدامات میں مدد کرنی چاہئے:

  • AWS Lambda کنسول کھولیں اور 'فنکشن بنائیں' ٹیب پر کلک کریں۔ 'فنکشن بنائیں' صفحہ پر، 'شروع سے مصنف' کا انتخاب کریں اور اپنے فنکشن کے لیے ایک نام درج کریں۔ آپ کو اس مقام پر اپنا رن ٹائم بھی داخل کرنا ہوگا۔ ہم نے اس مثال کے لیے ازگر کا انتخاب کیا۔
  • اپنے لیمبڈا فنکشن کے لیے ضروری اجازتوں کے ساتھ ایک IAM رول بنانے کے لیے 'ایک ایگزیکیوشن رول کا انتخاب کریں یا تخلیق کریں' کے تحت، 'بنیادی لیمبڈا اجازتوں کے ساتھ ایک نیا رول بنائیں' کو منتخب کریں۔
  • اپنا لیمبڈا فنکشن بنانے کے لیے 'فنکشن بنائیں' بٹن پر کلک کریں۔
  • اپنے فنکشن کے لیے 'کنفیگریشن' صفحہ پر، نیچے 'ڈیزائنر' سیکشن تک سکرول کریں اور 'ٹرگر شامل کریں' ٹیب پر کلک کریں۔
  • ظاہر ہونے والے 'ٹرگر کنفیگریشن' باکس میں، 'ٹرگر' ڈراپ ڈاؤن مینو سے 'DynamoDB' کو منتخب کریں۔
  • DynamoDB ٹیبل کو منتخب کریں جسے آپ فنکشن کو ٹرگر کرنے کے لیے استعمال کرنا چاہتے ہیں۔ ایک بار مکمل ہونے کے بعد، منتخب کریں کہ آیا آپ چاہتے ہیں کہ فنکشن ٹیبل کی تمام اپ ڈیٹس پر ٹرگر ہو یا صرف مخصوص اپ ڈیٹس پر (جیسے مخصوص کالموں کی اپ ڈیٹس)۔
  • ٹرگر بنانے کے لیے 'شامل کریں' بٹن پر کلک کریں۔
  • 'فنکشن کوڈ' ایڈیٹر میں، اپنے فنکشن کے لیے Python کوڈ لکھیں۔ آپ ایونٹ آبجیکٹ کا استعمال کر سکتے ہیں جو آپ کے فنکشن کو دیا جاتا ہے اس ڈیٹا تک رسائی کے لیے جو فنکشن کو متحرک کرتا ہے۔
  • فنکشن کو محفوظ کرنے کے لیے 'محفوظ کریں' بٹن پر کلک کریں۔

لیمبڈا فنکشن بناتے وقت یہی ہوتا ہے! جب بھی مخصوص DynamoDB ٹیبل میں اپ ڈیٹ ہوتے ہیں تو آپ کا فنکشن اب متحرک ہوجاتا ہے۔

یہاں ایک سادہ Python فنکشن کی ایک مثال ہے جسے DynamoDB سٹریم متحرک کر سکتا ہے:

def lambda_handler (واقعہ، سیاق و سباق):

واقعہ میں ریکارڈ کے لیے[ 'ریکارڈز' ]:

پرنٹ (ریکارڈ[ 'dynamodb' ][ 'نئی تصویر' ])

یہ فنکشن ایونٹ آبجیکٹ میں ریکارڈز کے ذریعے دہرایا جاتا ہے اور DynamoDB ٹیبل میں آئٹم کی نئی تصویر پرنٹ کرتا ہے جو فنکشن کو متحرک کرتا ہے۔

مرحلہ 5: لیمبڈا فنکشن کی جانچ کریں۔

لیمبڈا فنکشن کو جانچنے کے لیے جسے ڈائنامو ڈی بی سٹریم متحرک کر سکتا ہے، آپ استعمال کر سکتے ہیں۔ boto3 DynamoDB API اور تک رسائی کے لیے لائبریری پکارنا کا طریقہ لیمبڈا فنکشن کو متحرک کرنے کے لیے کلائنٹ۔

اسے کیسے کرنا ہے اس کی ایک مثال یہ ہے:

boto3 درآمد کریں۔

# DynamoDB سروس سے جڑیں۔
dynamodb = boto3.client( 'dynamodb' )

# لیمبڈا سروس سے جڑیں۔
lambda_client = boto3.client( 'لیمبڈا' )

# 'مائی ٹیبل' ٹیبل میں ایک آئٹم داخل کریں۔
جواب = dynamodb.put_item(
ٹیبل کا نام = 'مائی ٹیبل' ،
آئٹم={
'id' :{ 'این' : '123'
'نام' :{ 'S' : 'جوئل آسٹن}،
'
عمر ':{' ن ':' 3. 4 '}
}
)

# اس بات کو یقینی بنانے کے لیے جواب چیک کریں کہ آئٹم کامیابی کے ساتھ داخل کیا گیا تھا۔
اگر جواب['
رسپانس میٹا ڈیٹا '][' HTTPStatusCode '] == 200:
پرنٹ ('آئٹم کامیابی سے داخل کیا گیا')
دوسری:
پرنٹ ('آئٹم داخل کرنے میں خرابی')

# لیمبڈا فنکشن کو ٹرگر کریں جو سبسکرائب کیا گیا ہے '
میری میز ' ٹیبل
جواب = lambda_client.invoke(
فنکشن کا نام ='
میرا فنکشن
Invocation Type='
تقریب
لاگ ٹائپ ='
دم
پے لوڈ='
{ 'ریکارڈز' :[{ 'dynamodb' :{ 'نئی تصویر' :{ 'id' :{ 'این' : '123' 'نام' :{ 'S' : 'جوئل آسٹن' 'عمر' :{ 'این' : '3. 4' }}}}]} '
)

# اس بات کو یقینی بنانے کے لیے جواب کو چیک کریں کہ فنکشن کامیابی سے ٹرگر ہوا تھا۔
اگر جواب['
اسٹیٹس کوڈ '] == 202:
پرنٹ ('لیمبڈا فنکشن کامیابی سے متحرک ہوا')
دوسری:
پرنٹ ('لیمبڈا فنکشن کو متحرک کرنے میں خرابی')

یہ کوڈ پہلے میں ایک آئٹم داخل کرتا ہے۔ mytable ٹیبل اور پھر ٹرگر کرتا ہے۔ میرا فنکشن لیمبڈا فنکشن کا استعمال کرتے ہوئے فنکشن کو نمونہ ایونٹ پے لوڈ بھیج کر پکارنا طریقہ ایونٹ پے لوڈ ایک DynamoDB سٹریم ایونٹ کی نقل کرتا ہے جس میں اس آئٹم کی نئی تصویر شامل ہوتی ہے جو ابھی داخل کی گئی تھی۔

اس کے بعد آپ لیمبڈا فنکشن کے لاگز کو چیک کر سکتے ہیں کہ آیا اس نے ایونٹ کے ڈیٹا کو کامیابی کے ساتھ متحرک کیا اور اس پر کارروائی کی۔

نتیجہ

یہ نوٹ کرنا ضروری ہے کہ آپ ایک ہی سٹریم ریکارڈ کے لیے متعدد بار درخواست کر سکتے ہیں کہ ایک DynamoDB سٹریم لیمبڈا فنکشن کو متحرک کر سکتا ہے۔ اس کے پیچھے بنیادی وجہ یہ ہے کہ سٹریم ریکارڈز آخر کار ایک جیسے ہوتے ہیں، اور لیمبڈا فنکشن کے ذریعے ایک ہی ریکارڈ کو متعدد بار پروسیس کرنا ممکن ہے۔ اس کیس کو صحیح طریقے سے ہینڈل کرنے کے لیے اپنے لیمبڈا فنکشن کو ڈیزائن کرنا بہت ضروری ہے۔